Share via


EVENT_TRACE_PROPERTIES_V2 구조체(evntrace.h)

EVENT_TRACE_PROPERTIES_V2 구조에는 이벤트 추적 세션에 대한 정보가 포함됩니다. 세션의 속성을 정의, 업데이트 또는 쿼리할 때 StartTraceControlTrace 와 같은 API와 함께 이 구조를 사용합니다.

참고

EVENT_TRACE_PROPERTIES 구조체에서 확장된 버전 2 구조체입니다. 이 구조는 Windows 10 버전 1703부터 지원됩니다. 이전 버전의 Windows에서 사용하면 추가 필드(예: FilterDescV2Options)가 무시됩니다.

구문

typedef struct _EVENT_TRACE_PROPERTIES_V2 {
  WNODE_HEADER             Wnode;
  ULONG                    BufferSize;
  ULONG                    MinimumBuffers;
  ULONG                    MaximumBuffers;
  ULONG                    MaximumFileSize;
  ULONG                    LogFileMode;
  ULONG                    FlushTimer;
  ULONG                    EnableFlags;
  union {
    LONG AgeLimit;
    LONG FlushThreshold;
  } DUMMYUNIONNAME;
  ULONG                    NumberOfBuffers;
  ULONG                    FreeBuffers;
  ULONG                    EventsLost;
  ULONG                    BuffersWritten;
  ULONG                    LogBuffersLost;
  ULONG                    RealTimeBuffersLost;
  HANDLE                   LoggerThreadId;
  ULONG                    LogFileNameOffset;
  ULONG                    LoggerNameOffset;
  union {
    struct {
      ULONG VersionNumber : 8;
    } DUMMYSTRUCTNAME;
    ULONG V2Control;
  } DUMMYUNIONNAME2;
  ULONG                    FilterDescCount;
  PEVENT_FILTER_DESCRIPTOR FilterDesc;
  union {
    struct {
      ULONG Wow : 1;
      ULONG QpcDeltaTracking : 1;
      ULONG LargeMdlPages : 1;
      ULONG ExcludeKernelStack : 1;
    } DUMMYSTRUCTNAME;
    ULONG64 V2Options;
  } DUMMYUNIONNAME3;
} EVENT_TRACE_PROPERTIES_V2, *PEVENT_TRACE_PROPERTIES_V2;

멤버

Wnode

WNODE_HEADER 구조체입니다. BufferSize, FlagsGuid 멤버를 지정해야 합니다. 필요에 따라 ClientContext 멤버를 지정할 수 있습니다.

중요

버전 2 필드(예: FilterDescV2Options)를 인식하려면 에서 Wnode.Flags플래그를 WNODE_FLAG_VERSIONED_PROPERTIES 설정해야 합니다.

BufferSize

각 이벤트 추적 세션 버퍼에 할당된 메모리의 킬로바이트입니다. 최소 버퍼 크기는 4(4KB)입니다. 최대 버퍼 크기는 16384(16MB)입니다. 대부분의 추적 세션은 메모리 및 디스크 공간 낭비를 방지하기 위해 64KB 이하의 버퍼 크기를 사용해야 합니다. Windows 8 이전: 최대 버퍼 크기는 1024(1MB)입니다.

버퍼 크기가 작을 경우 세션 메모리 사용량이 줄어듭니다. 더 큰 버퍼 크기(최대 64KB)는 더 큰 이벤트 컬렉션을 지원합니다. ETW는 버퍼 크기보다 큰 이벤트를 수집할 수 없으며 버퍼 크기에 관계없이 64KB보다 큰 이벤트를 수집할 수 없습니다. 매우 높은 데이터 처리량과 관련된 시나리오에서 버퍼 크기가 클수록 CPU 오버헤드를 줄일 수 있습니다.

  • 작은 이벤트와 낮은 이벤트 속도(몇 KB/s)가 있는 세션은 작은 버퍼 크기(4KB~16KB)를 사용해야 합니다.
  • 작은 이벤트와 보통 이벤트 속도가 있는 세션은 중간 버퍼 크기(16KB ~32KB)를 사용해야 합니다.
  • 큰 이벤트 또는 높은 이벤트 속도(몇MB/s)가 있는 세션은 큰 버퍼 크기(64KB~128KB)를 사용해야 합니다.
  • 초당 수백 메가바이트 크기의 데이터가 있는 진단 추적을 위해 대량의 메모리를 예약해야 하는 드문 경우입니다. 거대한 버퍼 크기(256KB~1024KB)는 CPU 오버헤드를 줄일 수 있습니다.

