Windows 资源监视器使用哪个 API?

Hel*_*ein 5 windows etw resource-monitor

Windows 资源监视器显示(除其他外)磁盘上的哪些文件当前由哪些进程访问。它实时执行此操作。如何?

我知道它可能使用 ETW,并且我可以使用 xperf 之类的工具生成跟踪。但是如何在无需启动、停止和解析跟踪文件的情况下获取实时信息呢?

我需要以编程方式访问数据,即从 C# 或 C++。

Pet*_*ter 5

w OpenTrace / ProcessTrace / StopTrace可以实时获取数据,只要知道提供者的 GUID。它们可以在 Win2000 上运行,但您需要在回调函数中解析原始数据。要将原始数据转换为人类可读的文本,我们需要 TMF/MOF。不确定它们是否公开。

对于 Vista/Win7,有一组新的 TDH(跟踪数据助手)API(例如:TdhFormatProperty)。向下滚动一点上面的链接,你可以看到它们。TDH 的好处是它们可以为您解析数据(尽管仍然需要向 TDH 提供 TMF/MOF)。

我尝试使用 Open/Process/StopTrace API 将我自己的 .etl 写入可读的 .txt 程序(因为我需要支持 XP)。我发现这很困难。TMF 文件不难解释,因为它是纯文本。困难的是破译 50 多种不同的未记录的类似 prinf 格式规范的内部结构。所以最后还是放弃了,坚持使用微软WDK提供的强大的tracefmt.exe