EVENT_INSTANCE_HEADER 구조체(evntrace.h)

EVENT_INSTANCE_HEADER 구조에는 TraceEventInstance에서 작성한 모든 이벤트에 공통적인 표준 이벤트 추적 정보가 포함됩니다. 또한 이 구조에는 관련된 이벤트 간의 트랜잭션 또는 계층적 관계의 인스턴스를 추적하는 데 사용하는 이벤트 추적 클래스 및 관련 부모 이벤트에 대한 등록 핸들도 포함됩니다.

구문

typedef struct _EVENT_INSTANCE_HEADER {
  USHORT        Size;
  union {
    USHORT FieldTypeFlags;
    struct {
      UCHAR HeaderType;
      UCHAR MarkerFlags;
    } DUMMYSTRUCTNAME;
  } DUMMYUNIONNAME;
  union {
    ULONG Version;
    struct {
      UCHAR  Type;
      UCHAR  Level;
      USHORT Version;
    } Class;
  } DUMMYUNIONNAME2;
  ULONG         ThreadId;
  ULONG         ProcessId;
  LARGE_INTEGER TimeStamp;
  ULONGLONG     RegHandle;
  ULONG         InstanceId;
  ULONG         ParentInstanceId;
  union {
    struct {
      ULONG KernelTime;
      ULONG UserTime;
    } DUMMYSTRUCTNAME;
    ULONG64 ProcessorTime;
    struct {
      ULONG EventId;
      ULONG Flags;
    } DUMMYSTRUCTNAME2;
  } DUMMYUNIONNAME3;
  ULONGLONG     ParentRegHandle;
} EVENT_INSTANCE_HEADER, *PEVENT_INSTANCE_HEADER;

멤버

Size

이벤트의 총 바이트 수입니다. 크기에EVENT_INSTANCE_HEADER 구조체의 크기와 이 구조체에 추가된 이벤트별 데이터의 크기가 포함되어야 합니다. 크기는 이벤트 추적 세션의 버퍼 크기에서 72(0x48)를 뺀 크기보다 작아야 합니다.

DUMMYUNIONNAME

다양한 구조체와 멤버의 조합입니다.

DUMMYUNIONNAME.FieldTypeFlags

예약되어 있습니다.

DUMMYUNIONNAME.DUMMYSTRUCTNAME

예약되어 있습니다.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.HeaderType

예약되어 있습니다.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.MarkerFlags

예약되어 있습니다.

DUMMYUNIONNAME2

두 가지 형식의 클래스의 공용 구조체입니다.

DUMMYUNIONNAME2.Version

클래스 멤버의 롤업입니다. 하위 바이트에는 Type이 포함되고, 다음 바이트에는 Level이 포함되고, 마지막 두 바이트에는 버전이 포함됩니다.

DUMMYUNIONNAME2.Class

클래스 구조체입니다.

DUMMYUNIONNAME2.Class.Type

이벤트 유형입니다. 공급자는 자체 이벤트 형식을 정의하거나 다음 표에 나열된 미리 정의된 이벤트 형식을 사용할 수 있습니다.

  • EVENT_TRACE_TYPE_CHECKPOINT

    검사점 이벤트입니다. 활동의 시작 또는 끝에 있지 않은 이벤트에 사용합니다.

  • EVENT_TRACE_TYPE_DC_END

    데이터 수집 종료 이벤트입니다.

  • EVENT_TRACE_TYPE_DC_START

    데이터 수집 시작 이벤트입니다.

  • EVENT_TRACE_TYPE_DEQUEUE

    Dequeue 이벤트입니다. 활동이 시작되기 전에 큐에 대기할 때 사용합니다. EVENT_TRACE_TYPE_START 사용하여 작업 항목이 큐에 대기되는 시간을 표시합니다. 큐에서 제거 이벤트 유형을 사용하여 항목에 대한 작업이 실제로 시작되는 시간을 표시합니다. EVENT_TRACE_TYPE_END 사용하여 항목에 대한 작업이 완료된 시간을 표시합니다.

  • EVENT_TRACE_TYPE_END

    종료 이벤트입니다. 를 사용하여 다단계 이벤트의 최종 상태를 추적합니다.

  • EVENT_TRACE_TYPE_EXTENSION

    확장 이벤트입니다. 이전 이벤트의 연속인 이벤트에 사용합니다. 예를 들어 이벤트 추적이 세션 버퍼에 들어갈 수 있는 것보다 많은 데이터를 기록하는 경우 확장 이벤트 형식을 사용합니다.

  • EVENT_TRACE_TYPE_INFO

    정보 이벤트입니다. 기본 이벤트 유형입니다.

  • EVENT_TRACE_TYPE_REPLY

    회신 이벤트입니다. 리소스를 요청하는 애플리케이션이 여러 응답을 받을 수 있는 경우에 사용합니다. 예를 들어 클라이언트 애플리케이션이 URL을 요청하고 웹 서버가 여러 파일을 전송하여 회신하는 경우 수신된 각 파일을 회신 이벤트로 표시할 수 있습니다.

  • EVENT_TRACE_TYPE_START

    시작 이벤트입니다. 를 사용하여 다단계 이벤트의 초기 상태를 추적합니다.