ETW는 특정 시나리오에서 요청된 BufferSize 를 위쪽으로 조정할 수 있습니다. 예를 들어 추적 파일을 디스크에 쓸 때 ETW는 버퍼 크기를 디스크의 실제 블록 크기의 배수로 늘릴 수 있습니다.

중요

BufferSize 는 추적 세션에 대한 가장 중요한 매개 변수 중 하나입니다. 대용량 버퍼는 일반적으로 메모리 및 디스크 공간을 낭비합니다. 큰 버퍼(256KB 이상)가 있는 추적 세션은 프로덕션 추적이 아닌 진단 조사 또는 테스트에만 사용해야 합니다.

BufferSize를 사용하여 추적 세션의 메모리 사용을 제어하지 마세요. 대신 세션의 이벤트 크기 및 이벤트 속도에 따라 버퍼 크기를 선택한 다음 MinimumBuffersMaximumBuffers 매개 변수를 사용하여 세션 메모리 사용량을 조정합니다.

MinimumBuffers

추적 세션의 버퍼 풀에 예약된 최소 버퍼 수입니다.

ETW는 특정 시나리오에서 이 값을 조정할 수 있습니다.

  • 로깅 모드에 플래그가 EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 포함된 경우 ETW는 최소 2개의 버퍼를 예약합니다.
  • 로깅 모드에 플래그가 EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 포함되지 않으면 ETW는 각 논리 프로세서에 대해 최소 2개의 버퍼를 예약합니다.
  • 이 값이 ETW 결정 한도보다 큰 경우 과도한 메모리 사용을 방지하기 위해 ETW에서 한도로 줄일 수 있습니다.

이벤트 속도가 보통인 파일 모드 및 실시간 추적의 경우 대부분의 사용자는 MinimumBuffers 를 0으로 설정하거나 최소값(예: 4 또는 8)으로 설정하여 메모리 사용량을 최소화해야 하므로 ETW는 프로세서 수에 따라 값을 위쪽으로 조정할 수 있습니다. ETW는 추적이 시작될 때 (조정된) 최소 버퍼 수를 예약합니다. 버퍼가 처리할 수 있는 것보다 더 빨리 채워지면 ETW는 MaximumBuffers에 지정된 수까지 추가 버퍼를 할당합니다.

버퍼링 모드(메모리 내 순환) 추적의 경우 사용자는 ETW가 세션에 대해 예약하려는 총 메모리 양에 따라 MinimumBuffers 매개 변수를 설정해야 합니다. 이 값은 일반적으로 예상 이벤트 속도 및 추적을 처리할 시간을 기준으로 계산됩니다. 예를 들어 초당 16KB의 데이터 속도가 예상되고 추적에서 60초 이상의 데이터를 기록하려면 960KB가 필요합니다. 버퍼 크기가 32KB라고 가정하면 MinimumBuffers 를 30(버퍼당 총 960KB/32KB = 버퍼 30개)으로 설정합니다. ETW는 추적이 시작될 때 (조정된) 최소 버퍼 수를 예약합니다. 모든 버퍼가 채워지면 ETW는 새 이벤트에 가장 오래된 채워진 버퍼를 다시 사용합니다. ETW는 추가 버퍼를 할당하지 않습니다(ETW는 버퍼링 모드 추적에 대해 MaximumBuffers 를 무시합니다).

