如何在微过滤器中的 IRP_Create 上获取复制文件的源路径

Posted

技术标签:

【中文标题】如何在微过滤器中的 IRP_Create 上获取复制文件的源路径【英文标题】:How to get the source path of the copied file on IRP_Create in minifilter 【发布时间】:2018-11-15 14:14:02 【问题描述】:

我正在尝试创建一个微过滤器来监视所有文件操作。在将文件从一个位置复制到另一个位置时,我得到了一个文件名。但我需要找到源路径和目标路径。 以下代码块用于获取文件名。

FLT_PREOP_CALLBACK_STATUS MiniPreCreate(PFLT_CALLBACK_DATA Data,PCFLT_RELATED_OBJECTS FltObjects , PVOID * CompletionContext)
PFLT_FILE_NAME_INFORMATION FileNameInfos;
NTSTATUS status;
WCHAR Name[200] = 0;
status=FltGetFileNameInformation(Data,FLT_FILE_NAME_NORMALIZED|FLT_FILE_NAME_QUERY_DEFAULT,&FileNameInfos);
if(NT_SUCCESS(status))

    status = FltParseFileNameInformation(FileNameInfos);
    if(NT_SUCCESS(status))
    
        if(FileNameInfos->Name.MaximumLength<260)
        
            RtlCopyMemory(Name,FileNameInfos->Name.Buffer,FileNameInfos->Name.MaximumLength);
            DbgPrint("Minifilter ::File Name %ws  \n",Name);

        
    
    FltReleaseFileNameInformation(FileNameInfos);

return FLT_PREOP_SUCCESS_WITH_CALLBACK;                                     
 

【问题讨论】:

【参考方案1】:

CopyFile 不是文件系统原语函数。您将在过滤器中看到多个用于打开源和目标的 IRP_MJ_CREATE 调用,以及用于复制数据的 IRP_MJ_READ 和 IRP_MJ_WRITE。即使是简单的操作,您也可能会看到比预期更多的这些内容。

【讨论】:

以上是关于如何在微过滤器中的 IRP_Create 上获取复制文件的源路径的主要内容,如果未能解决你的问题,请参考以下文章

Hystrix断路器在微服务网关中的应用(Spring Cloud Gateway)

多个复选标记附件在 iOS7 中无法正常工作

认证鉴权与API权限控制在微服务架构中的设计与实现

如何在android中的简单列表视图上使用startsWith应用搜索过滤器

ExtJs分组中的clearfilter后如何获取特定组的所有记录

如何从过滤器中获取 SessionScoped CDI bean?