다음을 통해 공유


USB 복합 디바이스의 인터페이스 컬렉션 열거 개요

복합 USB 디바이스의 인터페이스는 컬렉션에서 그룹화할 수 있습니다. USB 제네릭 부모 드라이버(Usbccgp.sys)는 네 가지 방법으로 인터페이스 컬렉션을 열거할 수 있습니다.

인터페이스 컬렉션의 이러한 네 가지 열거 메서드는 다음과 같은 방식으로 계층적으로 정렬됩니다.

  1. 공급업체에서 제공하는 콜백 루틴

    공급업체가 USB Usbccgp.sys(제네릭 부모 드라이버)에 콜백 루틴을 등록한 경우 제네릭 부모 드라이버는 콜백 루틴보다 우선하며 콜백 루틴이 다른 메서드를 사용하는 대신 인터페이스를 그룹화할 수 있도록 합니다. 공급업체에서 제공하는 콜백 루틴을 사용하는 인터페이스 컬렉션의 열거에 대한 자세한 내용은 USB 복합 디바이스의 인터페이스 컬렉션 열거형을 참조 하세요.

  2. 공용 구조체 기능 설명자

    . 공급업체가 USB 제네릭 부모 드라이버에서 CDC 및 WMCDC 열거를 사용하도록 설정한 경우 제네릭 부모 드라이버는 공용 구조체 기능 설명자(UFD)를 사용하여 인터페이스를 컬렉션으로 그룹화합니다. 사용하도록 설정하면 이 메서드가 공급업체에서 제공하는 콜백 루틴을 제외한 다른 모든 메서드보다 우선합니다.

  3. 인터페이스 연결 설명자

    IAD(인터페이스 연결 설명자)가 있는 경우 USB 제네릭 부모 드라이버는 항상 레거시 메서드를 사용하는 대신 IAD를 사용하여 인터페이스를 그룹화합니다. 공급업체는 IIAD를 사용하여 인터페이스 컬렉션을 정의하는 것이 좋습니다.

  4. 레거시 오디오 메서드

    USB 일반 부모 드라이버는 오디오 함수용으로 예약된 레거시 기술을 사용하여 인터페이스 컬렉션을 열거할 수 있습니다. 디바이스에 IIAD가 있는 경우 제네릭 부모 드라이버는 이 메서드를 사용하지 않습니다.

복합 디바이스에 대한 인터페이스 컬렉션의 열거형 사용자 지정

일부 USB 디바이스에는 IAD(USB 인터페이스 연결 설명자)에서 설명할 수 없는 인터페이스 컬렉션이 있습니다. Windows Vista 이상 운영 체제에서 공급업체는 USB Usbccgp.sys(일반 부모 드라이버)가 디바이스의 인터페이스 컬렉션을 정의하고 열거하는 방식을 사용자 지정할 수 있습니다. 이 작업은 필터 드라이버의 열거형 콜백 루틴 을 통해 수행됩니다. 콜백 루틴은 제네릭 부모 드라이버가 디바이스에 대한 사용자 지정 인터페이스 컬렉션을 정의하는 데 도움이 됩니다.

일반 부모 드라이버가 사용자 지정 인터페이스 컬렉션을 정의하려면 복합 디바이스의 공급업체가 다음을 수행해야 합니다.

  1. 열거형 콜백 루틴(USBC_START_DEVICE_CALLBACK)을 구현합니다.
  2. USB 디바이스 구성 인터페이스(USBC_DEVICE_CONFIGURATION_INTERFACE_V1 StartDeviceCallback 멤버)의 콜백 루틴에 대한 포인터를 제공합니다.
  3. 복합 디바이스의 디바이스 ID와 일치하고 USB 제네릭 부모 드라이버와 필터 드라이버를 모두 명시적으로 로드하는 INF 파일을 제공합니다.

구현 고려 사항

열거형 콜백 루틴을 포함하는 필터 드라이버는 상위 또는 하위 필터 드라이버일 수 있습니다. USB 일반 부모 드라이버는 복합 디바이스를 시작하는 IRP_MN_START_DEVICE 요청을 받으면 드라이버 스택의 맨 위에 IRP_MN_QUERY_INTERFACE 요청을 전송하여 USB 디바이스 구성 인터페이스를 쿼리합니다.

IRP_MN_QUERY_INTERFACE 요청을 받으면 필터 드라이버는 요청의 InterfaceType 멤버에서 GUID 형식을 확인하여 요청된 인터페이스가 USB_BUS_INTERFACE_USBC_CONFIGURATION_GUID 형식인지 확인해야 합니다. 이 경우 필터 드라이버는 IRP의 인터페이스 멤버에 있는 인터페이스에 대한 포인터를 반환합니다.

열거형 콜백 루틴은 인터페이스 컬렉션을 설명하는 함수 설명자(USBC_FUNCTION_DESCRIPTOR) 배열에 대한 포인터를 반환해야 합니다. 각 함수 설명자에는 인터페이스 컬렉션을 설명하는 USB_INTERFACE_DESCRIPTOR(인터페이스 설명자) 배열이 포함되어 있습니다. 콜백 루틴은 페이징되지 않은 풀에서 함수 설명자와 인터페이스 설명자를 모두 할당해야 합니다. 제네릭 부모 드라이버는 이 메모리를 해제합니다. 콜백 루틴은 각 USB_INTERFACE_DESCRIPTOR NumberOfInterfaces 멤버가 인터페이스 컬렉션의 인터페이스 수를 정확하게 보고하는지 확인해야 합니다.

제네릭 부모 드라이버는 각 함수 설명자에 대한 PDO(물리적 디바이스 개체)를 만듭니다.

USB 디바이스 구성 인터페이스 및 열거형 콜백 루틴은 일반 부모 드라이버 루틴에 요약되어 있습니다.

USB 일반 부모 드라이버 로드 메커니즘

복합 디바이스가 USB 복합 디바이스 열거에 설명된 요구 사항을 충족하는 경우 운영 체제는 디바이스가 복합 디바이스임을 나타내는 호환 ID USB\COMPOSITE 를 생성합니다. 호환 ID는 Usb.inf에서 일치 항목을 생성하고 운영 체제는 공급업체에서 제공하는 INF 파일의 도움 없이 USB 일반 부모 드라이버를 자동으로 로드합니다.

