イベントの使用 (イベント トレース)
イベント トレース コンシューマーは、1 つ以上のプロバイダーからのイベントを処理できます。 コンシューマーは、ログ ファイルから、またはリアルタイムでイベントを処理できます。 イベントは、コントローラーがセッションのリアルタイム ログ モードを指定している場合にのみ、リアルタイムで使用できます。 パフォーマンス上の理由から、Windows Vista より前のリアルタイム処理は推奨されません。
イベントを処理するトレース セッションを指定するには、 EVENT_TRACE_LOGFILE 構造を使用します。 処理するログ ファイルまたはリアルタイム セッションごとに、この構造体のコピーを初期化する必要があります。
ログ ファイルからイベントを使用するには、 LogFileName メンバーをログ ファイルの名前に設定します。 リアルタイム セッションからイベントを使用するには、 LoggerName メンバーをセッション名に設定します。 また、この構造体を使用して 、BufferCallback コールバックと、イベントの処理に使用される EventCallback または EventRecordCallback コールバックを指定します。
- EventRecordCallback — 1 つ以上のログ ファイルとリアルタイム セッションからすべてのイベント (ヘッダー イベントを含む) を受信して処理します。 トレース データ ヘルパー関数を使用してイベント データを解析する場合、またはイベントに関するメタデータを取得する場合は、このコールバックを実装します。
- EventCallback — 1 つ以上のログ ファイルとリアルタイム セッションからすべてのイベント (ヘッダー イベントを含む) を受信して処理します。
- BufferCallback — 現在のバッファーに関する概要情報 (失われたイベントなど) を受信して処理します。 ETW は、バッファー内のすべてのイベントをコンシューマーに配信した後、コールバックを呼び出します。 コンシューマーは、このコールバックを使用してイベント処理を取り消すこともできます。ただし、イベントをリアルタイムで使用している場合、ETW はコントローラーがセッションを停止するまでイベントを配信します。
1 つ以上のトレース セッションを定義した後、処理するトレース セッションごとに OpenTrace 関数を呼び出します。1 つ以上のログ ファイルからイベントを処理できますが、リアルタイム セッションは 1 つだけです。 次に、 OpenTrace が ProcessTrace 関数に返すトレース セッション ハンドルの一覧を渡します。 ProcessTrace 関数は、イベントを結合し、それらを時系列順に並べ替え、コールバックに一度に 1 つずつ配信します。 イベントをフィルター処理して、 StartTime パラメーターと EndTime パラメーターを使用して、特定の時間枠に含まれるイベントのみを含めることができます。 ProcessTrace 関数は、コンシューマーがトレース セッション内のすべてのイベントを処理するか、BufferCallback が FALSE を返すか、CloseTrace を呼び出すまでスレッドをブロックします。
Windows Vista より前:CloseTrace は、ProcessTrace が返された後でのみ呼び出すことができます。
マニフェスト、MOF、または TMF ファイルを使用して発行されたイベントを使用する方法を示す例については、「 TDH を使用したイベント データの取得」を参照してください。 Windows Vista 以降では、トレース データ ヘルパー (TDH) 関数を使用してイベントを使用する必要があることに注意してください。
MOF を使用して発行されたイベントを使用する方法を示す例については、「MOF を 使用したイベント データの取得」を参照してください。