我只需要检测用户启动的i/o活动。当我说用户时,我实际上是指用户(双击打开文件、输入等)。
数据->RequestorMode == 1,只打印用户模式,我需要用户启动的操作。
因此,我需要知道如何只打印由用户自己完成的事务。(打开文件,双击,输入等.(如上文所述)
有什么建议吗?
谢谢!
发布于 2016-12-25 20:43:52
双击文件时,请资源管理器代表您采取行动.资源管理器通过检查文件的扩展名,查找与该扩展名关联的应用程序,并使用打开文件的指令启动它。
Windows加载程序负责将应用程序加载到内存中并将其设置为运行。为了做到这一点,它必须至少打开可执行文件,并且通常打开一个或多个DLL。一旦应用程序启动,它还可能在打开用户请求的文件之前打开一些配置文件。
所有这些开放操作都是在相同的上下文中执行的。内核知道是哪个进程启动了打开的文件,但是它无法判断它是由Windows加载程序打开的,还是由应用程序本身打开的,或者无法区分配置文件和用户双击的文件。因此,您将无法从文件系统筛选驱动程序中检测到用户启动的文件打开操作。
可以使用Windows Explorer扩展,尽管这只适用于使用Explorer打开的文件或标准对话框之一,即大多数应用程序,而不是所有应用程序。
发布于 2016-12-24 23:45:03
数据->RequestorMode == 1,只打印用户模式
所以
if (Data->RequestorMode == UserMode) DbgPrint("%x\n", Data->RequestorMode);
只打印UserMode
或者我说更好- if UserMode print UserMode -只打印UserMode ..。
https://stackoverflow.com/questions/41316336
复制相似问题