그러나 이 기본 메커니즘은 인터페이스 컬렉션의 사용자 지정 열거가 필요한 복합 디바이스에서 작동하지 않습니다. 기본 메커니즘에서는 시스템에서 필요한 공급업체 제공 필터 드라이버를 로드하지 않기 때문입니다. 열거형 콜백 루틴 메커니즘이 작동하려면 USB 제네릭 부모가 복합 디바이스의 인터페이스 컬렉션을 열거할 때 USB 디바이스 구성 인터페이스를 노출하는 필터 드라이버가 이미 로드되어야 합니다. 이렇게 하려면 복합 디바이스의 공급업체가 복합 디바이스의 디바이스 ID와 일치하고 USB 일반 부모 드라이버와 필터 드라이버를 모두 명시적으로 로드하는 INF 파일을 설치해야 합니다.

무선 모바일 통신 디바이스 클래스에 대한 지원

Windows Vista 에서 USB Usbccgp.sys(일반 부모 드라이버) 는 USB(유니버설 직렬 버스) CDC(Communication Device Class) 및 USB WMCDC(무선 모바일 통신 디바이스 클래스)에 포함된 디바이스를 지원합니다.

USB WMCDC(무선 모바일 통신 디바이스 클래스) 사양은 디바이스가 USB 포트에 연결될 때 호스트와 무선 모바일 디바이스(예: 휴대폰) 간의 연결, 제어 및 콘텐츠 교환에 대한 표준을 설정합니다. WMCDC는 광범위한 통신 및 네트워킹 디바이스를 포함하는 CDC(통신 디바이스 클래스)의 확장입니다. 이 섹션에서는 Windows 운영 체제에서 CDC 및 WMCDC 디바이스를 지원하는 아키텍처에 대해 설명합니다.

WMCDC 디바이스는 논리 핸드셋으로 그룹화된 여러 함수로 구성됩니다. 대부분의 WMCDC 디바이스에는 단일 논리 핸드셋이 있지만 디바이스에는 여러 논리 핸드셋이 있을 수 있습니다. 논리 핸드셋에는 일반적으로 데이터/팩스 모뎀, 개체 저장소 및 호출 제어 기능과 같은 함수가 포함됩니다. 논리 핸드셋에는 USB 오디오 클래스 사양, HID(USB 휴먼 입력 장치) 클래스 사양 및 USB 비디오 클래스 사양과 같은 다른 USB 사양에 의해 정의된 지원 함수도 포함될 수 있습니다.

Windows WMCDC 아키텍처는 네이티브 Windows 드라이버를 사용하여 WMCDC 디바이스의 기능을 관리합니다. 예를 들어 TAPI(Windows 전화 통신 애플리케이션 프로그램 인터페이스) 하위 시스템을 사용하여 디바이스의 음성 및 데이터/팩스 모뎀 함수를 관리하고 Windows NDIS(네트워크 드라이버 인터페이스 사양) 하위 시스템을 사용하여 디바이스의 이더넷 LAN 함수를 관리할 수 있습니다. 또한 WinUSB(Winusb.sys)의 지원을 받아 사용자 모드 소프트웨어에서 OBEX(Object Exchange Protocol) 함수와 같은 일부 함수를 관리할 수 있습니다.

이 이미지는 WMCDC 디바이스에 대한 드라이버 스택 예제를 보여줍니다.

샘플 디바이스 구성 및 드라이버 스택의 다이어그램.

위의 그림에서 WMCDC 디바이스에는 단일 논리 핸드셋인 OBEX 함수 및 모뎀 함수가 포함되어 있습니다. 공급업체에서 제공하는 INF 파일은 모뎀을 관리하기 위해 네이티브 Windows 드라이버를 로드합니다. OBEX 함수는 UMDF(사용자 모드 드라이버 프레임워크)에서 실행되는 공급업체에서 제공하는 사용자 모드 드라이버에 의해 관리됩니다. 사용자 모드 드라이버는 WPD(Windows 이식 장치) 프로토콜을 사용하여 사용자 애플리케이션 및 개발자용 WinUSB 소개에서 USB 스택과 통신하기 위해 내보내는 인터페이스와 통신합니다. 일반적으로 공급업체에서 제공하는 INF 파일은 Winusb.sys 사용하는 각 인터페이스 컬렉션에 대해 별도의 Winusb.sys 인스턴스를 로드합니다.

레지스트리 설정

USB 스택은 WMCDC를 자동으로 지원하지 않습니다. Usbccgp.sys 인스턴스를 로드하는 INF 파일을 제공해야 합니다. INF 파일에는 Usbccgp.sys 연결된 소프트웨어 키의 EnumeratorClass 레지스트리 값을 0x02, 0x00 및 0x 00의 세 가지 숫자로 구성된 REG_BINARY 값으로 설정하는 AddReg 섹션이 포함되어야 합니다. 예제 INF 파일의 다음 코드 예제에서는 EnumeratorClass를 적절한 값으로 설정하는 방법을 보여 줍니다.

[CCGPDriverInstall.NT]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg=CCGPDriverInstall.AddReg

[CCGPDriverInstall.NT.Services]
Include=usb.inf
Needs=Composite.Dev.NT.Services

[CCGPDriverInstall.AddReg]
HKR,,EnumeratorClass, 0x00000001,02,00,00

EnumeratorClass에 할당해야 하는 값은 16진수 쌍(02, 00 및 00)으로 INF 파일에 표시되는 3개의 1바이트 이진 값으로 생성됩니다. 이 세 가지 숫자는 USB 구현자 포럼이 CDC 디바이스 클래스, CDC 디바이스 서브클래스 및 CDC 디바이스 프로토콜에 각각 할당한 값에 해당합니다.

다음 항목에서는 WMCDC에 대해 자세히 설명합니다.

WMCDC에서 인터페이스 컬렉션 열거

WMCDC(USB 무선 모바일 통신 디바이스 클래스)는 CDC(USB 통신 디바이스 클래스)의 하위 클래스입니다. WMCDC 사양은 확장되지만 인터페이스 컬렉션을 정의하기 위한 CDC 지침을 크게 변경하지는 않습니다. 특히 WMCDC 디바이스는 인터페이스 컬렉션을 정의하기 위한 CDC 지침을 준수해야 합니다.

CDC 인터페이스 컬렉션에는 통신 인터페이스 클래스() 또는 데이터bInterfaceClass = 0x0A 인터페이스 클래스()에 속하는 마스터 인터페이스(bInterfaceClass = 0x02USB_INTERFACE_DESCRIPTOR)가 포함됩니다. 마스터 인터페이스가 통신 인터페이스 클래스(일반적인 상황)에 속하는 경우 마스터 인터페이스(bInterfaceSubClass)의 하위 클래스는 CDC 제어 모델을 지정합니다. 컨트롤 모델은 인터페이스 컬렉션에 포함된 인터페이스의 형식을 나타냅니다. USB 구현자 포럼에서 정의하는 컨트롤 모델에 대한 설명은 CDC 사양 및 WMCDC 사양을 참조하세요.

