【发布时间】: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;
}
【问题讨论】:
标签: c++ c windows filesystems minifilter