다음을 통해 공유


traceloggingprovider.h 헤더

TraceLogging 은 매니페스트 없이 디코딩할 수 있는 자체 설명 이벤트를 로깅하기 위한 시스템입니다. Windows에서 TraceLogging은 ETW(Windows용 이벤트 추적) 이벤트를 생성하는 데 사용됩니다.

Windows SDK의 TraceLoggingProvider.h 헤더에는 C 또는 C++를 사용하여 커널 및 사용자 모드 코드에 대한 TraceLogging 인코딩 ETW 이벤트를 생성하는 매크로 및 인라인 함수가 있습니다.

참고

TraceLoggingProvider.h 에는 공급자 이름, 이벤트 이름 및 필드 이름과 같은 이벤트 특성에 대한 컴파일 시간 상수 값이 필요합니다. 런타임 오버헤드를 최소화하기 위해 TraceLoggingProvider.h 는 컴파일 시간에 해당 데이터 구조를 빌드하고 정보를 읽기 전용 메모리에 저장합니다. 런타임 동적 이벤트를 생성해야 하는 경우 TraceLoggingDynamic과 같은 다른 TraceLogging 구현을 사용해야 합니다.

빠른 시작

  • .c 또는 .cpp 파일에서 TRACELOGGING_DEFINE_PROVIDER 매크로를 사용하여 전역 공급자 핸들을 선언합니다. 공급자 핸들은 ETW에 대한 구성 요소의 연결을 나타냅니다.
  • 구성 요소 시작 시(예: , wmain, DllMain또는 DriverEntry)에서 mainTraceLoggingRegister 함수를 사용하여 ETW에 대한 구성 요소의 연결을 엽니다.
  • 구성 요소 종료 시 TraceLoggingUnregister 함수를 사용하여 구성 요소의 ETW 연결을 닫습니다.
  • 구성 요소를 실행하는 동안 TraceLoggingWrite 매크로를 사용하여 TraceLogging으로 인코딩된 ETW 이벤트를 생성합니다.
  • 필요에 따라 헤더의 TRACELOGGING_DECLARE_PROVIDER 매크로를 사용하여 공급자 핸들을 전달 선언하여 구성 요소의 다른 부분에서 사용할 수 있습니다.
  • WPR, 추적 로그 또는 추적 보기와 같은 도구를 사용하여 추적을 수집합니다.
  • WPA, tracefmt 또는 traceview와 같은 도구를 사용하여 추적을 디코딩하고 봅니다.

예제

#include <windows.h> // or <wdm.h> for kernel-mode.
#include <winmeta.h> // For event level definitions.
#include <TraceLoggingProvider.h>

TRACELOGGING_DEFINE_PROVIDER( // defines g_hProvider
    g_hProvider, // Name of the provider handle
    "MyCompany.MyComponent", // Human-readable name for the provider
    // {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5}
    (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5));

int main(int argc, char* argv[]) // or DriverEntry for kernel-mode.
{
    TraceLoggingRegister(g_hProvider);

    TraceLoggingWrite(
        g_hProvider,
        "MyEvent1",
        TraceLoggingLevel(WINEVENT_LEVEL_WARNING), // Levels defined in <winmeta.h>
        TraceLoggingKeyword(MyEventCategories), // Provider-defined categories
        TraceLoggingString(argv[0], "arg0"), // field name is "arg0"
        TraceLoggingInt32(argc)); // field name is implicitly "argc"

    TraceLoggingUnregister(g_hProvider);
    return 0;
}

자세한 내용은 다음을 참조하세요.

traceloggingprovider.h에는 다음과 같은 프로그래밍 인터페이스가 포함되어 있습니다.

Functions

 
TRACELOGGING_DECLARE_PROVIDER

TraceLogging 공급자에 대한 핸들을 전달 선언합니다.
TRACELOGGING_DEFINE_PROVIDER

TraceLogging 공급자에 대한 핸들을 정의합니다.
TRACELOGGING_DEFINE_PROVIDER_STORAGE

사용자가 정의할 TraceLogging 공급자 핸들에 대한 정적 스토리지를 예약합니다. 이 매크로보다 TRACELOGGING_DEFINE_PROVIDER 것이 좋습니다.
TraceLoggingBinary

이진 데이터가 있는 필드를 이벤트에 추가하는 TraceLogging 래퍼 매크로입니다.
TraceLoggingChannel

이벤트의 채널을 설정하는 TraceLogging 래퍼 매크로입니다.
TraceLoggingCustom

사용자 지정 serializer를 사용하여 압축된 필드를 이벤트에 추가하는 TraceLogging 래퍼 매크로입니다.
TraceLoggingCustomAttribute

이벤트에 대한 사용자 지정 정보를 PDB에 추가하는 TraceLogging 래퍼 매크로입니다.
TraceLoggingDescription

이벤트에 대한 설명을 설정하는 TraceLogging 래퍼 매크로입니다.
TraceLoggingEventTag

이벤트에 대한 이벤트 태그를 설정하는 TraceLogging 래퍼 매크로입니다.
TraceLoggingKeyword

이벤트에 대한 키워드(keyword) 설정하는 TraceLogging 래퍼 매크로입니다.
TraceLoggingLevel

이벤트의 수준을 설정하는 TraceLogging 래퍼 매크로
TraceLoggingOpcode

이벤트에 대한 opcode를 설정하는 TraceLogging 래퍼 매크로
TraceLoggingOptionGroup

TRACELOGGING_DEFINE_PROVIDER 공급자 그룹을 지정하는 데 사용할 TraceLogging 매크로입니다.
TraceLoggingProviderEnabled

추적 소비자가 이 공급자의 이벤트를 수신 대기하는지 여부를 확인하는 추적 로깅 매크로입니다.
TraceLoggingProviderId

TraceLogging 공급자의 공급자 ID를 가져옵니다.
TraceLoggingRegister

이벤트를 기록하는 데 사용할 수 있도록 TraceLogging 공급자를 등록합니다.
TraceLoggingRegisterEx

ETW 사용 콜백을 지정하여 이벤트를 기록하는 데 사용할 수 있도록 TraceLogging 공급자를 등록합니다.
TraceLoggingSetInformation

EventSetInformation을 호출하여 TraceLogging 공급자를 구성합니다.
TraceLoggingSocketAddress

소켓 주소가 있는 필드를 이벤트에 추가하는 TraceLogging 래퍼 매크로입니다.
TraceLoggingStruct

이벤트에 다른 필드가 포함된 필드를 추가하는 TraceLogging 래퍼 매크로입니다.
TraceLoggingUnregister

TraceLogging 공급자의 등록을 취소합니다.
TraceLoggingValue

이벤트에 자동으로 추론된 형식의 필드를 추가하는 C++용 TraceLogging 래퍼 매크로입니다.
TraceLoggingWrite

TraceLogging 이벤트를 내보낸다.
TraceLoggingWriteActivity

지정된 활동 ID를 사용하여 TraceLogging 이벤트를 내보낸다.