인터페이스 컬렉션의 마스터 인터페이스 뒤에는 UFD(공용 구조체 기능 설명자)를 비롯한 필수 클래스별 기능 설명자 집합이 잇습니다. UFD는 컬렉션에 속하는 인터페이스의 수를 나열합니다. UFD의 bMasterInterface 필드에는 마스터 인터페이스의 수가 포함됩니다. 0개 이상의 bSubordinateInterface 필드에는 컬렉션에 있는 다른(하위) 인터페이스의 수가 포함됩니다.

대부분의 컨트롤 모델의 경우 USB Usbccgp.sys(일반 부모 드라이버) 는 각 UFD에 대해 하나의 PDO(물리적 디바이스 개체)를 만듭니다. 그러나 일부 컨트롤 모델에는 제네릭 부모 드라이버가 오디오 인터페이스가 속한 인터페이스 컬렉션과 별도로 열거하는 오디오 인터페이스가 포함됩니다. 오디오 인터페이스는 인터페이스 컬렉션의 UFD에 있는 하위 인터페이스(bSubordinateInterface) 목록에 표시되지만 제네릭 부모 드라이버는 오디오 인터페이스에 대해 별도의 PDO를 만듭니다. 오디오 인터페이스에 대한 PDO와 오디오 인터페이스가 속한 인터페이스 컬렉션의 PDO는 디바이스 개체 트리에 있는 부모 복합 디바이스의 FDO(기능 디바이스 개체) 바로 위에 있습니다. 오디오 인터페이스의 PDO는 인터페이스 컬렉션의 자식이 아닙니다.

레지스트리에는 열거형 특성을 구성할 수 있는 두 가지 컨트롤 모델, 즉 논리 핸드셋을 정의하는 WHCM(무선 핸드셋 컨트롤 모델)과 OBEX(개체 교환 프로토콜) 컨트롤 모델이 있습니다. 이러한 두 컨트롤 모델의 열거형 특성을 구성하려면 Usbccgp.sys 인스턴스를 로드하고 해당 Usbccgp.sys 인스턴스의 소프트웨어 키에 CdcFlags 값을 설정하는 INF 파일을 제공해야 합니다. 다음 표에서는 CdcFlags의 구성 옵션에 대해 설명합니다.

CdcFlags 비트 비트가 0으로 설정 비트가 1로 설정
0(mask = 0x00000001) USB 제네릭 부모 드라이버는 각 OBEX 인터페이스에 대해 별도의 PDO를 만듭니다. USB 제네릭 부모 드라이버는 모든 OBEX 인터페이스에 대해 단일 PDO를 만듭니다.
1(mask = 0x00000010) USB 제네릭 부모 드라이버는 WHCM 인터페이스(논리 핸드셋)용 PDO를 만들지 않습니다. 이러한 인터페이스는 디바이스 개체 트리의 관점에서 숨겨집니다. USB 제네릭 부모 드라이버는 각 WHCM 인터페이스에 대한 PDO를 만듭니다.

예를 들어 두 비트를 모두 지우려면(0으로 설정) INF 파일에 DDInstall.AddReg 섹션에 다음 줄이 있어야 합니다.

HKR, , CdcFlags, 0x00010001, 0x00000000

두 비트를 모두 1로 설정하려면 INF 파일에 다음 줄이 있어야 합니다.

HKR, , CdcFlags, 0x00010001, 0x00000011

비트 0에서 1, 비트 1에서 0으로 설정하려면 INF 파일에 다음 줄이 있어야 합니다.

HKR, , CdcFlags, 0x00010001, 0x00000001

비트는 다른 비트와 독립적으로 설정하거나 다시 설정할 수 있습니다.

다음 그림에서는 여러 레지스트리 구성이 동일한 디바이스에 대해 서로 다른 디바이스 트리를 만드는 방법을 보여 줍니다.

다음 그림에서는 CdcFlags의 비트 0과 비트 1이 모두 0인 경우 PDO 구성을 보여 줍니다 .

CdcFlags = 0x00000000 대한 디바이스 개체 매핑에 대한 인터페이스 컬렉션을 보여 주는 다이어그램

이전 그림의 WHCM(무선 핸드셋 컨트롤 모델) 인터페이스 컬렉션에는 OBEX 컬렉션 2개와 모뎀 컬렉션이라는 세 가지 하위 인터페이스 컬렉션(bSubordinateInterface)이 포함되어 있습니다. CdcFlags비트 0은 0이므로 USB 제네릭 부모 드라이버는 WHCM 인터페이스 컬렉션에 대한 PDO를 만들지 않습니다. CdcFlags비트 1은 0이므로 USB 제네릭 부모 드라이버는 각 OBEX 인터페이스 컬렉션에 대해 별도의 PDO를 생성합니다.

다음 그림에서는 CdcFlags의 비트 0과 비트 1이 모두 설정된 경우 PDO 구성을 보여 줍니다 .

CdcFlags = 0x00010001 대한 디바이스 개체 매핑에 대한 인터페이스 컬렉션을 보여 주는 다이어그램

CdcFlags비트 0이 1로 설정되므로 USB 제네릭 부모 드라이버는 WHCM 인터페이스 컬렉션에 대한 PDO를 만듭니다. CdcFlags비트 1이 1로 설정되므로 USB 제네릭 부모 드라이버는 두 OBEX 컬렉션을 함께 그룹화하고 두 OBEX 컬렉션에 대해 단일 PDO를 생성합니다.

커널 수준에서 단일 PDO를 사용하여 OBEX 컬렉션을 나타내고 사용자 모드 드라이버 내에서 각 개별 OBEX 컬렉션을 구분할 수 있습니다. WPD(Windows 이식 가능 디바이스) 프로토콜을 사용하면 모든 OBEX 함수가 커널 수준에서 단일 PDO로 그룹화될 때 사용자 수준에서 서로 다른 OBEX 함수 간에 데이터 스트림을 멀티플렉싱할 수 있습니다.

다음 예제 INF 파일은 WMCDC 디바이스를 관리하기 위해 USB 제네릭 부모 드라이버를 로드하고 논리 핸드셋에 대한 PDO를 만들고 논리 핸드셋의 모든 OBEX 컬렉션에 대해 단일 PDO를 만들도록 USB 제네릭 부모에 지시합니다.

