我要使用哪些Windows内核API从驱动程序获取路径的基本文件名? (我假设我不必在字符串中搜索最后一个'\')
例如从bar.txt
获取c:\foo\bar.txt
最佳答案
您可以考虑使用FsRtlDissectName构造一个循环,直到剩下的path参数为空为止。
这样的事情可能会做您想要的(尽管您将需要处理诸如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.
}
}
关于windows - 获取文件基本名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9253371/