WinUSB 아키텍처 및 모듈
WinUSB 는 다음 두 가지 기본 구성 요소로 구성됩니다.
- Winusb.sys USB 디바이스의 커널 모드 디바이스 스택의 프로토콜 드라이버 위에 필터 또는 함수 드라이버로 설치할 수 있는 커널 모드 드라이버입니다.
- Winusb.dll WinUSB 함수를 노출하는 사용자 모드 DLL입니다. 애플리케이션은 이러한 함수를 사용하여 디바이스의 함수 드라이버로 설치될 때 Winusb.sys 통신할 수 있습니다.
사용자 지정 함수 드라이버가 필요하지 않은 디바이스의 경우 Winusb.sys 함수 드라이버로 디바이스의 커널 모드 스택에 설치할 수 있습니다. 그런 다음 사용자 모드 프로세스는 디바이스 I/O 컨트롤 요청 집합을 사용하거나 WinUSB 함수를 호출하여 Winusb.sys 통신할 수 있습니다.
다음 그림에서는 여러 Winusb.sys 인스턴스를 포함하는 USB 드라이버 스택을 보여 줍니다.

위의 그림에서는 각각 등록된 단일 디바이스 인터페이스가 있는 세 개의 디바이스 인터페이스 클래스를 구현하는 WinUSB 구성 예제를 보여 줍니다.
- Winusb.sys 인스턴스 1은 사용자 모드 드라이버(Usboem.dll)를 지원하는 디바이스 인터페이스 A를 등록합니다.
- Winusb.sys 인스턴스 2는 SVCHOST(시스템 서비스)를 사용하여 Winusb.dll 통신하는 스캐너(Usbscan.exe)에 대한 사용자 모드 드라이버를 지원하는 디바이스 인터페이스 B를 등록합니다.
- Winusb.sys 인스턴스 3은 펌웨어 업데이트 유틸리티(Usbfw.exe)를 지원하는 디바이스 인터페이스 C를 등록합니다.
정확히 하나의 로드된 Winusb.sys 인스턴스가 있습니다. PDO는 비 복합 디바이스(예: 다이어그램의 인스턴스 1)를 나타내거나 복합 디바이스(예: 인스턴스 2 및 3)의 인터페이스 또는 인터페이스 컬렉션을 나타낼 수 있습니다. USB WMCDC(무선 통신 디바이스 클래스) 디바이스의 경우 PDO는 여러 인터페이스 컬렉션을 나타낼 수도 있습니다. (WMCDC 디바이스용 PDO에 대한 자세한 내용은 무선 모바일 통신 디바이스 클래스에 대한 지원을 참조하세요.)
모든 사용자 모드 애플리케이션은 WinUSB Winusb.dll(동적 연결 라이브러리)를 로드하고 이 모듈에서 노출되는 WinUSB 함수를 호출하여 USB 스택과 통신할 수 있습니다.
관련 항목
WinUSB(winusb.sys) 설치
WinUSB 함수를 사용하여 USB 디바이스에 액세스하는 방법
파이프 정책 수정을 위한 WinUSB 함수
WinUSB 전원 관리
WinUSB 함수
WinUSB