我已经使用了下面的代码,但是它给了我文件路径的结果。
status = FltGetFileNameInformation(Data,
FLT_FILE_NAME_OPENED |
FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP,
&nameInfo);
DbgPrint("\n Filename : %wZ",&nameInfo->Name);
\Device\HarddiskVolume1\Users\filename.ext
但是我想要文件路径
c:\Users\Filename.ext
我怎样才能得到这个请帮助。
答案 0 :(得分:1)
NameLength = (USHORT)dosName.MaximumLength + Data->Iopb->TargetFileObject->FileName.MaximumLength + 2;
NameBuffer = ExAllocatePoolWithTag(PagedPool,NameLength,NC_MAPPING_TAG);
NameString.Length = 0;
NameString.MaximumLength = NameLength;
NameString.Buffer = NameBuffer;
RtlCopyUnicodeString(&NameString, &dosName);
RtlAppendUnicodeStringToString(&NameString, &Data->Iopb->TargetFileObject->FileName);
答案 1 :(得分:0)
这是最好的解决方案,但它不再使用Drive letter。但是使用Volume GUID
更多: https://www.osr.com/nt-insider/2014-issue2/drive-letter-alternatives/