[Version]
Signature="$Windows NT$"
Class=USB
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
Provider=%MSFT%
DriverVer=07/01/2001,5.1.2600.0
CatalogFile=ExampleCatalog.cat
PnpLockdown=1

[ControlFlags]
ExcludeFromSelect=*

[Manufacturer]
CompanyName=CompanyName,NTamd64

[CompanyName.NTamd64]
%COMPANYNAME.DeviceDesc%=CCGPDriverInstall,USB\Vid_????&Pid_????

[CCGPDriverInstall.NT]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg=CCGPDriverInstall.AddReg

[CCGPDriverInstall.NT.Services]
Include=usb.inf
Needs=Composite.Dev.NT.Services

[CCGPDriverInstall.AddReg]
HKR,,EnumeratorClass,0x00000001,02,00,00
HKR,,CdcFlags,0x00010001,0x00010001

[Strings]
MSFT="Microsoft"
COMPANYNAME.DeviceDesc="USB Phone Parent"

CDC 및 WMCDC 인터페이스 컬렉션 처리

USB 일반 부모 드라이버는 특별한 방식으로 WHCM(무선 핸드셋 제어 모델) 인터페이스를 처리합니다.

다음 목록에서는 CDC 및 WMCDC 인터페이스 컬렉션 처리가 다른 인터페이스 컬렉션과 다른 가장 중요한 방법을 요약합니다.

  • 무선 모바일 통신 디바이스 클래스는 인터페이스 컬렉션의 제한된 양의 중첩을 허용합니다. 특히 논리 핸드셋 인터페이스 컬렉션(즉, WHCM 인터페이스 컬렉션)에는 다른 하위 인터페이스 컬렉션이 포함될 수 있습니다. 예를 들어 WMCDC 규격 휴대폰에는 추상 컨트롤 모델 컬렉션과 OBEX 컬렉션이 포함된 WHCM 인터페이스 컬렉션이 있을 수 있습니다.
  • WHCM 인터페이스 컬렉션을 열거하지 않도록 USB 제네릭 부모 드라이버를 구성할 수 있습니다. 열거되지 않은 WHCM 인터페이스 컬렉션은 숨겨지지만 제네릭 부모 드라이버는 WHCM 인터페이스 컬렉션에 속하는 UFD(공용 구조체 함수 설명자)의 정보를 사용하여 하위 인터페이스 컬렉션을 그룹화하고 열거합니다.
  • OBEX 컨트롤 모델 인터페이스 컬렉션에 대해 별도의 PDO(물리적 디바이스 개체)를 만들거나 모든 OBEX 컨트롤 모델 인터페이스 컬렉션에 대해 단일 PDO를 만들도록 USB 제네릭 부모 드라이버를 구성할 수 있습니다.
  • UFD의 인터페이스 번호 목록에는 간격이 있을 수 있습니다. 즉, UFD의 인터페이스 번호는 연속되지 않은 인터페이스를 참조할 수 있습니다. 예를 들어 인터페이스가 연속적이고 순차적인 숫자가 있어야 하는 IAD(USB 인터페이스 연결 설명자)의 경우 이러한 유형의 번호 매기기는 유효하지 않습니다.
  • UFD에는 관련 오디오 인터페이스 컬렉션이 포함될 수 있습니다.
  • CDC 및 WMCDC 인터페이스 컬렉션의 하드웨어 ID(ID)에는 인터페이스 하위 클래스가 포함되어야 합니다. 하드웨어 ID에 인터페이스 번호를 지정하는 MI_%02X 접미사가 포함된 다른 USB 인터페이스에는 인터페이스 하위 클래스에 대한 정보가 포함되지 않습니다. 하위 클래스 정보는 공급업체가 설명자 레이아웃에서 인터페이스의 위치에 의존하여 컬렉션에 로드할 드라이버를 결정하는 대신 특정 인터페이스 컬렉션에 대한 하드웨어 ID 일치를 INF 파일에 제공할 수 있도록 하드웨어 ID에 포함됩니다. 하드웨어 ID의 하위 클래스 정보를 사용하면 WMCDC 인터페이스 컬렉션을 관리하는 현재 공급업체에서 제공하는 드라이버에서 사용자 모드 드라이버와 같은 대안으로 점진적인 마이그레이션 경로를 사용할 수 있습니다. USB 인터페이스 하드웨어 ID의 형식을 지정하는 방법에 대한 일반적인 설명은 USB 디바이스의 식별자를 참조 하세요.

CDC 및 WMCDC 제어 모델

CDC 및 WMCDC 제어 모델 섹션에서는 Microsoft Windows 운영 체제에서 지원되는 인터페이스 컬렉션의 속성을 설명합니다. 각 설명에는 무엇보다도 USB 일반 부모 드라이버가 인터페이스 컬렉션에 대해 생성하는 하드웨어 및 디바이스 ID(ID) 목록이 포함됩니다.

Windows에서 지원하는 대부분의 인터페이스 컬렉션은 CDC(통신 디바이스 클래스) 및 WMCDC(무선 모바일 통신 디바이스 클래스)에 속하는 제어 모델에 해당하지만 운영 체제는 레거시 오디오 및 비디오 인터페이스 컬렉션과 MCPC(Mobile Computing Promotion Consortium)가 정의하는 인터페이스 컬렉션도 지원합니다.

이 섹션에서 설명하는 인터페이스 컬렉션은 다음과 같습니다.

오디오 클래스 인터페이스

CDC 및 WMCDC 디바이스에서 발생하는 USB 오디오 디바이스 클래스 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 오디오 디바이스에 대한 유니버설 직렬 버스 디바이스 클래스 정의, 버전 1.0.
클래스 인터페이스 컬렉션의 모든 인터페이스는 오디오 디바이스 클래스(0x01)에 속해야 합니다.
Subclass 인터페이스 컬렉션의 각 인터페이스는 컬렉션의 첫 번째 인터페이스와 다른 서브클래스를 가져야 합니다.
프로토콜 없음(0x00).
Enumerated 예.
관련 인터페이스 스트리밍 서브클래스(0x02)에 속하는 연속 인터페이스가 0개 이상입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&MI_%02x
USB\Vid_%04x&Pid_%04x&MI_%02x

오디오 인터페이스 컬렉션의 하드웨어 ID에는 인터페이스 클래스 관련 정보가 포함되어 있지 않습니다.
호환 ID USB\Class_01&SubClass_01&Prot_00
USB\Class_01&SubClass_01
USB\Class_01

