要求Windows将数据写入磁盘的不同方法

问题描述:

通常,当应用程序将其中一个文件写入磁盘时,文件修改的时间戳会更改。要求Windows将数据写入磁盘的不同方法

有时候,在我的情况下,它是一个用ProvideX(我相信是商业基础衍生物)写的应用程序,修改后的时间戳在写入后不会改变。像MyTrigger这样的程序也不会在写入操作中出现,但Sysinternals ProcessMonitor会记录磁盘活动。

很明显,有不同的方法可以让windows执行写操作,然后可以用各种不同的方式来挂接或记录请求。

我需要能够挂接来自ProvideX应用程序的写入操作。任何指向窗口写入磁盘的不同方式的指针,以及可用于它们的钩子类型都将不胜感激。

由于

+0

我没有资格给出一个完整的答案,因此评论,但我知道你可以编写和追加一个文件,在这一点修改日期改变,或者你可以创建一个临时文件并重命名它(或将其复制到)您正在监控的名称,在这种情况下,它将不会更新,直到结束。 – 2010-08-24 18:50:28

用户模式进程可以写入文件或者使用WriteFile的API函数或使用MMF,存储器映射文件API(的CreateFileMapping/MapViewOfFile /写入存储器块)。也许你的应用程序采用MMF方式。 MMF写入文件的方式与WriteFile API非常不同,但它们都导致相同的端点 - 将IRP发送到文件系统驱动程序。文件系统过滤器驱动程序(如Sysinternals使用的驱动程序)可以跟踪该IRP级别的写入请求。在技​​术上可以区分由MMF和WriteFile发起的写操作,因为发送了不同的IRP(涉及缓存和非缓存写入)。看来,Windows中的目录更改监视功能只跟踪一种IRP类型,这会导致MyTrigger错过更改。

+0

谢谢。我将不得不谷歌所有这些条款,然后尝试它们,然后才能确定这是我需要的,但它看起来正确! – 2010-08-25 15:07:28

+0

[内存映射文件I/O可能会或可能不会更新文件修改时间戳](http://blogs.msdn.com/b/elyasse/archive/2010/04/18/memory-mapped-file-io-may -or-may-not-update-the-file-modified-timestamp.aspx)不是说这回答了问题,但它可能是问题的原因。 – 2011-03-30 12:00:26