Какой API использует Windows Resource Monitor? - PullRequest
4 голосов
/ 24 ноября 2011

Windows Resource Monitor отображает (среди прочего), какие файлы на диске в настоящее время доступны для каких процессов.И это происходит в реальном времени. Как?

Я знаю, что он, вероятно, использует ETW и что я могу генерировать трассировки с помощью таких инструментов, как xperf.Но как получить информацию в реальном времени без необходимости запускать, останавливать и анализировать файл трассировки?

Мне нужен программный доступ к данным, то есть из C # или C ++.

1 Ответ

4 голосов
/ 29 ноября 2011

w OpenTrace / ProcessTrace / StopTrace может получать данные в режиме реального времени, если вы знаете GUID поставщика.Они могут работать на Win2000, но вам нужно проанализировать необработанные данные в ваших функциях обратного вызова.Чтобы преобразовать необработанные данные в читабельный текст, нам нужен TMF / MOF.Не уверен, что они общедоступны.

Для Vista / Win7 существует новый набор API-интерфейсов TDH (Trace Data Helper) (например, TdhFormatProperty).Прокрутите вниз несколько ссылок выше, и вы можете увидеть их.Хорошая вещь о TDH в том, что они могут анализировать данные для вас (все равно нужно предоставить TDH TMF / MOF).

Я попытался написать свой собственный .etl для читаемой программы .txt, используя Open / Process /StopTrace API (потому что мне нужно поддерживать XP).Я обнаружил, что это довольно сложно.Файл TMF не сложно интерпретировать, так как это чистый текст.Сложность состоит в том, чтобы расшифровать более 50 различных недокументированных внутренних структур спецификаций формата printf-like.В итоге я сдался и остановился на мощном tracefmt.exe , предоставленном в Microsoft WDK.

...