전역 로거 세션에 로그하는 방법

다음 절차에 따라 전역 로거 추적 세션에 로그하도록 드라이버를 구성합니다.

  1. 드라이버 코드에 다음 정의를 추가합니다. 추적 메시지 헤더 파일에대한 WPP_CONTROL_GUIDS 매크로 정의와 include 문 사이에 정의를 삽입합니다.

    #define WPP_GLOBALLOGGER
    
  2. Tracelog를 사용하여 전역 로거 추적 세션을 구성합니다. 가장 간단한 명령은 다음과 같습니다.

    tracelog -start GlobalLogger
    

    전역 로거 추적 세션을 구성하기 위한 매개 변수를 비롯한 전체 지침은 Tracelog 명령 구문전역 로거 추적 세션을 참조하세요.

    예제는 예제 13: 전역 로거 세션 만들기를 참조하세요.

    이 명령은 추적 세션을 만들고 구성하지만 시스템을 다시 시작할 때까지 세션이 시작되지 않습니다(5단계).

  3. HKLM\System\CurrentControlSet\Control\WMI\GlobalLogger 하위 키 아래에 추적 공급자의 컨트롤 GUID에 대한 라는 하위 키를 추가합니다. Windows Vista 이상 버전의 Windows에서는 컨트롤 GUID를 중괄호( {} )로 묶어야 합니다.

    tracelog -start GlobalLogger 명령은 GlobalLogger 하위 키를 레지스트리에 추가합니다. ControlGUID 하위 키는 드라이버를 전역 로거 추적 세션의 추적 공급자로 설정합니다.

    예를 들어 Windows XP를 실행하는 컴퓨터에서 전역 로거 추적 세션에 로그하도록 Tracedrv 샘플 드라이버를 구성하려면 Tracedrv 컨트롤 GUID에 대해 라는 하위 키를 추가합니다. d58c126f-b309-11d1-969e-0000f875a5bc: HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger\d58c126f-b309-11d1-969e-0000f875a5bc.

    소프트웨어 추적을 위해 설계된 샘플 드라이버인 TraceDrv는 GitHub의 Windows 드라이버 샘플 리포지토리에서 사용할 수 있습니다.

  4. 추적 공급자를 구성하려면 ControlGUID 하위 키에 다음 레지스트리 항목을 추가합니다. 이러한 항목은 선택 사항이며 해당 값은 드라이버에 의해 정의됩니다.

    항목 이름 데이터 형식 설명

    플래그

    REG_DWORD

    공급자의 추적 플래그 를 지정합니다.

    플래그의 의미는 각 추적 공급자에 의해 독립적으로 정의됩니다. 일반적으로 플래그는 점점 더 자세한 보고 수준을 나타냅니다.

    수준

    REG_DWORD

    공급자의 추적 수준을 지정합니다.

    수준 값의 의미는 각 추적 공급자에 의해 독립적으로 정의됩니다. 일반적으로 추적 수준은 이벤트의 심각도(정보, 경고 또는 오류)를 나타냅니다.

Flags 항목의 이름은 복수이고 수준 항목의 이름은 단수입니다.

  1. 시스템을 다시 시작합니다. 그러면 전역 로거 추적 세션이 시작됩니다.

테스트가 완료되면 ControlGUID 하위 키를 삭제하거나 GlobalLogger 하위 키의 시작 항목 값을 0으로 설정합니다. 그렇지 않으면 전역 로거 세션이 실행되고 시스템을 다시 시작할 때마다 드라이버가 로그합니다.

코멘트

WPP_GLOBALLOGGER 있으면 WPP는 레지스트리를 읽는 코드를 추가하고 전역 로거 세션이 실행 중인지 여부와 드라이버가 전역 로거 세션을 추적할 수 있는지 여부를 결정합니다. 이 코드는 드라이버가 표준 추적 세션에서 수신할 수 있도록 알림 대신 사용합니다.

또한 전역 로거 세션은 콜백 알림을 제공하지 않으므로 Windows는 콜백이 발생했다고 가정하고 그에 따라 진행합니다.

WPP 정의는 소량의 코드만 생성하므로 테스트 후 코드에서 제거할 필요가 없습니다.