MaximumBuffers

추적 세션의 버퍼 풀에 할당할 최대 버퍼 수입니다.

ETW는 특정 시나리오에서 이 값을 조정할 수 있습니다.

  • 이 값이 MinimumBuffers의 조정된 값보다 작은 경우 ETW는 MinimumBuffers보다 크거나 같은 적절한 값으로 증가할 수 있습니다.
  • 이 값이 ETW 결정 한도보다 큰 경우 ETW는 이를 한도로 줄일 수 있습니다.

대부분의 사용자는 MinimumBuffersMaximumBuffers 를 동일한 값으로 설정하여 세션 튜닝을 시작해야 합니다. 그런 다음, 이벤트 속도가 최고조에 달하는 동안 추적이 이벤트를 삭제하는 경우 MaximumBuffers 값을 늘릴 수 있습니다.

참고

ETW는 버퍼링 모드 세션(로깅 모드 EVENT_TRACE_BUFFERING_MODE를 포함하는 세션)에 대해 이 필드를 무시합니다. 버퍼링 모드 세션은 추적 컬렉션 시작 시 항상 MinimumBuffers 를 할당하고 추가 버퍼를 할당하지 않습니다.

MaximumFileSize

이벤트를 기록하는 데 사용되는 파일의 최대 크기(메가바이트) 또는 크기 제한 없이 0입니다. 일반적으로 LogFileMode 를 로 설정할 때 이 멤버를 사용하여 순환 로그 파일의 크기를 제한합니다 EVENT_TRACE_FILE_MODE_CIRCULAR. LogFileMode에 또는 EVENT_TRACE_FILE_MODE_CIRCULAREVENT_TRACE_FILE_MODE_NEWFILE가 포함된 경우 이 멤버를 0이 아닌 값으로 EVENT_TRACE_FILE_MODE_PREALLOCATE설정해야 합니다.

로깅에 시스템 드라이브(운영 체제가 포함된 드라이브)를 사용하는 경우 ETW는 최대 파일 크기 매개 변수를 사용하는지 여부에 관계없이 200MB의 디스크 공간을 추가로 확인합니다. 따라서 시스템 드라이브에서 추적 파일의 최대 파일 크기로 100MB를 지정하는 경우 드라이브에 300MB의 여유 공간이 있어야 합니다.

LogFileMode

이벤트 추적 세션에 대한 로깅 플래그입니다. 이 멤버를 사용하여 메모리 내 순환 버퍼, 로그 파일 또는 실시간 소비자에 이벤트를 쓸지 여부를 지정합니다. 이 멤버를 사용하여 다른 세션 특성(예: 세션이 프라이빗 로거 세션임)을 지정할 수도 있습니다. 가능한 플래그 목록은 로깅 모드 상수를 참조하세요.

실시간 소비자가 이벤트를 사용할 준비가 되지 않은 한 실시간 로깅을 지정하지 마세요. ETW는 실시간 소비자가 없을 때 실시간 세션에 대한 이벤트를 버퍼링합니다. 세션에 대한 입니다. 소비자가 없는 실시간 세션은 시스템 리소스를 낭비합니다. 이 버퍼링은 제한됩니다. 제한에 도달하면 새 이벤트가 무시되고 로깅 함수가 로깅에 STATUS_LOG_FILE_FULL실패합니다. Windows Vista 이전: 실시간 소비자가 없으면 이벤트가 삭제되고 로깅이 계속됩니다.

소비자가 실시간 이벤트 처리를 시작하면 재생 파일의 이벤트가 먼저 소비됩니다. 재생 파일의 모든 이벤트가 사용된 후 세션은 새 이벤트 보고를 시작합니다.

FlushTimer

