Windows용 USB 이벤트 추적 개요
이 항목에서는 클라이언트 드라이버 개발자에게 USB(유니버설 직렬 버스)의 추적 및 로깅 기능에 대한 정보를 제공합니다. 이 정보는 USB 디바이스를 개발하고 디버그하는 사람들의 이익을 위해 제공됩니다. 여기에는 도구를 설치하고, 추적 파일을 만들고, USB 추적 파일에서 이벤트를 분석하는 방법에 대한 정보가 포함됩니다. 이 항목에서는 USB 추적 및 로깅 기능을 성공적으로 사용하는 데 필요한 USB 에코시스템 및 하드웨어를 포괄적으로 이해하고 있다고 가정합니다.
이벤트 추적을 해석하려면 Windows의 Windows USB 호스트 쪽 드라이버, 공식 USB 사양 및 USB 디바이스 클래스 사양도 이해해야 합니다.
Windows용 이벤트 추적 정보
ETW(Windows용 이벤트 추적)는 운영 체제에서 제공하는 범용 고속 추적 시설입니다. 커널에서 구현되는 버퍼링 및 로깅 메커니즘을 사용하여 사용자 모드 애플리케이션과 커널 모드 디바이스 드라이버 모두에서 발생하는 이벤트에 대한 추적 메커니즘을 제공합니다. 또한 ETW는 로깅을 동적으로 사용하거나 사용하지 않도록 설정하는 기능을 제공하므로 다시 부팅하거나 애플리케이션을 다시 시작하지 않고도 프로덕션 환경에서 자세한 추적을 쉽게 수행할 수 있습니다. 로깅 메커니즘은 비동기 기록기 스레드에 의해 디스크에 기록되는 프로세서별 버퍼를 사용합니다. 이 버퍼링을 사용하면 대규모 서버 애플리케이션이 최소한의 장애로 이벤트를 작성할 수 있습니다.
ETW는 Windows 2000에서 도입되었습니다. 그 이후로 다양한 핵심 운영 체제 및 서버 구성 요소가 ETW를 채택하여 활동을 계측했습니다. ETW는 이제 Windows 플랫폼의 주요 계측 기술 중 하나입니다. 점점 더 많은 타사 애플리케이션이 계측에 ETW를 사용하고 일부는 Windows에서 제공하는 이벤트를 활용합니다. ETW는 또한 개발 중에 디버깅을 위해 printf 스타일 메시지를 추적하기 위해 사용하기 쉬운 매크로 집합을 제공하는 WPP(Windows 전처리기) 소프트웨어 추적 기술로 추상화되었습니다.
ETW는 Windows Vista 및 Windows 7용으로 크게 업그레이드되었습니다. 가장 중요한 새로운 기능 중 하나는 통합 이벤트 공급자 모델 및 API입니다. 간단히 말해서, 새로운 통합 API는 로깅 추적 및 쓰기를 이벤트 공급자를 위한 일관되고 사용하기 쉬운 메커니즘으로 이벤트 뷰어 결합합니다. 동시에 개발자 및 최종 사용자 환경을 개선하기 위해 ETW에 몇 가지 새로운 기능이 추가되었습니다.
ETW 및 WPP에 대한 자세한 내용은 ETW(Windows용 이벤트 추적 및 이벤트 추적)를 참조하세요.
ETW 로깅에 대한 USB 지원
USB는 점점 더 다양한 주변 장치를 PC에 연결하는 가장 널리 사용되는 방법 중 하나입니다. USB 호스트 PC 및 USB 주변 디바이스의 매우 큰 설치 기반이 있으며, 시스템 공급업체, 디바이스 공급업체 및 최종 사용자는 USB 디바이스가 시스템 및 디바이스 수준에서 완벽하게 작동할 것으로 기대하고 요구합니다.
USB 디바이스의 대규모 설치 기반 및 확산으로 인해 Windows USB 소프트웨어 스택, USB 호스트 컨트롤러 및 USB 디바이스 간의 호환성 문제가 발견되었습니다. 이러한 호환성 문제로 인해 디바이스 작업 오류, 시스템 중단 및 시스템 충돌과 같은 고객에게 문제가 발생합니다.
시스템 및/또는 디바이스 또는 경우에 따라 시스템 크래시 덤프에 직접 액세스하지 않고 USB 디바이스 문제를 조사하고 디버그하는 것이 어렵거나 불가능했습니다. 하드웨어 및 크래시 덤프에 대한 모든 액세스 권한이 있더라도 관련 정보를 추출하는 것은 몇 명의 핵심 USB 드라이버 개발자만 알고 있는 시간 집약적인 기술이었습니다. 하드웨어 또는 소프트웨어 분석기를 사용하여 USB 문제를 디버그할 수 있지만 비용이 많이 들고 소수의 전문가만 사용할 수 있습니다.
USB ETW 지원
ETW는 USB 드라이버 스택이 USB 관련 문제를 조사, 진단 및 디버깅하는 데 도움이 되도록 악용할 수 있는 이벤트 로깅 메커니즘을 제공합니다. USB 드라이버 스택 ETW 이벤트 로깅은 USB 드라이버 스택의 기존 임시 로깅 메커니즘에서 제공하는 대부분의 또는 모든 디버깅 기능을 제한 없이 지원합니다. 이렇게 하면 USB 관련 문제를 쉽게 디버깅할 수 있으므로 장기적으로 더 강력한 USB 드라이버 스택을 제공해야 합니다.
USB 호스트 컨트롤러 드라이버 및 USB 허브 드라이버에 ETW 로깅을 추가했습니다. USB 호스트 컨트롤러 드라이버 계층에는 호스트 컨트롤러 포트 드라이버(usbport.sys) 및 미니포트 드라이버(usbehci.sys, usbohci.sys 및 usbuhci.sys)가 포함됩니다. USB 허브 드라이버 계층은 USB 허브 드라이버(usbhub.sys)로 구성됩니다.
USB 허브 이벤트
USB 이벤트 수집을 사용하는 동안 USB 허브 이벤트 공급자는 USB 허브의 추가 및 제거, 모든 허브의 디바이스 요약 이벤트 및 포트 상태 변경을 보고합니다. 이러한 이벤트를 사용하여 대부분의 디바이스 열거 실패의 근본 원인을 확인할 수 있습니다.
USB 포트 이벤트
USB 이벤트 수집을 사용하는 동안 USB 포트 이벤트 공급자는 클라이언트 드라이버에서 I/O를 보고하고, 디바이스 엔드포인트를 열고 닫고, 미니포트 시작 및 중지와 같은 미니포트 상태 전환을 보고합니다. 기록된 I/O에는 실제 USB 포트 상태에 대한 요청이 포함됩니다. 실제 USB 포트의 상태 전환은 핵심 USB 드라이버 스택에서 작업의 주요 초기자 중 하나입니다.
Windows는 USB 3.0 디바이스를 지원하는 USB 드라이버 스택을 제공합니다. Microsoft에서 제공하는 USB 3.0 드라이버 스택은 Usbxhci.sys, Ucx01000.sys 및 Usbhub3.sys 세 가지 드라이버로 구성됩니다. 세 드라이버 모두 함께 작동하여 대부분의 USB 3.0 호스트 컨트롤러에 대한 기본 지원을 Windows에 추가합니다. 새로운 드라이버 스택은 SuperSpeed, 고속, 전속 및 저속 디바이스를 지원합니다. 이벤트 추적을 통해 USB 3.0 드라이버 스택은 호스트 컨트롤러 및 연결된 모든 디바이스의 세분화된 활동에 대한 보기를 제공합니다.
USB Hub3 이벤트
USB 이벤트 수집을 사용하는 동안 USB Hub3 이벤트 공급자는 USB 허브의 추가 및 제거, 모든 허브의 디바이스 요약 이벤트, 포트 상태 변경 및 USB 디바이스 및 허브의 전원 상태를 보고합니다. 포트 상태 변경은 실제 USB 포트의 상태 전환이며 핵심 USB 드라이버 스택에서 작업의 주요 초기자 중 하나입니다. Hub3은 대부분의 디바이스 열거 실패의 근본 원인을 가리키는 열거형 프로세스의 단계를 보고합니다. StateMachine 키워드를 사용하도록 설정하면 Hub3은 소프트웨어 디바이스, 허브 및 포트 개체에 대한 내부 상태 컴퓨터 작업을 보고하여 드라이버의 논리에 대한 심층적인 가시성을 제공합니다.
USB UCX 이벤트
USB 이벤트 수집을 사용하는 동안 USB UCX 이벤트 공급자는 클라이언트 드라이버에서 I/O를 보고하고 디바이스 엔드포인트 및 엔드포인트 스트림을 열고 닫습니다. StateMachine 키워드를 사용하도록 설정하면 UCX는 호스트 컨트롤러 및 엔드포인트 개체에 대한 내부 상태 컴퓨터 작업을 보고하여 드라이버의 논리에 대한 심층적인 가시성을 제공합니다.
USB xHCI 이벤트
USB 이벤트 수집을 사용하는 동안 USB xHCI 이벤트 공급자는 시스템의 xHCI 컨트롤러 속성과 xHCI 작업의 하위 수준 세부 정보를 보고합니다. xHCI는 xHCI별 완성 코드를 포함하여 xHCI 하드웨어에서 보내고 완료한 명령 요청을 보고합니다.
섹션 내용
항목 | 설명 |
---|---|
Logman을 사용하여 USB 이벤트 추적을 캡처하는 방법 | 이 항목에서는 Logman 도구를 사용하여 USB ETW 이벤트 추적을 캡처하는 방법에 대한 정보를 제공합니다. Logman은 Windows에 기본 제공되는 추적 도구입니다. Logman을 사용하여 이벤트를 이벤트 추적 로그 파일로 캡처할 수 있습니다. |
USB ETW 추적에서 활동 ID GUID 사용 | 이 항목에서는 활동 ID GUID, 이벤트 추적 공급자에 해당 GUID를 추가하고 Netmon에서 보는 방법에 대한 정보를 제공합니다. |
Netmon의 USB ETW 추적 | Netmon이라고도 하는 Microsoft 네트워크 모니터를 사용하여 USB ETW 이벤트 추적을 볼 수 있습니다. Netmon은 추적을 자동으로 구문 분석하지 않습니다. USB ETW 파서가 필요합니다. USB ETW 파서는 USB ETW 이벤트 추적의 구조를 설명하는 NPL(네트워크 모니터 파서 언어)로 작성된 텍스트 파일입니다. 파서는 USB 관련 열 및 필터도 정의합니다. 이러한 파서를 통해 Netmon은 USB ETW 추적을 분석하는 데 가장 적합한 도구입니다. |
USB ETW와 함께 Xperf 사용 | 이 항목에서는 Netmon과 함께 Xperf를 사용하여 USB 추적 데이터를 분석하는 방법을 설명합니다. |
USB ETW 및 전원 관리 | 이 항목에서는 ETW를 사용하여 USB 선택적 일시 중단 상태를 검사하고 Windows PowerCfg 유틸리티를 사용하여 시스템 에너지 효율 문제를 식별하는 방법에 대한 간략한 개요를 제공합니다. |