오디오 인터페이스 컬렉션에 호환되는 ID 형식에는 인터페이스 클래스, 인터페이스 서브클래스 및 프로토콜에 대한 포함된 정보가 포함되어 있습니다. CDC 또는 WMCDC 디바이스의 오디오 인터페이스 컬렉션의 경우 인터페이스 클래스는 01이고 서브클래스는 01이고 프로토콜은 00입니다.

CDC 추상 제어 모델

ACM(추상 제어 모델)에는 두 가지 버전이 있습니다. 원래 버전은 USB CDC(Communication Device Class) 사양에 정의되어 있습니다. USB WMCDC(무선 통신 디바이스 클래스) 사양에는 ACM의 확장된 정의가 포함되어 있습니다.

WMCDC 사양을 준수하는 인터페이스 컬렉션은 이 페이지에 설명되어 있습니다.

CDC 사양을 준수하는 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 통신 디바이스에 대한 유니버설 직렬 버스 클래스 정의, 버전 1.1, 섹션 3.6.2.
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02).
마스터 인터페이스의 하위 클래스 ACM(0x02).
프로토콜 임의 값
Enumerated 예.
관련 인터페이스 하나의 데이터 클래스 인터페이스와 UFD(Union 함수 설명자)가 참조하는 선택적 오디오 클래스 인터페이스입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_02&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_02
USB\Vid_%04x&Pid_%04x&Cdc_02&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_02
호환 ID USB\Class_02&SubClass_02&Prot_%02X
USB\Class_02&SubClass_02
USB\Class_02
특수 처리 UFD는 ACM 인터페이스 컬렉션과 독립적으로 열거된 오디오 인터페이스 컬렉션을 참조할 수 있습니다.

CDC ATM 네트워킹 제어 모델

USB CDC ATM ANCM(네트워킹 제어 모델) 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 통신 디바이스에 대한 유니버설 직렬 버스 클래스 정의, 버전 1.1, 섹션 3.8.3
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02)
마스터 인터페이스의 하위 클래스 ANCM(0x07)
프로토콜 None(0x00)
Enumerated
관련 인터페이스 UFD(Union Functional Descriptor)에서 참조하는 하나의 데이터 클래스 인터페이스
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_07&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_07
USB\Vid_%04x&Pid_%04x&Cdc_07&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_07
호환 ID USB\Class_02&SubClass_07&Prot_00
USB\Class_02&SubClass_07
USB\Class_02
특수 처리 None

CDC CAPI 제어 모델

USB CDC COMMON ISDN API(CAPI) 제어 모델 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 통신 디바이스에 대한 유니버설 직렬 버스 클래스 정의, 버전 1.1, 섹션 3.7.2
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02)
마스터 인터페이스의 하위 클래스 CAPI(0x05)
프로토콜 None(0x00)
Enumerated
관련 인터페이스 UFD(Union 함수 설명자)가 참조하는 하나의 데이터 클래스 인터페이스입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_05&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_05
호환 ID USB\Class_02&SubClass_05&Prot_00
USB\Class_02&SubClass_05
특수 처리 None

CDC 직접 회선 제어 모델

USB CDC DLCM(직접 회선 제어 모델) 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 통신 디바이스에 대한 유니버설 직렬 버스 클래스 정의, 버전 1.1, 섹션 3.6.1.
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02).
마스터 인터페이스의 하위 클래스 DLCM(0x01).
프로토콜 없음(0x00).
Enumerated 예.
관련 인터페이스 UFD(Union 함수 설명자)가 참조하는 오디오 클래스 또는 공급업체 정의 인터페이스입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_01&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_01
USB\Vid_%04x&Pid_%04x&Cdc_01&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_01
호환 ID USB\Class_02&SubClass_01&Prot_00
USB\Class_02&SubClass_01``USB\Class_02
특수 처리 UFD는 DLCM 인터페이스 컬렉션과 독립적으로 열거된 오디오 클래스 인터페이스 컬렉션을 참조합니다.

CDC 이더넷 네트워킹 제어 모델

USB CDC 이더넷 ENCM(네트워킹 제어 모델) 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 통신 디바이스에 대한 유니버설 직렬 버스 클래스 정의, 버전 1.1, 섹션 3.8.2.
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02).
마스터 인터페이스의 하위 클래스 ENCM(0x06).
프로토콜 없음(0x00).
Enumerated 예.
관련 인터페이스 UFD(Union 함수 설명자)가 참조하는 하나의 데이터 클래스 인터페이스입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_06&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_06
USB\Vid_%04x&Pid_%04x&Cdc_06&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_06
호환 ID USB\Class_02&SubClass_06&Prot_00
USB\Class_02&SubClass_06
USB\Class_02
특수 처리 이 컨트롤 모델의 호환 ID는 Microsoft에서 제공하는 INF 파일에서 일치합니다. 운영 체제가 공급업체에서 제공하는 INF 파일에서 하드웨어 ID 중 하나에 대한 일치 항목을 찾지 못하면 시스템은 자동으로 네이티브 NDIS 미니포트 드라이버를 로드하여 인터페이스 컬렉션을 관리합니다.

CDC 다중 채널 ISDN 제어 모델

USB CDC 다중 채널 ISDN 제어 모델(MCCM) 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 통신 디바이스에 대한 유니버설 직렬 버스 클래스 정의, 버전 1.1, 섹션 3.7.1
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02)
마스터 인터페이스의 하위 클래스 MCCM(0x04)
프로토콜 None(0x00)
Enumerated
관련 인터페이스 공용 구조체 기능 설명자(UFD)가 참조하는 여러 데이터 클래스 인터페이스입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_04&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_04
USB\Vid_%04x&Pid_%04x&Cdc_04&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_04
호환 ID USB\Class_02&SubClass_04&Prot_00
USB\Class_02&SubClass_04
USB\Class_02
특수 처리 None

CDC 전화 제어 모델

USB CDC TCM(전화 제어 모델) 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 통신 디바이스에 대한 유니버설 직렬 버스 클래스 정의, 버전 1.1, 섹션 3.6.3.
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02).
마스터 인터페이스의 SubClass TCM(0x03).
프로토콜 임의 값
Enumerated 예.
관련 인터페이스 UFD(Union 함수 설명자)가 참조하는 오디오 클래스 인터페이스입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_03&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_03
USB\Vid_%04x&Pid_%04x&Cdc_03&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_03
호환 가능한 ID USB\Class_02&SubClass_03&Prot_%02X
USB\Class_02&SubClass_03
USB\Class_02
특수 처리 UFD는 TCM 인터페이스 컬렉션과 독립적으로 열거된 오디오 클래스 인터페이스 컬렉션을 참조할 수 있습니다.

