Windows용 USB 이벤트 추적

이 항목에서는 클라이언트 드라이버 개발자를 위한 USB(범용 직렬 버스)의 추적 기능 및 로깅 기능에 대한 정보를 제공합니다. 이 정보는 USB 장치를 개발하고 디버그하는 사람들을 위해 제공됩니다. 여기에는 도구를 설치하고, 추적 파일을 생성하고 USB 추적 파일에 있는 이벤트를 분석하는 방법에 대한 정보가 포함되어 있습니다. 여기에서는 USB 추적 및 로깅 기능을 성공적으로 사용하는 데 필요한 USB 환경과 하드웨어에 대한 포괄적 이해가 있다고 가정합니다.

이벤트 자취를 해석하기 위해서는 Windows USB 드라이버 스택 아키텍처, 공식적인 USB 사양 및 USB 장치 클래스 사양도 이해해야 합니다.

Windows용 이벤트 추적 정보

ETW(Windows용 이벤트 추적)는 운영 체제에서 제공하는 일반적인 목적의, 고속 추적 기능입니다. 이 기능은 커널에 구현되어 있는 버퍼링 및 로깅 메커니즘을 사용하여 사용자 모드 응용 프로그램과 커널 모드 장치 드라이버 모두에서 발행하는 이벤트에 대한 추적 메커니즘을 제공합니다. 또한, ETW에서는 로깅을 동적으로 활성화 및 비활성화하는 기능을 제공하여 재부팅이나 응용 프로그램 재시작을 하지 않고도 업무 환경에서 세부적인 추적을 수행하기 쉽도록 합니다. 로깅 메커니즘에서는 비동기 기록기 스레드에 의해 디스크에 쓰인 프로세서별 버퍼를 사용합니다. 이러한 버퍼링은 대용량 서버 응용 프로그램이 최소한의 방해로 이벤트를 쓸 수 있도록 해줍니다.

ETW는 Windows 2000에서 도입되었습니다. 그 후, 다양한 주요 운영 체제 및 서버 구성 요소에서 ETW를 채택하여 활동을 감시해 왔습니다. 이제 ETW는 Windows 플랫폼의 핵심 계측 기술 중 하나가 되었습니다. 점점 더 많은 타사 응용 프로그램에서 계측에 ETW를 사용하고 있으며 어떤 경우에는 Windows에서 제공하는 이벤트도 이용하하고 있습니다. 또한 ETW는 개발하는 동안 디버그를 하기 위한 printf 스타일 메시지 추적용의 사용하기 쉬운 매크로들을 제공하는 WPP(Windows 전처리기) 소프트웨어 추적 기술에 통합되었습니다.

Windows Vista 및 Windows 7에서는 ETW가 크게 업그레이드되었습니다. 가장 중요한 새로운 기능 중 하나는 통합된 이벤트 공급자 및 API입니다. 간단히 말해 이 새롭게 통합된 API는 추적 로깅 및 이벤트 뷰어에 쓰는 기능을 하나의 일관되고 사용하기 쉬운 이벤트 공급자용 메커니즘으로 통합하고 있습니다. 그와 동시에, 몇 가지의 새로운 기능들이 개발자와 최종 사용자의 환경 개선을 위해 ETW에 추가되었습니다.

ETW 및 WPP에 대한 자세한 내용은 이벤트 추적 및 ETW(Windows용 이벤트 추적)를 참조하세요.

ETW 로깅에 대한 USB 지원

USB는 지속적으로 증가하는 다양한 주변 장치를 PC에 연결하는 가장 일반적인 수단 중 하나입니다. 현재 USB 호스트 PC 및 USB 주변 장치가 이루는 매우 거대한 설치 기반이 이미 존재하며, 시스템 공급업체, 장치 공급업체 및 최종 사용자는 USB 장치가 시스템 및 장치 수준에서 결함 없이 작동하기를 기대합니다.

