-1

我正在开发一种文件系统驱动程序。Windows 对我的文件系统发出的所有读取请求都由驱动程序实现。

我想区分“正常”读取请求和那些只想从文件中获取元数据的请求。(Windows 读取文件的第一个 4K,然后停止读取)。

Windows 是否以某种方式标记此元数据读取?为了以不同的方式处理这两种操作,这将非常有用。

在典型的 CreateFile 调用中,我们有 AccessMode、ShareMode、CreationDisposition 和 FlagsAndAttributes 参数(为 DWORD ),我不确定是否可以提取所请求操作的一些线索。

谢谢阅读 :)

4

3 回答 3

0

执行文件扫描以提取元数据的不是 Windows,而是 Windows 资源管理器。此外,您还将面对读取以创建缩略图。

将驱动器作为远程/网络报告给 Windows 将使资源管理器读取更少的信息并减少文件系统的负载,但不幸的是似乎没有办法完全阻止这种读取。

于 2010-12-13T13:12:50.977 回答
0

我建议您获取 SysInternals 文件监控工具。它捕获每个调用的堆栈跟踪,并且由于它理解 PDB 甚至可以向您显示函数名称。这应该可以让你弄清楚这个特定调用的许多细节。

于 2009-10-30T10:40:04.173 回答
0

重读时,问题似乎是在寻找错误的优化位置。为什么不将前 4KB 的每个请求都视为对元数据的请求?这种假设几乎没有危害。

如果您在实际只需要 4KB 的情况下执行 100 MB 的实际 I/O,则相反的假设将是有害的。但是,如果您需要 100 MB,则对前 4 KB 的小优化最多会导致一次性的小问题,从而导致固有的冗长操作。

于 2009-11-02T15:35:17.510 回答