2009-10-28 153 views
6

我想顯示進程列表(Windows,C++)以及它們以KB /秒爲單位從磁盤讀取和寫入的數量。以編程方式獲取Windows上的進程磁盤io統計信息?

Windows 7的資源監視器有能力,所以我應該能夠做到這一點。

但是我無法找到相關的API調用或在perfmon計數器中找到任何東西。任何人都可以指出我的方向嗎?

+0

我認爲事件追蹤(ETW)是唯一可行的方法......但是體面的ETW示例非常稀缺。 – dutchmega 2009-10-30 17:58:24

回答

11

您可以撥打GetProcessIoCounters以獲得每個進程的整體磁盤I/O數據 - 您需要跟蹤增量並自行轉換爲基於時間的速率。

該API會告訴您I/O操作的總數以及總字節數。

+0

如果這樣做不能讓您滿意,那麼您可能需要四處挖掘並編寫WMI查詢。 – opello 2009-10-28 20:53:37

+4

不GetProcessIoCounters()給你所有的IO操作,包括網絡? – dutchmega 2009-10-29 11:32:28

+0

它是一個驅動程序io的功能? – 2009-11-05 02:22:11

3

WMI可以做到這一點,只要您定期對其進行快照以獲得某些「最近」時間段的差異統計信息。 This post提供了一種獨特的混合解決方案,VBScript從WMI和Perl中讀取信息,並持續在Windows控制檯中顯示信息。儘管有奇怪的語言混合,但我認爲它是一個很好的例子,說明如何獲得所需的信息(當然,應該很有可能用C++重新編寫它的所有信息)。

+3

再次,總的所有IO操作(與GetProcessIoCounters()相同) – dutchmega 2009-11-05 12:07:21

相關問題