5

Windows Resource Monitorは、(とりわけ)ディスク上のどのファイルがどのプロセスによって現在アクセスされているかを表示します。そして、それはリアルタイムで行われます。どのように?

おそらくETWを使用しており、xperfなどのツールを使用してトレースを生成できることを知っています。しかし、トレースファイルを開始、停止、解析せずにリアルタイムの情報を取得するにはどうすればよいでしょうか。

プログラムで、つまりC#またはC++からデータにアクセスする必要があります。

4

1 に答える 1

5

w OpenTrace / ProcessTrace / StopTraceは、プロバイダーGUIDを知っている限り、リアルタイムでデータを取得できます。これらはWin2000で実行できますが、コールバック関数で生データを解析する必要があります。生データを人間が読めるテキストに変換するには、TMF/MOFが必要です。しかし、それらが公開されているかどうかはわかりません。

Vista / Win7の場合、TDH(Trace Data Helper)APIの新しいセットがあります(例:TdhFormatProperty)。上記のリンクを少し下にスクロールすると、それらが表示されます。TDHの良いところは、データを解析できることです(ただし、TDHにTMF / MOFを提供する必要があります)。

Open / Process / StopTrace APIを使用して(XPをサポートする必要があるため)独自の.etlを読み取り可能な.txtプログラムに書き込もうとしました。なかなか難しいと思いました。TMFファイルは純粋なテキストであるため、解釈するのは難しくありません。難しいのは、50を超える異なる文書化されていないprinfに似たフォーマット仕様の内部構造を解読することです。だから私は結局あきらめて、MicrosoftWDKで提供される強力なtracefmt.exeに固執しました。

于 2011-11-29T13:16:24.073 に答える