我使用哪些Windows内核API从驱动程序获取路径的基本文件名? (我假设我不必搜索字符串中的最后一个'\')
例如从bar.txt
c:\foo\bar.txt
答案 0 :(得分: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.
}
}