MCPC 공급업체 고유 인터페이스

MCPC(모바일 컴퓨팅 프로모션 컨소시엄)는 WMCDC(무선 모바일 통신 디바이스 클래스) 사양이 공급업체 고유 CDC 디바이스에 대한 형식을 제공하기 전에 인터페이스 컬렉션에 대한 형식을 정의했습니다. 따라서 MCPC 인터페이스 컬렉션은 WMCDC 표준을 준수하지 않습니다.

그러나 WMCDC를 사용하는 경우 USB 제네릭 부모 드라이버는 MCPC 인터페이스 컬렉션을 열거할 수 있습니다. MCPC 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 MCPC(모바일 컴퓨팅 프로모션 컨소시엄) GL-004 사양
클래스 CDC(0x02)
Subclass 0x88
프로토콜 None(0x00)
Enumerated
관련 인터페이스 UFD(Union 함수 설명자)가 참조하는 0개 이상의 데이터 클래스 인터페이스
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_88&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_88
USB\Vid_%04x&Pid_%04x&Cdc_88&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_88
호환 ID USB\Class_02&SubClass_88&Prot_00
USB\Class_02&SubClass_88
USB\Class_02
특수 처리 None

비디오 클래스 인터페이스

CDC 및 WMCDC 디바이스에서 발생하는 USB 비디오 디바이스 클래스 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 비디오 디바이스에 대한 유니버설 직렬 버스 디바이스 클래스 정의, 버전 1.0.
클래스 비디오(0x0E).
Subclass 비디오 컨트롤(0x01).
프로토콜 없음(0x00).
Enumerated 예.
관련 인터페이스 스트리밍 서브클래스(0x02)에 속하는 연속 인터페이스가 0개 이상입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&MI_%02x
USB\Vid_%04x&Pid_%04x&MI_%02x
호환 ID USB\Class_0E&SubClass_01&Prot_00
USB\Class_0E&SubClass_01
USB\Class_0E
특수 처리 비디오 클래스 인터페이스 컬렉션은 CDC 디바이스에서 특수한 처리를 받습니다. 비 CDC 디바이스에서 비디오 클래스 인터페이스 컬렉션은 IAD(인터페이스 연결 설명자)에 의해 정의됩니다. CDC 디바이스에서 비디오 클래스 인터페이스 컬렉션은 UFD(공용 구조체 기능 설명자)에 의해 정의됩니다.

WMCDC 추상 제어 모델

ACM(추상 제어 모델)에는 두 가지 버전이 있습니다. 원래 버전은 USB CDC(Communication Device Class) 사양에 정의되어 있습니다. USB WMCDC(무선 통신 디바이스 클래스) 사양에는 ACM의 확장된 정의가 포함되어 있습니다. 팩스/모뎀 함수를 포함하는 ACM 컬렉션은 원래 CDC ACM 정의가 아닌 ACM의 WMCDC 정의를 사용해야 합니다.

CDC 사양을 준수하는 인터페이스 컬렉션은 이 페이지에 설명되어 있습니다.

WMCDC 사양을 준수하는 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 무선 모바일 통신 디바이스에 대한 유니버설 직렬 버스 CDC 서브클래스 사양, 버전 1.0, 섹션 6.2.
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02).
마스터 인터페이스의 하위 클래스 ACM(0x02).
프로토콜 컬렉션에서 AT 명령 집합 프로토콜을 사용하는 경우 호환 ID에 포함된 프로토콜 값은 0x01. 컬렉션에서 WMCDC 사양에서 설명하는 프로토콜 중 하나를 사용하는 경우 호환 ID에 포함된 프로토콜 값은 0x06 또는 0xFE 통해 0x2.
Enumerated 예.
관련 인터페이스 UFD(Union 함수 설명자)가 참조하는 하나의 데이터 클래스 인터페이스입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_Modem&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_Modem
USB\Vid_%04x&Pid_%04x&Cdc_Modem&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_Modem
호환 ID USB\Class_02&SubClass_Modem&Prot_%02X
USB\Class_02&SubClass_Modem
USB\Class_02
특수 처리 UFD는 ACM 인터페이스 컬렉션과 독립적으로 열거된 오디오 인터페이스 컬렉션을 참조할 수 있습니다.

인터페이스 컬렉션은 WMCDC 사양의 섹션 6.2에 지정된 특수 설명자 및 엔드포인트 요구 사항을 준수해야 합니다. 인터페이스 컬렉션이 WMCDC 요구 사항을 준수하지 않지만 인터페이스가 CDC 요구 사항을 준수하는 경우 USB 제네릭 부모 드라이버는 CDC 형식으로 인터페이스 컬렉션 및 일반 하드웨어 ID를 열거합니다.

이 컨트롤 모델의 호환 ID는 Microsoft에서 제공하는 INF 파일에서 일치합니다. 운영 체제가 공급업체에서 제공하는 INF 파일에서 하드웨어 ID 중 하나에 대한 일치 항목을 찾지 못하는 경우 프로토콜 코드가 0xFE 않는 한 시스템은 네이티브 TAPI(전화 통신 애플리케이션 프로그래밍 인터페이스) 모뎀 필터 드라이버를 자동으로 로드하여 모뎀 함수를 관리하고 적절한 TAPI 레지스트리 설정을 설정합니다. 프로토콜 코드가 0xFE 경우 공급업체는 TAPI 레지스트리 설정을 올바르게 채우기 위해 디바이스 또는 클래스 공동 설치 관리자를 제공해야 합니다.

WMCDC 디바이스 관리 모델

USB WMCDC DMM(디바이스 관리 모델) 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 무선 모바일 통신 디바이스에 대한 유니버설 직렬 버스 CDC 하위 클래스 사양, 버전 1.0, 섹션 6.6.
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02).
마스터 인터페이스의 하위 클래스 DMM(0x09).
프로토콜 임의 값
Enumerated 예.
관련 인터페이스 없음
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_09&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_09
USB\Vid_%04x&Pid_%04x&Cdc_09&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_09
호환 ID USB\Class_02&SubClass_09&Prot_%02X
USB\Class_02&SubClass_09
USB\Class_02
특수 처리 이 컨트롤 모델은 UFD(공용 구조체 기능 설명자)를 사용하지 않습니다.

WMCDC 모바일 직접 회선 모델

