【问题标题】:Different ways to ask Windows to write data to disk要求 Windows 将数据写入磁盘的不同方法
【发布时间】:2011-04-03 08:39:09
【问题描述】:

通常,当应用程序写入磁盘上的其中一个文件时,文件修改时间戳会更改。

有时,在我的例子中,它是一个用 ProvideX(我相信是 Business Basic 衍生产品)编写的应用程序,写入后修改的时间戳不会改变。像 MyTrigger 这样的程序也不会接收写入操作,但 Sysinternals ProcessMonitor 会记录磁盘活动。

很明显,有不同的方法可以要求窗口执行写操作,然后请求也可以被钩住或以各种不同的方式记录。

我需要能够挂钩来自 ProvideX 应用程序的写操作。任何有关 windows 写入磁盘的不同方式的指针,以及可供它们使用的钩子类型,将不胜感激。

谢谢

【问题讨论】:

  • 我没有资格给出完整的答案,因此发表了评论,但我知道您可以编写和附加文件,此时修改日期已更改,或者您可以创建一个临时文件文件并将其重命名(或复制)为您正在监视的名称,在这种情况下,它直到最后才会更新。

标签: windows operating-system hook disk


【解决方案1】:

用户模式进程可以使用 WriteFile API 函数或使用 MMF、内存映射文件 API(CreateFileMapping/MapViewOfFile/Write to memory block)写入文件。也许您的应用程序采用 MMF 方式。 MMF 写入文件的方式与 WriteFile API 非常不同,但它们都指向相同的端点——IRP 发送到文件系统驱动程序。文件系统过滤器驱动程序(例如 Sysinternals 使用的驱动程序)可以跟踪该 IRP 级别的写入请求。技术上可以区分由 MMF 和 WriteFile 发起的写入操作,因为发送了不同的 IRP(涉及缓存和非缓存写入)。 Windows 中的目录更改监控功能似乎只跟踪一种 IRP 类型,这导致 MyTrigger 错过了更改。

【讨论】:

猜你喜欢
  • 2017-10-12
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 2011-12-24
  • 2014-04-18
  • 2011-12-13
相关资源
最近更新 更多