다음을 통해 공유


이벤트 사용(이벤트 추적)

이벤트 추적 소비자는 하나 이상의 공급자에서 이벤트를 처리할 수 있습니다. 소비자는 로그 파일 또는 실시간으로 이벤트를 처리할 수 있습니다. 컨트롤러가 세션에 대한 실시간 로깅 모드를 지정하는 경우에만 이벤트를 실시간으로 사용할 수 있습니다. 성능상의 이유로 Windows Vista 이전에는 실시간 처리가 권장되지 않습니다.

이벤트를 처리할 추적 세션을 지정하려면 EVENT_TRACE_LOGFILE 구조를 사용합니다. 처리하려는 각 로그 파일 또는 실시간 세션에 대해 이 구조체의 복사본을 초기화해야 합니다.

로그 파일의 이벤트를 사용하려면 LogFileName 멤버를 로그 파일의 이름으로 설정합니다. 실시간 세션의 이벤트를 사용하려면 LoggerName 멤버를 세션 이름으로 설정합니다. 또한 이 구조를 사용하여 BufferCallback 콜백 및 이벤트를 처리하는 데 사용되는 EventCallback 또는 EventRecordCallback 콜백 을 지정합니다.

  • EventRecordCallback - 하나 이상의 로그 파일 및 실시간 세션에서 모든 이벤트(헤더 이벤트 포함)를 수신하고 처리합니다. 추적 데이터 도우미 함수를 사용하여 이벤트 데이터를 구문 분석하거나 이벤트에 대한 메타데이터를 검색하려는 경우 이 콜백을 구현합니다.
  • EventCallback - 하나 이상의 로그 파일과 실시간 세션에서 모든 이벤트(헤더 이벤트 포함)를 수신하고 처리합니다.
  • BufferCallback - 손실된 이벤트와 같이 현재 버퍼에 대한 요약 정보를 수신하고 처리합니다. ETW는 버퍼의 모든 이벤트를 소비자에게 전달한 후 콜백을 호출합니다. 소비자는 이 콜백을 사용하여 이벤트 처리를 취소할 수도 있습니다. 그러나 이벤트를 실시간으로 사용하는 경우 ETW는 컨트롤러가 세션을 중지할 때까지 이벤트를 전달합니다.

하나 이상의 추적 세션을 정의한 후 처리하려는 각 추적 세션에 대해 OpenTrace 함수를 호출합니다. 하나 이상의 로그 파일에서 이벤트를 처리할 수 있지만 하나의 실시간 세션에서만 처리할 수 있습니다. 그런 다음 OpenTrace 가 반환하는 추적 세션 핸들 목록을 ProcessTrace 함수에 전달합니다. ProcessTrace 함수는 이벤트를 결합하고 시간순으로 정렬한 다음 콜백에 한 번에 하나씩 전달합니다. StartTime 및 EndTime 매개 변수를 사용하여 특정 시간 프레임에 속하는 이벤트만 포함하도록 이벤트를 필터링할 수 있습니다. ProcessTrace 함수는 소비자가 추적 세션의 모든 이벤트를 처리하거나 BufferCallbackFALSE를 반환하거나 CloseTrace를 호출할 때까지 스레드를 차단합니다.

Windows Vista 이전:ProcessTrace 가 반환된 후에만 CloseTrace를 호출할 수 있습니다.

매니페스트, MOF 또는 TMF 파일을 사용하여 게시된 이벤트를 사용하는 방법을 보여 주는 예제는 TDH를 사용하여 이벤트 데이터 검색을 참조하세요. Windows Vista부터 TDH(추적 데이터 도우미) 함수를 사용하여 이벤트를 사용해야 합니다.

MOF를 사용하여 게시된 이벤트를 사용하는 방법을 보여 주는 예제는 MOF를 사용하여 이벤트 데이터 검색을 참조하세요.