비어 있지 않은 추적 버퍼가 플러시되는 빈도(초)입니다.

  • 파일 모드 세션의 경우 최소 플러시 시간은 1초입니다. FlushTimer를 0으로 설정하면 시간 기반 플러시(버퍼가 채워질 때, 세션이 중지되거나 세션이 명시적으로 플러시될 때 플러시)가 비활성화됩니다. 대부분의 파일 모드 추적은 추적 파일의 공간 낭비를 방지하기 위해 FlushTimer 를 0으로 설정해야 합니다. 추적이 닫혀 있지 않을 가능성이 있는 경우(예: 시스템이 충돌하더라도 이벤트를 가져와야 하는 경우) 타이머를 0이 아닌 값으로 설정할 수 있습니다.
  • 실시간 세션의 경우 최소 플러시 시간은 1초입니다. FlushTimer를 0으로 설정하면 기본 시간 제한인 1초가 사용됩니다. 실시간 세션은 데이터를 얼마나 빨리 수신해야 하는지에 따라 플러시 타이머를 설정해야 합니다. 타이머 값이 높을수록 추적에 대한 CPU 오버헤드가 줄어듭니다. 대부분의 실시간 추적은 5초 또는 10초의 타이머로 시작하고 필요에 따라 타이머를 조정해야 합니다.
  • 버퍼링된(메모리 내 순환) 세션의 경우 FlushTimer 는 사용되지 않습니다. 추적 데이터는 주문형으로만 플러시됩니다(예: ControlTrace를 통해 파일로 플러시됨).

EnableFlags

시스템 로거 세션은 추적에 포함해야 하는 SystemTraceProvider 이벤트를 나타내도록 EnableFlags를 설정할 수 있습니다.

참고

EnableFlags는 로거 모드 플래그KERNEL_LOGGER_NAME, 세션 이름, 세션 GUID 또는 GlobalLoggerGuid 세션 GUID를 사용하여 EVENT_TRACE_SYSTEM_LOGGER_MODE 시작된 추적 세션과 같은 시스템 로거에 SystemTraceControlGuid 만 유효합니다.

이 멤버는 다음 값 중 하나 이상을 포함할 수 있습니다. 지정한 이벤트 외에도 를 지정 EVENT_TRACE_FLAG_NO_SYSCONFIG하지 않는 한 로거는 Windows XP의 하드웨어 구성 이벤트와 Windows Server 2003 이상의 시스템 구성 이벤트도 기록합니다.

  • EVENT_TRACE_FLAG_ALPC (0x00100000)

    ALPC 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_CSWITCH (0x00000010)

    다음 Thread 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_DBGPRINT (0x00040000)

    DbgPrintDbgPrintEx 호출을 ETW 이벤트로 변환할 수 있도록 합니다.

  • EVENT_TRACE_FLAG_DISK_FILE_IO (0x00000200)

    다음 FileIo 이벤트 유형을 사용하도록 설정합니다(EVENT_TRACE_FLAG_DISK_IO 사용하도록 설정해야 함).

  • EVENT_TRACE_FLAG_DISK_IO (0x00000100)

    다음 DiskIo 이벤트 유형을 사용하도록 설정합니다.

  • EVENT_TRACE_FLAG_DISK_IO_INIT (0x00000400)

    다음 DiskIo 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_DISPATCHER (0x00000800)

    다음 Thread 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows 7, Windows Server 2008 R2 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_DPC (0x00000020)

    다음 PerfInfo 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_DRIVER (0x00800000)

    다음 DiskIo 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_FILE_IO (0x02000000)

    다음 FileIo 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_FILE_IO_INIT (0x04000000)

    다음 FileIo 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_IMAGE_LOAD (0x00000004)

    다음 Image 이벤트 유형을 사용하도록 설정합니다.

  • EVENT_TRACE_FLAG_INTERRUPT (0x00000040)

    다음 PerfInfo 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_JOB (0x00080000)

    이 값은 Windows 10 지원됩니다.

  • EVENT_TRACE_FLAG_MEMORY_HARD_FAULTS (0x00002000)

    다음 PageFault_V2 이벤트 유형을 사용하도록 설정합니다.

  • EVENT_TRACE_FLAG_MEMORY_PAGE_FAULTS (0x00001000)

    다음 PageFault_V2 이벤트 유형을 사용하도록 설정합니다.

  • EVENT_TRACE_FLAG_NETWORK_TCPIP (0x00010000)

    TcpIpUdpIp 이벤트 유형을 사용하도록 설정합니다.

  • EVENT_TRACE_FLAG_NO_SYSCONFIG (0x10000000)

    시스템 구성 런다운을 수행하지 마세요.

    이 값은 Windows 8, Windows Server 2012 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_PROCESS (0x00000001)

    다음 Process 이벤트 유형을 사용하도록 설정합니다.

  • EVENT_TRACE_FLAG_PROCESS_COUNTERS (0x00000008)

    다음 Process_V2 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_PROFILE (0x01000000)

    다음 PerfInfo 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_REGISTRY (0x00020000)

    레지스트리 이벤트 유형을 사용하도록 설정합니다.

  • EVENT_TRACE_FLAG_SPLIT_IO (0x00200000)

    SplitIo 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_SYSTEMCALL (0x00000080)

    다음 PerfInfo 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows Vista 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_THREAD (0x00000002)

    다음 Thread 이벤트 유형을 사용하도록 설정합니다.

  • EVENT_TRACE_FLAG_VAMAP (0x00008000)

    맵 및 매핑 해제(이미지 파일 제외) 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows 8, Windows Server 2012 이상에서 지원됩니다.

  • EVENT_TRACE_FLAG_VIRTUAL_ALLOC (0x00004000)

    다음 PageFault_V2 이벤트 유형을 사용하도록 설정합니다.

    이 값은 Windows 7, Windows Server 2008 R2 이상에서 지원됩니다.

