Win32 API 日本語リファレンス
ホーム › System.Diagnostics.Etw › PEVENT_CALLBACK

PEVENT_CALLBACK

コールバック

シグネチャ

void PEVENT_CALLBACK(
    EVENT_TRACE* pEvent
);

パラメーター

フィールド型説明
pEventEVENT_TRACE*イベント情報を格納する EVENT_TRACE 構造体へのポインター。

公式ドキュメント

ETW イベントコンシューマーは、トレース処理セッションからイベントを受け取るために このコールバックを実装します。このコールバックは新しいコードでは使用しないでください。 代わりに EventRecordCallback を実装してください。

PEVENT_CALLBACK 型は、このコールバック関数へのポインターです。 EventCallback は、アプリケーション定義の関数名のプレースホルダーです。

解説(Remarks)

メモ

このコールバックは、イベントに関する情報が不完全であり、 TdhGetEventInformation などのイベントデコード用ヘルパー API と互換性がないため、廃止されています。 EventCallback を実装する代わりに、 EventRecordCallback を実装してください。

ETW がイベントを配信するために呼び出す関数を指定するには、 OpenTrace 関数に渡す EVENT_TRACE_LOGFILE 構造体の EventCallback メンバーを設定します。

メモ

EventCallback 関数が ProcessTrace から不正なデータを受け取っている場合は、 OpenTrace に渡した EVENT_TRACE_LOGFILE 構造体の ProcessTraceMode フィールドに指定したフラグをもう一度確認してください。EVENT_TRACE_LOGFILE の EventCallback フィールドと EventRecordCallback フィールドは、共用体として 重なり合うメンバーです。ProcessTraceMode フィールドに PROCESS_TRACE_MODE_EVENT_RECORD フラグが含まれている場合、ProcessTrace は EventRecordCallback の関数シグネチャでコールバックを呼び出します。それ以外の場合、 ProcessTrace は EventCallback の関数シグネチャでコールバックを呼び出します。

OpenTrace を使用してトレース処理セッションを作成した後、 ProcessTrace 関数を呼び出して イベントの受信を開始します。

ProcessTrace がトレースのイベント処理を開始するとき、ログに記録されたイベントの データではなく、トレースに関するデータ (メタデータ) を含む 1 つ以上の合成イベントで コールバックを呼び出すことがあります。これらの合成イベントでは、Header.Guid に EventTraceGuid が設定され、Header.Class.Type には合成イベントの内容に応じた値が 設定されます。たとえば、各トレースファイルの最初のイベントは、 TRACE_LOGFILE_HEADER の情報を含む型 0 の合成イベントになります。

それ以外に受け取るすべてのイベントには、プロバイダー固有のイベントデータが含まれます。 受け取ったイベントの種類を判別するには、 EVENT_TRACE の Header.Guid メンバーと Header.Class.Type メンバーを使用します。よく知られたイベントの種類に ついてはデコード処理をハードコードすることもできますが、ほとんどのイベントは \\root\wmi 名前空間にシステムへ登録された MOF スキーマ情報を使用して デコードします。イベントの MOF スキーマを使用してイベントを解釈する方法については、 Consuming Events を参照してください。

例

EventCallback 関数の実装例については、 Retrieving Event Data Using MOF を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)