USB WMCDC MDLM(모바일 직접 회선 모델) 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 무선 모바일 통신 디바이스에 대한 유니버설 직렬 버스 CDC 서브클래스 사양, 버전 1.0, 섹션 6.7
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02)
마스터 인터페이스의 하위 클래스 MDLM(0x0A)
프로토콜 모두
Enumerated
관련 인터페이스 UFD(Union 함수 설명자)가 참조하는 하나 이상의 데이터 클래스 인터페이스
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0A&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0A
USB\Vid_%04x&Pid_%04x&Cdc_0A&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_0A
호환 ID USB\Class_02&SubClass_0A&Prot_%02X
USB\Class_02&SubClass_0A
USB\Class_02
특수 처리 없음

WMCDC OBEX 제어 모델(여러 PDO)

OBEX(개체 교환 프로토콜) 제어 모델 인터페이스 컬렉션을 열거하는 두 가지 방법이 있습니다. USB 제네릭 부모 드라이버는 모든 OBEX 인터페이스를 그룹화하고 모든 OBEX 인터페이스에 대해 단일 PDO(물리적 디바이스 개체)를 만들거나 부모 드라이버가 각 OBEX 인터페이스에 대해 별도의 PDO를 만들 수 있습니다.

USB 제네릭 부모 드라이버가 각 OBEX 인터페이스에 별도의 PDO를 할당하는 경우 PDO에는 다음과 같은 속성이 있습니다.

속성 설명
참조 무선 모바일 통신 디바이스에 대한 유니버설 직렬 버스 CDC 서브클래스 사양, 버전 1.0, 섹션 6.5.
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02).
마스터 인터페이스의 하위 클래스 OBEX(0x0B).
프로토콜 없음(0x00).
Enumerated 예.
관련 인터페이스 UFD(Union 함수 설명자)가 참조하는 하나의 데이터 클래스 인터페이스입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0B&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0B
USB\Vid_%04x&Pid_%04x&Cdc_0B&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_0B
호환 ID USB\Class_02&SubClass_0B&Prot_00
USB\Class_02&SubClass_0B
USB\Class_02
특수 처리 복합 디바이스를 관리하는 USB 일반 부모 드라이버의 인스턴스와 연결된 레지스트리 설정은 OBEX 인터페이스가 단일 PDO 또는 여러 PDO로 관리되는지 여부를 결정합니다.

WMCDC OBEX 제어 모델(단일 PDO)

OBEX(개체 교환 프로토콜) 컨트롤 모델 인터페이스 컬렉션을 열거하는 두 가지 방법이 있습니다. USB 제네릭 부모 드라이버는 모든 OBEX 인터페이스를 그룹화하고 모든 OBEX 인터페이스에 대해 단일 PDO(물리적 디바이스 개체)를 만들거나 부모 드라이버가 각 OBEX 인터페이스에 대해 별도의 PDO를 만들 수 있습니다.

USB 제네릭 부모 드라이버가 모든 OBEX 인터페이스에 단일 PDO를 할당하는 경우 PDO에는 다음과 같은 속성이 있습니다.

속성 설명
참조 무선 모바일 통신 디바이스에 대한 유니버설 직렬 버스 CDC 서브클래스 사양, 버전 1.0, 섹션 6.5.
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02).
마스터 인터페이스의 하위 클래스 OBEX(0x0B).
프로토콜 없음(0x00).
Enumerated 예.
관련 인터페이스 UFD(Union 함수 설명자)가 참조하는 하나의 데이터 클래스 인터페이스입니다.
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&WPD_OBEX&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&WPD_OBEX
USB\Vid_%04x&Pid_%04x&WPD_OBEX&MI_%02x
USB\Vid_%04x&Pid_%04x&WPD_OBEX
호환 ID USB\Class_02&WPD_OBEX
USB\Class_02
특수 처리 복합 디바이스를 관리하는 USB 일반 부모 드라이버의 인스턴스와 연결된 레지스트리 설정은 OBEX 인터페이스가 단일 PDO 또는 여러 PDO로 관리되는지 여부를 결정합니다. USB 일반 부모 드라이버가 OBEX 인터페이스를 열거하는 방법을 지정하는 레지스트리 설정에 대한 설명은 USB 복합 디바이스의 인터페이스 컬렉션 열거형을 참조 하세요.

WMCDC 무선 핸드셋 제어 모델

USB 제네릭 부모 드라이버가 항상 WHCM(무선 핸드셋 제어 모델) 인터페이스 컬렉션을 열거하지는 않습니다. WHCM 인터페이스 컬렉션을 관리하는 USB 제네릭 부모 드라이버의 인스턴스와 연결된 레지스트리 설정은 USB 제네릭 부모 드라이버가 인터페이스 컬렉션에 대한 PDO(물리적 디바이스 개체)를 만드는지 여부를 결정합니다. USB 일반 부모 드라이버가 WHCM 인터페이스를 열거하는 방법을 지정하는 레지스트리 설정에 대한 설명은 USB 복합 디바이스의 인터페이스 컬렉션 열거형을 참조 하세요.

열거된 WHCM 인터페이스 컬렉션에는 다음과 같은 속성이 있습니다.

속성 설명
참조 무선 모바일 통신 디바이스에 대한 유니버설 직렬 버스 CDC 서브클래스 사양, 버전 1.0, 섹션 6.1.
마스터 인터페이스의 클래스 통신 인터페이스 클래스(0x02).
마스터 인터페이스의 하위 클래스 WHCM(0x08).
프로토콜 없음(0x00).
Enumerated 예.
관련 인터페이스 없음
하드웨어 ID USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_08&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_08
USB\Vid_%04x&Pid_%04x&Cdc_08&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_08
호환 ID USB\Class_02&SubClass_08&Prot_00
USB\Class_02&SubClass_08
USB\Class_02
특수 처리 UFD(Union 함수 설명자)는 논리 핸드셋과 연결된 인터페이스를 식별합니다.

이전 항목의 하드웨어 ID 형식은 다음 규칙을 사용합니다.

  • C 언어 printf 형식은 정수입니다. 예를 들어 "%04x"는 4자리 16진수 정수, "%02x"는 2자리 16진수 정수 등을 의미합니다.
  • "Vid_" 문자열 뒤에 있는 정수는 USB 위원회(<>www.usb.org)가 공급업체에 할당하는 공급업체 코드의 4자리 16진수 표현입니다.
  • "Pid_" 문자열 뒤에 있는 정수는 공급업체가 디바이스에 할당하는 제품 코드의 4자리 16진수 표현입니다.
  • "Rev_" 문자열 뒤에 있는 정수는 디바이스의 수정 번호에 대한 4자리 16진수 표현입니다.
  • "Cdc_" 문자열 뒤에 있는 정수는 인터페이스 하위 클래스입니다.
  • "Prot_" 문자열 뒤에 있는 정수는 프로토콜 번호입니다.
  • "MI_" 문자열 뒤에 있는 정수는 인터페이스 설명자의 bInterfaceNumber 필드에서 추출되는 인터페이스 번호의 2자리 16진수 표현입니다.

