Minifilter驱动程序Windows 10包含1809和1903及更高版本之间的差异(在创建文件时调用FileRenameInformation)

问题描述 投票:1回答:1

我有一个微型过滤器驱动程序,该驱动程序仅监视重命名和已删除文件,在Windows 10 1903生成之前,它可以正常工作。按照下面的代码。

现在在Windows 10 1903和1909上具有经过测试的许多不同KB,每次创建文件时,它都会调用FileRenameInformation。有什么我可以阻止它被调用或在请求中标识它正在创建文件而不是重命名的东西。

我的测试用例是右键单击,然后将文件(1MB)复制并粘贴到受这些更改监视的目录中。

我也注意到(包括1903年以前)FileRenameInformation被多次调用以重命名文件,这正常吗?

FLT_PREOP_CALLBACK_STATUS PreOperationCallback(_Inout_ 
PFLT_CALLBACK_DATA Data,
_In_ PCFLT_RELATED_OBJECTS FltObjects, 
_Flt_CompletionContext_Outptr_ PVOID* CompletionContext)
{
  PFILE_RENAME_INFORMATION renameInfo;
  //WCHAR buf[4096] = { 0 };

  /* IRP-based I/O operation? */
  if (FLT_IS_IRP_OPERATION(Data)) {
  /* Open file? */
  if (Data->Iopb->MajorFunction == IRP_MJ_CREATE) {
    /* Open file for writing/appending? */
    if (Data->Iopb->Parameters.Create.SecurityContext->DesiredAccess &
    (FILE_WRITE_DATA | FILE_APPEND_DATA)) {
     return TRUE;
    }
  } else if (Data->Iopb->MajorFunction == IRP_MJ_SET_INFORMATION) {

   switch (Data->Iopb->Parameters.SetFileInformation.FileInformationClass) {

     case FileDispositionInformation:

        // deleting a file we need to action
        if (((FILE_DISPOSITION_INFORMATION*) Data->Iopb->Parameters.SetFileInformation.InfoBuffer)->DeleteFile) {
          return process_irp(Data, FltObjects, CompletionContext, FALSE, FALSE);
        }
        break;

     case FileEndOfFileInformation:

     case FileRenameInformation:

       DbgPrint("Original file - '%wZ'", name_info->Name);
       renameInfo = Data->Iopb->Parameters.SetFileInformation.InfoBuffer;
       DbgPrint("Rename File info - '%ws'", renameInfo->FileName);

       // Process the request according to our needs e.g copy the file
       return process_irp(Data, FltObjects, CompletionContext, FALSE, TRUE);
     }
   }
 }

  return FLT_PREOP_SUCCESS_NO_CALLBACK;
}
c windows driver minifilter
1个回答
0
投票

在switch语句上中断-从更改代码

case FileEndOfFileInformation:
case FileRenameInformation:

to

case FileEndOfFileInformation:

   // fix as per RbMm comment on SO
   break;
case FileRenameInformation:
© www.soinside.com 2019 - 2024. All rights reserved.