DUMMYUNIONNAME

사용되지 않습니다.

DUMMYUNIONNAME.AgeLimit

사용되지 않습니다.

Windows 2000: 사용하지 않는 버퍼가 해제되기 전의 시간 지연(분)입니다. 기본값은 15분입니다.

DUMMYUNIONNAME.FlushThreshold

NumberOfBuffers

출력 시 이벤트 추적 세션의 버퍼 풀에 할당된 버퍼 수입니다.

FreeBuffers

출력에서 이벤트 추적 세션의 버퍼 풀에서 할당되었지만 사용되지 않는 버퍼의 수입니다.

EventsLost

출력에서 기록되지 않은 이벤트 수입니다.

BuffersWritten

출력에서 기록된 버퍼의 수입니다.

LogBuffersLost

출력에서 로그 파일에 쓸 수 없는 버퍼의 수입니다.

RealTimeBuffersLost

출력 시 소비자에게 실시간으로 전달할 수 없는 버퍼의 수입니다.

LoggerThreadId

출력 시 이벤트 추적 세션의 스레드 식별자입니다.

LogFileNameOffset

이 구조체의 할당된 메모리 시작부터 로그 파일 이름을 포함하는 nul 종료 문자열의 시작 부분까지 오프셋(바이트)입니다.

파일 이름에는 일반적으로 확장명을 가합니다 .etl . 경로의 모든 폴더가 이미 있어야 합니다(ETW는 폴더를 만들지 않음). 경로는 상대 경로, 절대 경로, 로컬 또는 원격일 수 있습니다. 경로의 환경 변수는 확장되지 않습니다. 사용자에게 폴더에 쓸 수 있는 권한이 있어야 합니다.

로그 파일 이름은 1,024자로 제한됩니다. LogFileModeEVENT_TRACE_PRIVATE_LOGGER_MODE 또는 EVENT_TRACE_FILE_MODE_NEWFILE 설정하는 경우 프라이빗 로거 세션의 파일 이름에 추가될 프로세스 식별자와 새 파일 로그 모드를 사용하여 만든 로그 파일에 추가되는 순차 번호를 포함하기에 충분한 메모리를 예약해야 합니다.

