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
)에서main
TraceLoggingRegister 함수를 사용하여 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;
}
자세한 내용은 다음을 참조하세요.
- TraceLogging
- TraceLogging 래퍼 매크로
- TraceLoggingWrite
- TRACELOGGING_DECLARE_PROVIDER
- TRACELOGGING_DEFINE_PROVIDER
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 이벤트를 내보낸다. |