MiniFilter - 如何仅检测用户启动的i / o活动?

时间:2016-12-24 19:38:38

标签: windows filesystems driver minifilter

我只需要检测用户启动的i / o活动。 当我说用户我实际上是指用户(双击打开文件,输入, 等)。

数据 - > RequestorMode == 1,仅打印用户模式,我需要用户启动的操作。

因此,我需要知道如何仅打印用户自己进行的交易。 (打开文件, 双击,输入等......如前所述)

有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

  

数据 - > RequestorMode == 1,仅打印用户模式

所以

if (Data->RequestorMode == UserMode) DbgPrint("%x\n", Data->RequestorMode);

仅打印UserMode

或者我说得更好 - if UserMode print UserMode - 仅打印UserMode ..

答案 1 :(得分:0)

双击某个文件时,您要求Explorer代表您执行操作。资源管理器通过检查文件的扩展名,查找与该扩展名相关联的应用程序并启动它以及打开文件的说明来实现此目的。

Windows加载程序负责将应用程序加载到内存并将其设置为运行。为此,它必须至少打开可执行文件,通常是一个或多个DLL。应用程序启动后,它还可能会在打开用户要求的文件之前打开一些配置文件。

所有这些打开操作都在相同的上下文中执行。内核知道哪个进程启动了文件打开,但它无法判断它是由Windows加载程序还是由应用程序本身打开,或者用于区分配置文件和用户双击的文件。因此,您无法从文件系统筛选器驱动程序检测用户启动的文件打开操作。

也许可以使用Windows资源管理器扩展,尽管这只适用于使用资源管理器或其中一个标准对话框打开的文件,即大多数但不是所有应用程序。