로그 파일에 이벤트를 기록하지 않으려면(예: EVENT_TRACE_REAL_TIME_MODE 만 지정한 경우) LogFileNameOffset 을 0으로 설정합니다. 실시간 로깅만 지정하고 유효한 로그 파일 이름으로 오프셋을 제공하는 경우 ETW는 로그 파일 이름을 사용하여 이벤트를 실시간 소비자에게 보내는 것 외에도 로그 파일에 순차 로그 파일 및 로그 이벤트를 만듭니다. 또한 LogFileMode 가 0이고 유효한 로그 파일 이름으로 오프셋을 제공하는 경우 ETW는 순차 로그 파일을 만듭니다.

로그 파일에 이벤트를 기록하려는 경우 구조 다음에 로그 파일 이름 및 세션 이름을 포함할 수 있도록 이 구조체에 충분한 메모리를 예약해야 합니다. 로그 파일 이름은 메모리의 세션 이름을 따라야 합니다. 예제는 설명을 참조하세요.

추적 파일은 기본 보안 설명자를 사용하여 만들어집니다. 즉, 로그 파일에는 부모 디렉터리와 동일한 ACL이 있어야 합니다. 제한된 파일에 액세스하려면 적절한 ACL을 사용하여 부모 디렉터리를 만듭니다.

LoggerNameOffset

구조체의 할당된 메모리 시작부터 세션 이름을 포함하는 nul 종료 문자열의 시작 부분까지 오프셋(바이트)입니다.

중요

세션 이름에서 세션의 소유권 및 사용량을 확인할 수 있도록 세션에 설명이 포함된 이름을 사용합니다. GUID 또는 다른 설명이 아닌 값은 사용하지 마세요. 임의의 숫자를 추가하여 세션 이름을 고유하게 만들지 마세요. ETW 세션은 제한된 리소스이므로 구성 요소가 여러 세션을 시작하지 않아야 합니다. 구성 요소가 시작될 때 구성 요소의 세션이 이미 실행 중인 경우 구성 요소는 두 번째 세션을 만드는 대신 분리된 세션을 클린 합니다.

세션 이름은 1,024자로 제한됩니다. 세션 이름은 대/소문자를 구분하지 않습니다. 동일한 이름의 다른 세션이 이미 실행 중인 경우 시스템은 새 세션을 시작하지 않습니다.

Windows 2000: 세션 이름은 대/소문자를 구분합니다. 따라서 경우에 따라 이름이 다른 세션이 허용됩니다. 그러나 혼동을 줄이려면 세션 이름이 고유한지 확인해야 합니다.

DUMMYUNIONNAME2

사용되지 않습니다.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME

사용되지 않습니다.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME.VersionNumber

구조체의 버전입니다. "2"로 설정해야 합니다.

참고

이 필드와 모든 후속 필드는 Wnode.Flags 필드에 플래그가 포함되어 WNODE_FLAG_VERSIONED_PROPERTIES 있고 기본 ETW 런타임이 새 구조 버전(Windows 10 버전 1703 이상)을 인식하는 경우에만 인식됩니다.

DUMMYUNIONNAME2.V2Control

사용되지 않습니다.

FilterDescCount

FilterDesc가 가리키는 필터 수입니다. 시스템 차원의 프라이빗 로거를 구성하지 않는 한 0이어야 합니다.

FilterDesc

시스템 차원의 프라이빗 로거에 대해 지원되는 EVENT_FILTER_DESCRIPTOR 필터 유형: EVENT_FILTER_TYPE_EXECUTABLE_NAMEEVENT_FILTER_TYPE_PID

필터 데이터를 가리키는 EVENT_FILTER_DESCRIPTOR 구조체 배열에 대한 포인터입니다. 배열의 요소 수는 FilterDescCount 멤버에 지정됩니다. EVENT_FILTER_DESCRIPTOR 구조체의 Type 멤버에 지정된 특정 필터 형식에 대한 필터는 하나만 있을 수 있습니다.

