추적 메시지에 접두사와 접미사를 추가할 어떻게 할까요? 있나요?
WPP 전처리기 구성 블록을 사용하여 추적 메시지에 데이터를 추가할 수 있습니다.
WPP 구성 블록은 소스 코드에 배치하는 begin_wpp 구성 및 end_wpp 문에 의해 정의됩니다.
begin_wpp 구성
...
구성 블록
...
end_wpp
헤더 파일에 구성 데이터를 배치하는 경우 프로젝트 속성( WPP 추적의 경우)에 헤더 파일의 이름을 지정합니다. 속성 페이지의 파일 옵션 아래에서 검사 구성 파일을 지정합니다. 자세한 내용은 WPP 전처리기를 참조하세요.
구성 블록 구문
//USEPREFIX(Function_Name, "형식 문자열");
이벤트가 기록될 때 사용할 형식 문자열 접두사 정의 첫 번째 매개 변수는 이 접두사에 적용되는 함수의 이름입니다. 두 번째 매개 변수는 사용할 형식 문자열입니다. 기본값을 사용하려면 %! STDPREFIX!. 기본 추적 메시지 접두사는 CPU 번호, 프로세스 ID, 스레드 ID, UTC(협정 세계시) 형식의 타임스탬프를 지정하고 컨트롤 GUID 이름을 지정합니다.
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
//FUNCFunction_Name{args}(EXP);
추적 함수의 이름과 서명을 정의합니다. 중괄호 { } 는 함수에 대한 집합 값을 정의하는 데 사용됩니다. 다음 예제에서 함수는 하나의 인수와 형식 문자열을 사용하지 않으며 LEVEL은 ERROR로 설정됩니다.
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
//USESUFFIX(Function_Name, "형식 문자열");
이벤트가 기록될 때 사용할 형식 문자열 접미사를 정의합니다. 첫 번째 매개 변수는 이 접미사가 적용되는 함수의 이름입니다. 두 번째 매개 변수는 사용할 형식 문자열입니다. 코드에서 변수 이름을 사용할 수 있습니다.
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
구성 블록 예제
다음 예제에서는 문자열 접두사 및 접미사를 사용하는 추적 매크로를 정의합니다. 추적 매크로를 정의하는 경우 로거를 선택하고 이벤트를 기록해야 하는지 여부를 확인하는 매크로도 정의해야 합니다.
//MACRO: TRACE_RETURN
//
//begin_wpp config
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
//end_wpp
//
// The next two macros are for checking if the event should be logged, and for
// choosing the logger handle to use when calling the ETW trace API
//
#define WPP_LEVEL_EXP_ENABLED(LEVEL, HR) WPP_FLAG_ENABLED(LEVEL)
#define WPP_LEVEL_EXP_LOGGER(LEVEL, HR) WPP_FLAG_LOGGER(LEVEL)
추적 결과 예제
[0]0F78.0460::06/24/2006-15:54:54.880 [tracedrv]Function Return=0x8000000f(STATUS_DEVICE_POWERED_OFF)