다음을 통해 공유


USB 복합 디바이스 열거형

새 USB 디바이스가 호스트 컴퓨터에 연결되면 USB 버스 드라이버는 디바이스에 대한 PDO(물리적 디바이스 개체)를 만들고 새 PDO를 보고하는 PnP 이벤트를 생성합니다. 그런 다음 운영 체제는 버스 드라이버에 PDO와 연결된 하드웨어 ID를 쿼리합니다.

모든 USB 디바이스의 경우 USB 버스 드라이버는 다음 형식으로 디바이스 ID 를 보고합니다.

USB\VID_xxxx&PID_yyyy

xxxxyyyy 값은 각각 디바이스 설명자의 idVendoridProduct 필드에서 직접 가져옵니다.

또한 버스 드라이버는 디바이스가 다음 요구 사항을 충족하는 경우 호환되는 식별자(ID) USB\COMPOSITE를 보고합니다.

  • 디바이스 설명자(bDeviceClass)의 디바이스 클래스 필드에는 USB 인터페이스 연결 설명자에 설명된 대로 값이 0이거나, 클래스(bDeviceClass), 서브클래스(bDeviceSubClass) 및 프로토콜(bDeviceProtocol) 필드에는 각각 0xEF, 0x02 및 0x01 값이 있어야 합니다.

  • 디바이스에는 여러 인터페이스가 있어야 합니다.

  • 디바이스에는 단일 구성이 있어야 합니다.

또한 버스 드라이버는 디바이스 설명자의 디바이스 클래스(bDeviceClass), 서브클래스(bDeviceSubClass) 및 프로토콜(bDeviceProtocol) 필드를 확인합니다. 이러한 필드가 0이면 디바이스가 복합 디바이스이고, 버스 드라이버는 PDO에 대한 USB\COMPOSITE의 추가 호환 식별자(ID)를 보고합니다.

버스 드라이버가 새 PDO에 대한 하드웨어 및 호환 ID를 검색한 후 운영 체제는 INF 파일을 검색합니다. INF 파일 중 하나에 디바이스 ID에 대한 일치 항목이 포함되어 있으면 Windows에서 해당 드라이버를 로드하고 일반 부모 드라이버가 작동하지 않습니다. 디바이스 ID를 포함하는 INF 파일이 없고 PDO에 호환 ID가 있는 경우 Windows는 호환 ID를 검색합니다. 이 검색은 Usb.inf에서 일치 항목을 생성하고 운영 체제가 USB Usbccgp.sys(일반 부모 드라이버)를 로드하도록 합니다.

디바이스에 USB\COMPOSITE의 호환 ID를 생성하는 특성이 없는 경우 일반 부모 드라이버를 로드하는 INF 파일을 제공해야 합니다. INF 파일에는 Usb.inf를 참조하는 요구 사항/포함 섹션이 포함되어야 합니다.

복합 디바이스에 여러 구성이 있는 경우 제공하는 INF 파일은 일반 부모가 레지스트리에서 사용해야 하는 구성을 지정해야 합니다. 필요한 레지스트리 키는 기본이 아닌 USB 구성을 선택하도록 Usbccgp.sys 구성에 설명 되어 있습니다.