2012-02-12 60 views
2

我使用哪些Windows內核API從驅動程序獲取路徑的基本文件名? (我假設我沒有尋找最後的字符串「\」)獲取文件基本名稱

如獲得bar.txtc:\foo\bar.txt

回答

2

你可能會考慮使用構建直到FsRtlDissectName其餘的路徑參數爲空循環。

像這樣的事情可能會做你想做的(雖然你需要處理的事情像ADS流的名稱,以及添加適當的錯誤檢查):

void FetchFileName(IN PUNICODE_STRING pSourceString, OUT PUNICODE_STRING pFileName) 
{ 
    UNICODE_STRING current = *pSourceString; // structure copy. 
    UNICODE_STRING remaining; 
    for(;;) 
    { 
     // Fetch the next path component. 
     FsRtlDissectName(current, pFileName, &remaining); 
     if(remaining.Length == 0) 
     { 
      // Nothing left to parse. pFilename will 
      // contain the last filename found. 
      break; 
     } 

     // Advance down the string. 
     current = remaining;    // structure copy. 
    } 
} 
+0

感謝。看起來正是我需要的 – 2012-02-12 23:46:07