關於由HANDLE獲取檔名的問題

2021-06-16 00:31:00 字數 1598 閱讀 3922

問題:關於由handle獲取檔名的問題

pfile_name_information   pfni;    

pfni=(pfile_name_information)exallocatepool(pagedpool,   sizeof(file_name_information)   +   255   *   sizeof(wchar)   );  

memset(pfni,0,sizeof(file_name_information)   +   255   *   sizeof(wchar));  

status=zwqueryinformationfile(p1,&iostatus,pfni,sizeof(object_name_information),filenameinformation);  

我是這樣獲取檔名的,問題是無法獲取中文的檔名.  

回答1:

status=zwqueryinformationfile(p1,&iostatus,pfni,sizeof(object_name_information),filenameinformation);[/quote]  

呼叫好像有問題,wdk裡面是這樣定義:  

ntstatus    

zwqueryinformationfile(  

in   handle     filehandle,  

out   pio_status_block     iostatusblock,  

out   pvoid     fileinformation,  

in   ulong     length,  

in   file_information_class     fileinformationclass  

);  

length:   the   size,   in   bytes,   of   the   buffer   pointed   to   by   fileinformation.    

回答2:

寫錯了應該是  

status=zwqueryinformationfile(p1,&iostatus,pfni,sizeof(file_name_information)   +   255   *   sizeof(wchar),filenameinformation);  

英文的檔名顯示無問題,但是中午就是"??.***"這樣,沒有辦法嗎

回答3:

okay,也就是說檔名是取出來了,但是顯示不出來。你在**顯示?

回答4:

這樣:  

dbgprint("%s/n",pfni->filename);//

回答5:

暈,這樣顯然不能顯示中文阿...中文不是這麼簡單就能顯示的,呵呵

回答6:

搞定了,

rtlinitunicodestring(&un,pfni->filename);      

rtlunicodestringtoansistring(&an,&un,true);

dbgprint("%s   %d/n",an.buffer,an.length);  

把wchar轉換成char就可以顯示了

獲取檔名的方式

一 directory類 按照萬用字元搜尋目錄下的檔案 string directory.getfiles string path,string searchpattern,searchoption searchoption path 目錄 searchpattern 萬用字元 searchopti...

關於asp獲取當前檔名的問題

request.servervariables url 返回伺服器位址 request.servervariables path info 客戶端提供的路徑資訊 與應用程式元資料庫路徑相應的物理路徑 request.servervariables path translated 通過由虛擬至物理的對...

CFileDialog獲取檔名長度

getfilepath獲取的全路徑名正確,但是當遇到長檔名時,getfilename獲取不正確,找了半天才知道,原來當遇到長檔名時,用getfilename卻只能獲取前63個字元 第64個位空終止符 所以若輸入的檔名可能超過64個字元時,千萬不要用getfilename,可用getfilepath獲...