Windows资源监视器显示(除其他外)磁盘上的哪些文件当前由哪些进程访问。它实时地做到了。 如何吗
我知道它可能使用ETW并且我可以使用像xperf这样的工具生成跟踪。但是如何在不必启动,停止和解析跟踪文件的情况下获取实时信息?
我需要以编程方式访问数据,即从C#或C ++。
答案 0 :(得分:4)
w OpenTrace / ProcessTrace / StopTrace就可以实时获取数据。它们可以在Win2000上运行,但您需要在回调函数中解析原始数据。要将原始数据转换为人类可读的文本,我们需要TMF / MOF。不确定它们是否公开。
对于Vista / Win7,有一组新的TDH(跟踪数据助手)API(例如:TdhFormatProperty)。 向下滚动上面的一些链接,你可以看到它们。 TDH的好处是它们可以为您解析数据(但仍然需要为TDH提供TMF / MOF)。
我尝试使用Open / Process / StopTrace API将自己的.etl写入可读的.txt程序(因为我需要支持XP)。我发现它很难。 TMF文件不难解释,因为它是纯文本。困难的是破译50多种不同的未记录的类似格式规范的内部结构。所以我最终放弃了,并坚持使用Microsoft WDK中提供的强大的tracefmt.exe。