시스템 차원의 프라이빗 로거를 구성하지 않는 한 NULL이어야 합니다.

DUMMYUNIONNAME3

사용되지 않습니다.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

사용되지 않습니다.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.Wow

사용되지 않습니다.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.QpcDeltaTracking

사용되지 않습니다.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.LargeMdlPages

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ExcludeKernelStack

DUMMYUNIONNAME3.V2Options

사용되지 않습니다.

설명

이 구조체는 몇 가지 예외가 있는 EVENT_TRACE_PROPERTIES 유사하게 동작합니다.

구조체의 시작은 이 새 구조체가 Windows 10 버전 1703 이전에 Windows 버전을 실행하는 시스템과 호환될 수 있도록 EVENT_TRACE_PROPERTIES 정확하게 정의되며 EVENT_TRACE_PROPERTIES 처리됩니다.

이 구조를 사용하는 경우 버전 2 구조체임을 나타내려면 Wnode.Flags에 를 포함 WNODE_FLAG_VERSIONED_PROPERTIES 해야 합니다.

이 구조를 통해 StartTraceControlTrace 에 전달된 필터는 EnableTraceEx2 함수에서 사용하는 필터와 동일한 의미 체계를 갖습니다.

이 구조체에 대한 메모리를 할당하는 경우 구조 다음에 세션 이름 및 로그 파일 이름을 포함할 수 있는 충분한 메모리를 할당해야 합니다. 세션 이름은 메모리의 로그 파일 이름 앞에 와야 합니다. 로그 파일 이름을 오프셋에 복사해야 하지만 오프셋에 세션 이름을 복사하지는 않습니다. StartTrace 함수는 이름을 복사합니다.

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

typedef struct EventTracePropertyData2 {
    EVENT_TRACE_PROPERTIES_V2 Props;
    WCHAR LoggerName[128];
    WCHAR LogFileName[1024];
} EventTracePropertyData2;

EventTracePropertyData2 data = { 0 };
data.Props.Wnode.BufferSize = sizeof(data);
data.Props.Wnode.Flags = WNODE_FLAG_TRACED_GUID | WNODE_FLAG_VERSIONED_PROPERTIES;
data.Props.LogFileNameOffset = offsetof(EventTracePropertyData2, LogFileName);
data.Props.LoggerNameOffset = offsetof(EventTracePropertyData2, LoggerName);

공급자의 이벤트는 세션의 버퍼에 기록됩니다. 파일 또는 실시간 세션의 버퍼가 가득 차거나 FlushTimer가 만료되면 세션은 이벤트를 로그 파일에 쓰거나 실시간 소비자에게 전달하거나 둘 다 전달하여 버퍼를 플러시합니다. 세션의 버퍼가 플러시할 수 있는 것보다 빠르게 채워지면 새 버퍼가 할당되고 최대 버퍼까지 세션의 버퍼 풀에 추가됩니다. 이 제한을 초과하면 세션은 버퍼를 사용할 수 있게 될 때까지 들어오는 이벤트를 삭제합니다. 각 세션은 삭제된 이벤트 수에 대한 레코드를 유지합니다( EventsLost 멤버 참조).

ETW는 사용되지 않는 버퍼를 해제하지 않습니다.

Windows 2000: ETW는 AgeLimit 멤버 값에 따라 사용되지 않는 버퍼를 해제합니다.

세션이 실행되는 동안 EventsLost 와 같은 세션 통계를 보려면 ControlTrace 함수를 호출하고 ControlCode 매개 변수를 로 EVENT_TRACE_CONTROL_QUERY설정합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 10 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2016 [데스크톱 앱만 해당]
머리글 evntrace.h

추가 정보

StartTrace

ControlTrace

QueryAllTraces

로깅 모드 상수

EVENT_TRACE_PROPERTIES_V2

WNODE_HEADER