2009-10-28 15 views
6

Chciałbym wyświetlić listę procesów (Windows, C++) oraz to, ile czytają i zapisują z dysku w KB/s.Programowe pobieranie statystyk dysku i procesu w systemie Windows?

Monitor zasobów systemu Windows 7 ma taką możliwość, że powinienem móc zrobić to samo.

Jednak nie udało mi się znaleźć odpowiedniego wywołania API lub znaleźć niczego w licznikach perfmon. Czy ktoś może wskazać mi kierunek?

+0

Wydaje mi się, że śledzenie zdarzeń (ETW) jest jedyną drogą do zrobienia ... Ale przyzwoite przykłady ETW są bardzo rzadkie .. – dutchmega

Odpowiedz

11

Możesz zadzwonić pod numer GetProcessIoCounters, aby uzyskać ogólne dane na temat dysków we/wy dla każdego procesu - musisz śledzić delty i konwersję na stopę czasową.

Ten interfejs API podaje całkowitą liczbę operacji we/wy oraz całkowitą liczbę bajtów.

+0

Jeśli to Cię nie zawiedzie, być może będziesz musiał przekopać się i napisać zapytanie WMI. – opello

+4

Czy GetProcessIoCounters() nie udostępnia wszystkich operacji związanych z połączeniem, w tym sieci? – dutchmega

+0

czy to jest funkcja sterownika? –

3

WMI może to zrobić, o ile okresowo robisz migawkę, aby uzyskać statystyki różnicowe dla niektórych "ostatnich" kawałków czasu. This post przedstawia szczególnie mieszane rozwiązanie, z VBScript odczytując informacje z WMI i Perl stale prezentując informacje w konsoli systemu Windows. Pomimo dziwnej mieszanki językowej, uważam, że jest to dobry przykład tego, jak uzyskać informacje, których potrzebujesz (oczywiście powinno być całkiem możliwe przekodowanie tego wszystkiego w C++, oczywiście).

+3

Ponownie, suma wszystkich operacji IO (tak samo jak GetProcessIoCounters()) – dutchmega

Powiązane problemy