【问题标题】:Get file path in minifilter driver获取微过滤驱动中的文件路径
【发布时间】:2015-04-22 11:31:46
【问题描述】:

我使用了下面的代码,但它给了我文件路径的结果。

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:\用户\文件名.ext

我怎样才能得到这个请帮忙。

【问题讨论】:

  • 可能是更好的方法,但 FltParseFileNameInformation() 获取卷路径,然后从每个 getlogicaldrivestrings() 调用 querydosdevice() 的结果列表中查找 - 记住路径可能没有相应的物理驱动器号

标签: c winapi driver wdk minifilter


【解决方案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);

【讨论】:

    【解决方案2】:

    这是最好的解决方案,但它再次不使用驱动器号。而是使用卷 GUID

    更多: https://www.osr.com/nt-insider/2014-issue2/drive-letter-alternatives/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    • 2017-09-23
    • 2020-05-04
    • 2012-03-03
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多