아키텍처: USB 호스트 컨트롤러 확장(UCX)

이 섹션에서는 호스트 드라이버 개발을 위한 개략적인 개념과 작업을 소개합니다. 이 섹션은 Microsoft에서 제공하는 USB 호스트 컨트롤러 확장 드라이버(Ucx01000.sys)와 통신하는 새 호스트 컨트롤러 드라이버를 작성하는 경우에 적용됩니다.

다음은 Windows의 USB 호스트 쪽 드라이버에 표시된 다이어그램의 수정된 버전입니다. 이 버전은 호스트 컨트롤러 드라이버 개발과 관련이 없는 USB 클라이언트 드라이버 계층의 세부 정보를 숨깁니다.

ucx 아키텍처.

앞의 이미지에서

  • USB 허브 드라이버(Usbhub3.sys) 는 KMDF 드라이버입니다. 허브 드라이버는 USB 허브 및 해당 포트를 관리하고, 열거하고, USB 디바이스 및 다운스트림 포트에 연결할 수 있는 기타 허브의 PDO(물리적 디바이스 개체)를 만드는 작업을 담당합니다.
  • USB 호스트 컨트롤러 확장(Ucx01000.sys) 은 스택에서 위의 허브 드라이버에 대한 추상화 계층이며 기본 호스트 컨트롤러 드라이버에 요청을 큐에 대기하기 위한 일반 메커니즘을 제공합니다.
  • USB 호스트 컨트롤러 드라이버는 하드웨어를 관리합니다. Usbxhci.sys 특히 xHCI 사양 규격 USB 컨트롤러 하드웨어를 대상으로 하는 Microsoft에서 제공하는 드라이버 중 하나입니다. 독립 하드웨어 개발자가 받은 편지함 Usbxhci.sys 사용하는 대신 자체 호스트 컨트롤러 드라이버를 작성해야 할 수 있습니다. 예를 들어 사양을 완전히 준수하지 않아 Usbxhci.sys 사용할 수 없는 XHCI 하드웨어의 경우 또는 TCP 연결을 통해 USB와 같은 비 XHCI 하드웨어에 사용할 수 없습니다.

UCX와 호스트 컨트롤러 드라이버 간에 발생하는 양방향 통신은 UCX(USB 호스트 컨트롤러 확장) 프로그래밍 인터페이스를 사용하여 수행됩니다. 각 드라이버는 드라이버가 컴파일될 때 Microsoft 제공 스텁 라이브러리(Ucx01000.lib)의 진입점에 정적으로 연결됩니다.

호스트 컨트롤러 드라이버에 대해 로드된 디바이스 스택은 다음과 같습니다.

ucx 디바이스 스택.