我用什么Windows内核API来获取驱动程序path的基本文件名? (我假设我不必searchstring的最后'\')
例如从c:\foo\bar.txt
获取c:\foo\bar.txt
您可以考虑使用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. } }