2011-11-24 2 views
3

Windows 리소스 모니터는 디스크의 어떤 파일이 현재 어떤 프로세스에 의해 액세스되는지를 (특히) 표시합니다. 그리고 그것은 실시간으로 그렇게합니다. 어떻게?Windows 리소스 모니터는 어떤 API를 사용합니까?

아마도 ETW를 사용하고 있으며 xperf와 같은 도구로 흔적을 생성 할 수 있다는 것을 알고 있습니다. 그러나 추적 파일을 시작, 중지 및 구문 분석하지 않고도 실시간 정보를 얻는 방법은 무엇입니까?

프로그래밍 방식으로 데이터에 액세스해야합니다 (예 : C# 또는 C++).

답변

4

w OpenTrace/ProcessTrace/StopTrace은 공급자 GUID를 알고있는 한 실시간으로 데이터를 가져올 수 있습니다. 그들은 Win2000에서 실행할 수 있지만 콜백 함수에서 원시 데이터를 구문 분석해야합니다. 원시 데이터를 사람이 읽을 수있는 텍스트로 변환하려면 TMF/MOF가 필요합니다. 그들이 비록 대중인지 확실하지 않습니다.

Vista/Win7에는 새로운 TDH (추적 데이터 도우미) API 세트 (예 : TdhFormatProperty)가 있습니다. 위의 링크를 약간 아래로 스크롤하면 볼 수 있습니다. TDH에 대한 좋은 점은 데이터를 구문 분석 할 수 있다는 것입니다 (여전히 TMF/MOF TDH를 제공해야 함).

Open/Process/StopTrace API를 사용하여 읽을 수있는 .txt 프로그램에 내 자신의 .etl을 작성하려고했습니다 (XP를 지원해야하기 때문에). 나는 그것이 어렵다는 것을 알았다. TMF 파일은 순수 텍스트이므로 해석하기가 어렵지 않습니다. 어려운 것은 문서화되지 않은 prinf-allke 형식 사양의 내부 구조를 50 개 이상 해독하는 것입니다. 그래서 나는 결국 Microsoft WDK에서 제공되는 강력한 tracefmt.exe을 고수했습니다.

관련 문제