【问题标题】:How to get the count of all file IO system calls in Windows如何获取 Windows 中所有文件 IO 系统调用的计数
【发布时间】:2011-05-30 17:48:55
【问题描述】:

如何获取在基于 Windows 的操作系统中为所有进程生成的所有文件 IO 调用的数量(以使其至少在 XP 上运行)?类似于 Process Monitor 的东西,但可以从 C# 以编程方式访问(可以通过 C++ 或 C)

我不需要知道细节,只是每秒所有调用的计数,一旦获得数字,我会(每秒)将它记录到一个文件中,例如这个

50395
39581
59205
...

更新
some APIs 可用,但我不太确定是否可以将它们用于整个操作系统

【问题讨论】:

    标签: c# windows file-io system-calls sysinternals


    【解决方案1】:

    您正在寻找的术语是“实时 ETW 消费者”——尽管这不适用于 XP。在 XP 上,你可以得到这些数据,但不是实时的,只有在记录之后解码日志。

    【讨论】:

    • tnx 的答案。 ProcMon 在 XP 上是如何做到的?
    • ProcMon 在内核模式下通过极其谨慎的 hacky 方法做到这一点,只有像 Mark 这样的人才能做到。对于像你我这样的凡人来说,这不是一个选择:)
    • 是的,这看起来像是不可能完成的任务 :)
    • 如果您只想记录它,那么非实时 ETW 就可以正常工作 - 您只需对跟踪进行后处理,您就会得到您的文件。您可能还想查看 Perf Counters,也可能会为您提供此信息。
    猜你喜欢
    • 2018-07-03
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 2017-04-10
    • 2011-05-19
    相关资源
    最近更新 更多