2009-05-07 2 views
3

私は、いくつかのカーネルトレースをダンプするためにいくつかの成功とlogmanを使用することができました。しかし、私はアプリケーションでカーネルイベント(主にスレッド/プロセスの作成/削除とファイルI/O)のリアルタイム消費をプログラムで有効にしたいと考えています。このタスクの最善のアプローチは何ですか?NTカーネルイベントのリアルタイムETWコンシューマとして登録するにはどうすればよいですか?

答えて

2

カーネルイベントはStartTraceで有効にします。 EVENT_TRACE_PROPERTIESでは、StartTraceに渡すと、EnableFlagsにはさまざまなカーネルイベントプロバイダのさまざまなフラグが含まれています。 EVENT_TRACE_PROPERTIESのLogFileModeをEVENT_TRACE_REAL_TIME_MODEに設定すると、リアルタイムコンシューマになります。その後、ProcessTraceを使用してイベントを消費することができます。

1

StartTraceはERROR_ALREADY_EXISTSで失敗する可能性があります。この時点で、ControlTraceを使用するセッションプロパティを変更する必要がある場合に注意してください。また、UACを有効にしている場合は、「管理者として」プログラムを実行する必要があります。デバッグしている場合は、Visual Studioを管理者として実行する必要があります。また、あなたのプログラムは特権のために '管理者'として設定されたマニフェスト(もしあれば)を持つ必要があります。

OpenTrace、ProcessTrace、およびStartTraceをMSDNで検索すると、必要なものを提供するさまざまな例へのリンクが見つかります。

関連する問題