이 거대한 설치 기반 및 USB 장치의 확산은 Windows USB 소프트웨어 스택, USB 호스트 컨트롤러 및 USB 장치 간 호환성 문제를 드러냈습니다. 이 호환성 문제로 인해 장치 작동 오류, 시스템 정지 및 시스템 크래시와 같은 문제가 발생합니다.

그리고 이러한 USB 장치 문제는 시스템이나 장치에 대한 직접적인 액세스가 없이는, 경우에 따라 시스템 크래시 덤프에 대한 직접적 액세스 없이는 조사 및 디버그하기가 어렵거나 불가능했습니다. 하드웨어 및 크래시 덤프에 대한 모든 권한을 사용하더라도 적절한 정보를 추출하는 것은 시간이 많이 소요되는 기술로, 소수의 핵심 USB 드라이버 개발자만 알고 있었습니다. 하드웨어나 소프트웨어 분석 도구를 사용하여 USB 문제를 디버그할 수도 있지만 이러한 도구는 비용이 많이 소요되고 소수의 전문가만 사용할 수 있습니다.

Windows 7의 USB ETW 지원

Windows 7에서는 ETW가 USB 드라이버 스택이 USB 관련 문제를 조사, 진단 및 디버그하는 데 도움이 되는 이벤트 로깅 메커니즘을 제공합니다. USB 드라이버 스택 ETW 이벤트 로깅 기능은 제한 없이 기존의 USB 드라이버 스택에 있는 임시 로깅 메커니즘에서 제공하는 대부분의 디버그 기능 또는 모든 디버그 기능을 지원합니다. 이 기능은 USB 관련 문제의 해결을 쉽게 하여 오랫동안 좀 더 강력한 USB 드라이버 스택을 제공합니다.

Windows 7에서는 ETW 로깅 기능이 USB 호스트 컨트롤러 드라이버와 USB 허브에 추가되었습니다. USB 호스트 컨트롤러 드라이버 계층에는 호스트 컨트롤러 포트 드라이버(usbport.sys)와 미니 포트 드라이버(usbehci.sys, usbohci.sys 및 usbuhci.sys)가 포함되어 있습니다. USB 허브 드라이버 계층은 USB 허브 드라이버(usbhub.sys)로 구성되어 있습니다. USB 드라이버 ETW 이벤트 공급자는 Windows 7의 모든 버전 및 SKU에 포함되어 있습니다.

  • USB 허브 이벤트

    USB 이벤트 수집이 활성화되어 있으면 USB 허브 이벤트 공급자가 USB 허브의 추가 및 제거, 모든 허브의 장치 요약 이벤트, 그리고 포트 상태 변경 사항을 보고합니다. 이 이벤트들을 사용하면 대부분의 장치 열거 오류의 근본 원인을 파악할 수 있습니다.

  • USB 포트 이벤트

    USB 이벤트 수집이 활성화되어 있으면 USB 포트 이벤트 공급자는 클라이언트 드라이버의 I/O, 장치 끝점의 열림 및 닫힘, 그리고 미니포트 시작 및 중지와 같은 미니포트 상태 전환을 보고합니다. 로깅된 I/O에는 물리적 USB 포트의 상태에 대한 요청이 포함되어 있습니다. 물리적 USB 포트의 상태 전환은 핵심 USB 드라이버 스택의 활동 개시 주요 원인 중 하나입니다.

Windows 8의 USB ETW 지원