IAD가 있는 USB 디바이스의 인터페이스 컬렉션 열거

USB 복합 디바이스의 펌웨어에 IAD(인터페이스 연결 설명자)가 있는 경우 Windows는 각 컬렉션이 단일 디바이스인 것처럼 인터페이스 컬렉션을 열거하고 각 인터페이스 컬렉션에 단일 PDO(물리적 디바이스 개체)를 할당하고 하드웨어 및 호환 ID(ID)를 PDO와 연결합니다. IAD에 대한 자세한 설명은 USB 인터페이스 연결 설명자를 참조 하세요. 이 섹션에서는 IAD와 연결된 인터페이스 컬렉션에 할당된 하드웨어 ID 및 호환 ID(ID)에 대해 설명합니다.

IAD가 있는 USB 디바이스의 하드웨어 ID

USB\VID_v(4)&PID_p(4)&Rev_r(4)&MI_z(2)

USB\VID_v(4)&PID_p(4)&MI_z(2)

이러한 하드웨어 ID에서

  • v(4)는 USB 위원회가 공급업체에 할당하고 디바이스 설명자의 idVendor 필드에서 추출되는 4자리 공급업체 코드입니다.
  • p(4)는 공급업체가 디바이스에 할당하고 디바이스 설명자의 idProduct 필드에서 추출되는 4자리 제품 코드입니다.
  • r(4)은 공급업체가 디바이스에 할당하고 디바이스 설명자의 bcdDevice 필드에서 추출되는 이진 코딩된 10진수 수정 버전에서 4자리 디바이스 릴리스 번호입니다.
  • z(2)는 IAD의 bFirstInterface 필드에서 추출된 두 자리 인터페이스 번호입니다.

IAD가 있는 USB 디바이스의 호환 ID

USB\Class_c(2)&SubClass_s(2)&Prot_p(2)

USB\Class_c(2)&SubClass_s(2)

USB\Class_c(2)

이러한 호환 ID에서 c(2), s(2) 및 p(2)에는 IAD의 bFunctionClass, bFunctionSubClassbFunctionProtocol 필드에서 각각 가져온 값이 포함됩니다.

IAD를 재귀적으로 사용하여 함수의 함수를 바인딩할 수 없습니다. 특히 디바이스의 펌웨어에 IAD 설명자가 있는 경우 일반 부모 드라이버는 USB 복합 디바이스의 인터페이스 컬렉션 열거에 설명된 대로 오디오 디바이스 클래스별로 인터페이스를 그룹화하지 않습니다.

IAD가 없는 오디오 디바이스의 인터페이스 컬렉션 열거

오디오 디바이스의 경우 Windows 운영 체제는 디바이스에 IAD(인터페이스 연결 설명자)가 없는 경우에도 함수와 연결된 인터페이스 그룹(인터페이스 컬렉션)을 열거하고 각 그룹에 단일 PDO(물리적 디바이스 개체)를 할당할 수 있습니다.

인터페이스가 다음 조건을 충족하는 경우 운영 체제는 복합 오디오 디바이스의 인터페이스를 인터페이스 컬렉션으로 그룹화합니다.

  • 인터페이스 컬렉션의 모든 인터페이스는 연속되어야 합니다. 즉, 인터페이스는 펌웨어 메모리에서 서로 인접해야 합니다.
  • 인터페이스 컬렉션의 모든 인터페이스는 오디오 디바이스 클래스에 속해야 합니다. 디바이스 제조업체는 인터페이스 설명자의 bInterfaceClass 필드에 0x01 값을 할당하여 인터페이스가 오디오 디바이스 클래스에 속하도록 지정합니다.
  • 인터페이스 컬렉션의 각 인터페이스는 컬렉션의 첫 번째 인터페이스와 다른 서브클래스를 가져야 합니다. 인터페이스 설명자의 bInterfaceSubClass 필드는 인터페이스의 디바이스 하위 클래스를 지정합니다.

인터페이스가 이러한 세 가지 조건을 모두 충족하지 않는 경우 Windows는 다른 오디오 클래스 인터페이스와 그룹화하지 않고 별도로 열거하려고 시도합니다.

IAD(인터페이스 연결 설명자)가 디바이스 펌웨어에 있는 경우 운영 체제는 특별한 방식으로 오디오 클래스 인터페이스를 그룹화하지 않습니다. IAD 메서드는 항상 USB 인터페이스를 그룹화하는 기본 방법입니다.

이 섹션에서는 인터페이스가 오디오 디바이스 클래스에 속하는 인터페이스 컬렉션에 대해 운영 체제에서 만든 PDO와 연결된 하드웨어 및 호환 ID(ID)에 대해 설명합니다.

IAD가 없는 오디오 디바이스의 하드웨어 ID

USB\VID_v(4)&PID_p(4)&Rev_r(4)&MI_z(2)

USB\VID_v(4)&PID_p(4)&MI_z(2)

이러한 하드웨어 ID에서

  • v(4)는 USB 표준 위원회가 공급업체에 할당하고 디바이스 설명자의 idVendor 필드에서 추출되는 4자리 공급업체 코드입니다.
  • p(4)는 공급업체가 디바이스에 할당하고 디바이스 설명자의 idProduct 필드에서 추출되는 4자리 제품 코드입니다.
  • r(4)은 공급업체가 디바이스에 할당하고 디바이스 설명자의 bcdDevice 필드에서 추출되는 이진 코딩된 10진수 수정 버전에서 4자리 디바이스 릴리스 번호입니다.
  • z(2)는 인터페이스 설명자의 bInterfaceNumber 필드에서 추출된 두 자리 인터페이스 번호입니다.

IAD가 없는 오디오 디바이스의 호환 ID

USB\Class_c(2)&SubClass_s(2)&Prot_p(2)

USB\Class_c(2)&SubClass_s(2)

USB\Class_c(2)

이러한 호환 ID에서 c(2), s(2) 및 p(2)는 각 인터페이스 컬렉션에서 첫 번째 USB 인터페이스 설명자의 bInterfaceClass, bInterfaceSubClassbInterfaceProtocol 필드에서 각각 가져온 값을 포함합니다.