이벤트 추적 클래스 GUID가 여러 이벤트 형식을 지원하는 경우 소비자는 이벤트 유형을 사용하여 이벤트 및 해당 콘텐츠를 해석하는 방법을 결정합니다.

DUMMYUNIONNAME2.Class.Level

이벤트를 생성하는 데 사용되는 심각도 수준을 정의하는 공급자 정의 값입니다. 값의 범위는 0에서 255까지입니다. 컨트롤러는 EnableTraceEx2 함수를 호출할 때 심각도 수준을 지정합니다. 공급자는 ControlCallback 구현에서 GetTraceEnableLevel 함수를 호출하여 심각도 수준을 검색합니다. 공급자는 값을 사용하여 이 멤버를 설정합니다.

ETW는 다음 심각도 수준을 정의합니다. 1보다 높은 수준을 선택하면 하위 수준에 대한 이벤트도 포함됩니다. 예를 들어 컨트롤러가 TRACE_LEVEL_WARNING(3)을 지정하는 경우 공급자는 TRACE_LEVEL_FATAL(1) 및 TRACE_LEVEL_ERROR(2) 이벤트도 생성합니다.

의미
TRACE_LEVEL_CRITICAL (1) 비정상적인 종료 또는 종료 이벤트
TRACE_LEVEL_ERROR (2) 심각한 오류 이벤트
TRACE_LEVEL_WARNING (3) 할당 오류와 같은 경고 이벤트
TRACE_LEVEL_INFORMATION (4) 진입 또는 종료 이벤트와 같은 오류 없는 이벤트
TRACE_LEVEL_VERBOSE (5) 자세한 추적 이벤트

DUMMYUNIONNAME2.Class.Version

이벤트를 기록하는 데 사용하는 이벤트 추적 클래스의 버전을 나타냅니다. 이벤트 추적 클래스 버전이 하나만 있는 경우 0을 지정합니다. 버전은 이벤트 데이터를 해독하는 데 사용할 MOF 클래스를 소비자에게 알려줍니다.

ThreadId

출력 시 이벤트를 생성한 스레드를 식별합니다.

Windows 2000에서 ThreadIdULONGLONG 값이었습니다.

ProcessId

출력에서 이벤트를 생성한 프로세스를 식별합니다.

Windows 2000: 이 멤버는 지원되지 않습니다.

TimeStamp

출력에 이벤트가 발생한 시간을 1601년 1월 1일 자정 이후 100나노초 간격으로 포함합니다.

RegHandle

등록된 이벤트 추적 클래스에 대한 핸들입니다. TraceEventInstance 함수를 호출하기 전에 이 속성을 설정합니다.

RegisterTraceGuids 함수는 이 핸들을 만듭니다(TraceGuidReg 매개 변수 참조).

InstanceId

출력에서 에는 RegHandle과 연결된 이벤트 추적 instance 식별자가 포함됩니다.

ParentInstanceId

출력에서 는 ParentRegHandle과 연결된 이벤트 추적 instance 식별자를 포함합니다.

DUMMYUNIONNAME3

구조체와 멤버의 공용 구조체입니다.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

다음 멤버를 포함하는 구조체입니다.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.KernelTime

CPU 틱에서 커널 모드 명령에 대한 경과된 실행 시간입니다. 프라이빗 세션을 사용하는 경우 ProcessorTime 멤버의 값을 대신 사용합니다.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.UserTime

CPU 틱의 사용자 모드 명령에 대한 경과된 실행 시간입니다. 프라이빗 세션을 사용하는 경우 ProcessorTime 멤버의 값을 대신 사용합니다.

DUMMYUNIONNAME3.ProcessorTime

프라이빗 세션의 경우 사용자 모드 명령에 대한 경과된 실행 시간(CPU 틱)입니다.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2

구조체와 멤버의 공용 구조체입니다.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.EventId

이벤트 식별자입니다.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.Flags

WNODE_FLAG_TRACED_GUID 포함해야 하며 다음의 조합을 포함할 수도 있습니다.

  • WNODE_FLAG_USE_GUID_PTR

    GuidPtr 멤버에 클래스 GUID가 포함되어 있는지 여부를 지정합니다.

  • WNODE_FLAG_USE_MOF_PTR

    MOF_FIELD 구조체 배열에 이 구조체에 추가된 이벤트 데이터가 포함되어 있는지 지정합니다. 배열의 요소 수는 MAX_MOF_FIELDS 제한됩니다.

ParentRegHandle

부모 이벤트의 등록된 이벤트 추적 클래스에 대한 핸들입니다. 관련 이벤트 간에 계층 관계(부모 요소/자식 요소)를 추적하려는 경우 TraceEventInstance 함수를 호출하기 전에 이 속성을 설정합니다.

RegisterTraceGuids 함수는 이 핸들을 만듭니다(TraceGuidReg 매개 변수 참조).

설명

멤버를 설정하기 전에 이 구조체의 메모리를 0으로 초기화해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
머리글 evntrace.h

추가 정보

TraceEventInstance