Windows 8에는 USB 3.0 장치를 지원하는 USB 드라이버 스택을 제공합니다. Microsoft 제공 USB 3.0 드라이버 스택은 Usbxhci.sys, Ucx01000.sys 및 Usbhub3.sys, 이렇게 세 개의 드라이버로 구성되어 있습니다. 세 드라이버 모두 대부분의 USB 3.0 호스트 컨트롤러에 대해 함께 작동하여 기본 지원을 Windows에 추가합니다. 새 드라이버 스택은 SuperSpeed, 고속, 전속력 및 저속 장치를 지원합니다. USB 2.0 드라이버 스택은 Windows 8에서 지원됩니다. USB 3.0 드라이버 스택은 이벤트 추적을 통해 호스트 컨트롤러와 여기에 연결된 모든 장치의 세부 활동을 볼 수 있도록 해줍니다.

  • USB Hub3 이벤트

    USB 이벤트 수집이 활성화되어 있으면 USB Hub3 이벤트 공급자는 USB 허브의 추가 및 제거, 모든 허브의 장치 요약 이벤트, 포트 상태 변경 사항, 그리고 USB 장치 및 허브의 전원 상태를 보고합니다. 포트 상태 변경 사항은 물리적 USB 포트의 상태 전환으로서, 핵심 USB 드라이버 스택의 활동 개시 주요 원인 중 하나입니다. Hub3에서는 대부분의 장치 열거 오류의 근본 원인을 가리키는 열거 프로세스 단계를 보고합니다. Hub3은 StateMachine 키워드를 사용하여 소프트웨어 장치, 허브 및 포트 개체에 대한 내부 상태 컴퓨터 활동을 보고하여 드라이버의 논리 구조를 더 깊이 볼 수 있도록 해줍니다.

  • USB UCX 이벤트

    USB 이벤트 수집이 활성화되어 있으면 USB UCX 이벤트 공급자는 클라이언트 드라이버의 I/O, 장치 끝점의 열림 및 닫힘, 그리고 끝 스트림을 보고합니다. UCX는 StateMachine 키워드를 사용하여 호스트 컨트롤러 및 끝점 개체에 대한 내부 상태 컴퓨터 활동을 보고하여 드라이버의 논리 구조를 자세히 설명합니다.

  • USB xHCI 이벤트

    USB 이벤트 수집이 활성화되어 있으면 USB xHCI 이벤트 공급자는 시스템 xHCI 컨트롤러의 속성과 xHCI 작업에 대한 낮은 수준의 세부 정보를 보고합니다. xHCI에서는 xHCI 하드웨어에 전송된 명령 요청과 xHCI 별 완료 코드를 포함해 xHCI 하드웨어가 완료한 명령 요청을 보고합니다.

이 조항의 내용

항목설명

USB 이벤트 추적을 캡처하는 방법

이 항목에서는 Logman 도구를 사용하여 USB ETW 이벤트 추적을 캡처하는 방법에 대한 정보를 제공합니다. Logman은 Windows에서 기본 제공되는 추적 도구입니다. Logman을 사용하여 이벤트 추적 로그 파일에 이벤트를 캡처합니다.

Netmon 및 USB ETW 파서를 설치하는 방법

이 항목에서는 Netmon 및 USB ETW 파서에 대한 설치 정보를 제공합니다.

Netmon에서 USB ETW 추적을 보는 방법

이 항목에서는 Netmon을 사용하여 이벤트 추적 파일을 검사하는 방법을 설명합니다.

사례 연구: ETW 및 Netmon을 사용하여 알 수 없는 USB 장치 문제 해결

이 항목에서는 USB ETW 및 Netmon을 사용하여 Windows에서 인식할 수 없는 USB 장치의 문제를 해결하는 방법에 대한 예제를 제공합니다.

USB ETW 추적에서 작업 ID GUID 사용

이 항목에서는 작업 ID GUID에 대한 정보, 이벤트 추적 공급자에서 GUID를 추가하고 Netmon에서 보는 방법을 제공합니다.

USB ETW와 함께 Xperf 사용

이 항목에서는 Xperf를 Netmon과 함께 사용하여 USB 추적 데이터를 분석하는 방법에 대해 설명합니다.

ETW 이벤트를 사용하여 USB 장치 문제 디버깅

이 항목에서는 ETW 이벤트를 사용하여 USB 장치 문제를 디버깅하는 방법을 제공합니다.

USB ETW 및 전원 관리

이 항목에서는 ETW를 사용하여 USB 선택적 절전 모드 상태를 검사하고 Windows PowerCfg 유틸리티를 사용하여 시스템 에너지 효율성 문제를 식별하는 방법에 대한 간단한 개요를 제공합니다.

 

관련 항목

USB ETW 사용
Windows용 USB 이벤트 추적

 

 

표시:
© 2014 Microsoft