通常,当应用程序写入磁盘上的某个文件时,文件修改后的时间戳会发生变化。
有时,在我的情况下,它是一个用ProvideX(我相信的Business Basic衍生产品)编写的应用程序,在编写后,修改后的时间戳在写入后不会改变。像MyTrigger这样的程序也不会接受写操作,但是Sysinternals ProcessMonitor会记录磁盘活动。
很明显,有不同的方法要求Windows执行写操作,然后可以用各种不同的方式挂钩或记录请求。
我需要能够挂钩来自ProvideX应用程序的写操作。关于窗口写入磁盘的不同方式的任何指针,以及可用于它们的挂钩类型将非常感激。
由于
答案 0 :(得分:1)
用户模式进程可以使用WriteFile API函数或使用MMF,内存映射文件API(CreateFileMapping / MapViewOfFile / Write to memory block)写入文件。也许您的应用程序采用MMF方式。 MMF写入文件与WriteFile API完全不同,但它们都导致相同的端点 - IRP发送到文件系统驱动程序。文件系统筛选器驱动程序(例如Sysinternals使用的驱动程序)可以跟踪该IRP级别的写入请求。在技术上可以区分由MMF和WriteFile发起的写操作,因为发送了不同的IRP(涉及高速缓存和非高速缓存的写入)。 Windows中的目录更改监视功能似乎只跟踪一种IRP类型,这会导致MyTrigger错过更改。