首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Minifilter检查硬盘上创建的新文件?

Minifilter检查硬盘上创建的新文件?
EN

Stack Overflow用户
提问于 2015-02-05 04:38:43
回答 1查看 1.5K关注 0票数 0

我正在开发一种微型机。我检查硬盘(即D:)上的新文件创建(通过拖放)。我的工作如下:

代码语言:javascript
复制
isNewFile = FALSE;
if (Data
    && Data->Iopb
    && (Data->Iopb->MajorFunction == IRP_MJ_CREATE))
{
   // Get create disposition
   createDisposition = (Data->Iopb->Parameters.Create.Options >> 24) & 0x000000FF;

   // Check if new file is creating or not
   isNewFile = ((FILE_SUPERSEDE == createDisposition)
                || (FILE_CREATE == createDisposition)
                || (FILE_OPEN_IF == createDisposition)
                || (FILE_OVERWRITE == createDisposition)
                || (FILE_OVERWRITE_IF == createDisposition));

   // Write log
   PT_DBG_PRINT( PTDBG_TEST_STATUS,
                    ("isNewFile %d--createDisposition: <%08x>\n",
                                    isNewFile,
                                    createDisposition));
}

create选项的值

代码语言:javascript
复制
//
// Define the create disposition values at wdm.h
//
#define FILE_SUPERSEDE                  0x00000000
#define FILE_OPEN                       0x00000001
#define FILE_CREATE                     0x00000002
#define FILE_OPEN_IF                    0x00000003
#define FILE_OVERWRITE                  0x00000004
#define FILE_OVERWRITE_IF               0x00000005
#define FILE_MAXIMUM_DISPOSITION        0x00000005
  1. 当我从桌面拖放文件时,isNewFile标志为真
代码语言:javascript
复制
- isNewFile 1--createDisposition: <0x00000002>

  1. 当我从Windows拖放文件时,isNewFile总是假的。
代码语言:javascript
复制
- isNewFile 0--createDisposition: <0x00000001>

,有什么问题吗?

谢谢大家。

EN

回答 1

Stack Overflow用户

发布于 2015-02-28 13:56:37

关于拖放,如果这种情况发生在相同的卷内,它会以重命名的形式通过FltSetInformationFile。但是,如果卷是不同的,那么它将复制创建的新文件@目标文件内容。您可以使用像普鲁蒙这样的工具检查这种行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28336334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档