EVENT_HEADER構造体 (relogger.h)

イベントに関する情報を定義します。

構文

typedef struct _EVENT_HEADER {
  USHORT           Size;
  USHORT           HeaderType;
  USHORT           Flags;
  USHORT           EventProperty;
  ULONG            ThreadId;
  ULONG            ProcessId;
  LARGE_INTEGER    TimeStamp;
  GUID             ProviderId;
  EVENT_DESCRIPTOR EventDescriptor;
  union {
    struct {
      ULONG KernelTime;
      ULONG UserTime;
    } DUMMYSTRUCTNAME;
    ULONG64 ProcessorTime;
  } DUMMYUNIONNAME;
  GUID             ActivityId;
} EVENT_HEADER, *PEVENT_HEADER;

メンバー

Size

イベント レコードのサイズ (バイト単位)。

HeaderType

予約済み。

Flags

ログに記録されたセッションの種類や、イベントに拡張データが含まれている場合など、イベントに関する情報を提供するフラグ。 このメンバーには、次のフラグを 1 つ以上含めることができます。

意味
EVENT_HEADER_FLAG_EXTENDED_INFO
EVENT_RECORDExtendedData メンバーにはデータが含まれています。
EVENT_HEADER_FLAG_PRIVATE_SESSION
イベントはプライベート セッションに記録されました。 実行経過時間には ProcessorTime を使用します。
EVENT_HEADER_FLAG_STRING_ONLY
イベント データは null で終わる Unicode 文字列です。 EVENT_RECORDUserData メンバーを解析するためにマニフェストは必要ありません。
EVENT_HEADER_FLAG_TRACE_MESSAGE
プロバイダーは 、TraceMessage または TraceMessageVa を使用してイベントをログに記録しました。 ほとんどのプロバイダーは、これらの関数を使用してイベントを書き込まないので、このフラグは通常、イベントが Windows ソフトウェア トレース プリプロセッサ (WPP) によって書き込まれたことを示します。
EVENT_HEADER_FLAG_NO_CPUTIME
実行経過時間には ProcessorTime を使用します。
EVENT_HEADER_FLAG_32_BIT_HEADER
プロバイダーが 32 ビット コンピューターまたは WOW64 セッションで実行されていることを示します。
EVENT_HEADER_FLAG_64_BIT_HEADER
プロバイダーが 64 ビット コンピューターで実行されていることを示します。
EVENT_HEADER_FLAG_CLASSIC_HEADER
プロバイダーが TraceEvent を使用してイベントをログに記録したことを示します。

EventProperty

イベント データの解析に使用するソースを示します。

意味
EVENT_HEADER_PROPERTY_XML
イベント データを解析するためにマニフェストが必要であることを示します。
EVENT_HEADER_PROPERTY_FORWARDED_XML
イベント データ自体にデータの完全にレンダリングされた XML 記述が含まれていることを示します。そのため、イベント データを解析するためのマニフェストは必要ありません。
EVENT_HEADER_PROPERTY_LEGACY_EVENTLOG
イベント データを解析するために WMI MOF クラスが必要であることを示します。

ThreadId

イベントを生成したスレッドを識別します。

ProcessId

イベントを生成したプロセスを識別します。

TimeStamp

イベントが発生した時刻を格納します。 解決は、EVENT_TRACE_LOGFILEProcessTraceMode メンバーに PROCESS_TRACE_MODE_RAW_TIMESTAMP フラグが含まれている場合を除き、システム時刻です。その場合、コントローラーがセッションを作成した時点で、解決は EVENT_TRACE_PROPERTIESWnode.ClientContext メンバーの値に依存します。

ProviderId

イベントをログに記録したプロバイダーを一意に識別する GUID。

EventDescriptor

イベント識別子や重大度レベルなどのイベントに関する情報を定義します。 詳細については、「 EVENT_DESCRIPTOR」を参照してください。

DUMMYUNIONNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.KernelTime

CPU 時間単位でのカーネル モード命令の実行経過時間。 プライベート セッションを使用している場合は、代わりに ProcessorTime メンバーの 値を使用します。 詳細については、「解説」を参照してください。

DUMMYUNIONNAME.DUMMYSTRUCTNAME.UserTime

ユーザー モード命令の実行経過時間 (CPU 時間単位)。 プライベート セッションを使用している場合は、代わりに ProcessorTime メンバーの 値を使用します。 詳細については、「解説」を参照してください。

DUMMYUNIONNAME.ProcessorTime

プライベート セッションの場合、ユーザー モード命令の実行経過時間 (CPU ティック単位)。

ActivityId

2 つのイベントを関連付けする識別子。 詳細については、「 EventWriteTransfer」を参照してください。

注釈

KernelTime メンバーと UserTime メンバーを使用して、一連の命令の CPU コストをユニット単位で決定できます (値は、ログ記録時にそのスレッドに課金される CPU 使用率を示します)。 たとえば、イベント A とイベント B が同じスレッドによって連続してログに記録され、CPU 使用率が 150 と 175 の場合、イベント A と B の間でそのスレッドによって実行されたアクティビティの CPU 時間単位は 25 (175 から 150) になります。

TRACE_LOGFILE_HEADER構造体の TimerResolution には、CPU 使用率タイマーの解像度が 100 ナノ秒単位で含まれています。 タイマー解決をカーネル時間とユーザー時間の値と共に使用して、一連の命令が使用した CPU 時間を決定できます。 たとえば、タイマーの解像度が 156,250 の場合、25 CPU 時間単位は 0.39 秒 (156,250 * 25 * 100 / 1,000,000,000) です。 これは、イベント A と B の間の命令セットで使用される CPU 時間 (壁時計時間が経過していない) の量です。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
Header relogger.h (Evntcons.h を含む)

こちらもご覧ください

EVENT_RECORD