USB 複合デバイス上のインターフェイス コレクション列挙の概要
複合 USB デバイス上のインターフェイスは、コレクション内でグループ化できます。 USB 汎用親ドライバー (Usbccgp.sys) は、4 つの方法でインターフェイス コレクションを列挙することができます。
インターフェイス コレクションの列挙のこれら 4 つのメソッドは、次の方法で階層的に配置されます。
ベンダーによって提供されるコールバック ルーチン
ベンダーが USB 汎用親ドライバー (Usbccgp.sys) にコールバック ルーチンを登録した場合、汎用親ドライバーはコールバック ルーチンに優先順位を付け、コールバック ルーチンが他のメソッドを使用するのではなく、インターフェイスをグループ化できるようにします。 ベンダーによって提供されるコールバック ルーチンを使用したインターフェイス コレクションの列挙について詳しくは、「USB 複合デバイス上のインターフェイス コレクションの列挙」をご覧ください。
共用機能記述子
. ベンダーが USB 汎用親ドライバーで CDC および WMCDC 列挙を有効にしている場合、汎用親ドライバーは共用機能記述子 (UFD) を使用してインターフェイスをコレクションにグループ化します。 有効にすると、このメソッドは、ベンダーによって提供されるコールバック ルーチンを除き、他のすべてのメソッドよりも優先されます。
インターフェイス関連付け記述子
インターフェイス関連付け記述子 (IAD) が存在する場合、USB 汎用親ドライバーは、レガシ メソッドを使用するのではなく、IAD を使用してインターフェイスを常にグループ化します。 ベンダーは IAD を使用してインターフェイス コレクションを定義することをお勧めします。
従来のオーディオ メソッド
USB 汎用親ドライバーは、オーディオ関数用に予約されている従来の手法を使用してインターフェイス コレクションを列挙できます。 デバイスに IAD がある場合、汎用親ドライバーはこのメソッドを使用しません。
複合デバイスのインターフェイス コレクションの列挙のカスタマイズ
一部の USB デバイスには、USB インターフェイス関連付け記述子 (IAD) が記述できないインターフェイス コレクションがあります。 Windows Vista 以降のオペレーティング システムでは、ベンダーは、USB 汎用親ドライバー (Usbccgp.sys) が定義し、デバイスのインターフェイス コレクションを列挙する方法をカスタマイズすることができます。 これは、フィルター ドライバーの列挙コールバック ルーチンを通じて行われます。 コールバック ルーチンは、デバイスのカスタム インターフェイス コレクションを定義する際、汎用親ドライバーを支援します。
汎用親ドライバーでカスタム インターフェイス コレクションを定義するには、複合デバイスのベンダーが次の条件を満たす必要があります。
- 列挙コールバック ルーチン (USBC_START_DEVICE_CALLBACK) を実装します。
- USB デバイス構成インターフェイス (USBC_DEVICE_CONFIGURATION_INTERFACE_V1 の StartDeviceCallback メンバー) のコールバック ルーチンへのポインターを指定します。
- 複合デバイスのデバイス 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 の Interface メンバー内のインターフェイスへのポインターを返します。
列挙コールバック ルーチンは、インターフェイス コレクションを記述する機能記述子 (USBC_FUNCTION_DESCRIPTOR) の配列へのポインターを返す必要があります。 各機能記述子には、インターフェイス コレクションを記述するインターフェイス記述子 (USB_INTERFACE_DESCRIPTOR) の配列が含まれています。 コールバック ルーチンは、非ページ プールから機能記述子とインターフェイス記述子の両方を割り当てる必要があります。 汎用親ドライバーは、このメモリを解放します。 コールバック ルーチンは、各 USB_INTERFACE_DESCRIPTOR の NumberOfInterfaces メンバーがインターフェイス コレクション内のインターフェイスの数を正確に報告するようにする必要があります。
汎用親ドライバーは、各機能記述子の物理デバイス オブジェクト (PDO) を作成します。
USB デバイス構成インターフェイスと列挙コールバック ルーチンは、汎用親ドライバー ルーチンに要約されます。
USB 汎用親ドライバーの読み込みメカニズム
複合デバイスが「USB 複合デバイスの列挙」で説明されている要件を満たしている場合、オペレーティング システムは、デバイスが複合であることを示す、USB\COMPOSITE
の互換性のある ID を生成します。 互換性のある ID は Usb.inf で一致を生成し、オペレーティング システムは、ベンダーによって提供される INF ファイルの助けを借りずに、USB 汎用親ドライバーを自動的に読み込みます。
ただし、この既定のメカニズムは、インターフェイス コレクションのカスタム列挙を必要とする複合デバイスでは機能しません。既定のメカニズムでは、ベンダーによって提供される必須のフィルター ドライバーがシステムによって読み込まれないためです。 列挙コールバック ルーチン メカニズムを機能させるには、USB 汎用親が複合デバイスのインターフェイス コレクションを列挙するとき、USB デバイス構成インターフェイスを公開するフィルター ドライバーが既に読み込まれている必要があります。 この場合、複合デバイスのベンダーが、複合デバイスのデバイス ID に一致する INF ファイルをインストールし、USB 汎用親ドライバーとフィルター ドライバーの両方を明示的に読み込む必要があります。
ワイヤレス モバイル コミュニケーション デバイス クラスのサポート
Windows Vista では、USB 汎用親ドライバー (Usbccgp.sys) は、ユニバーサル シリアル バス (USB) 通信デバイス クラス (CDC) と USB ワイヤレス モバイル通信デバイス クラス (WMCDC) に含まれているデバイスのサポートを提供します。
USB ワイヤレス モバイル通信デバイス クラス (WMCDC) 仕様では、デバイスが USB ポートに接続されている場合、ホストとワイヤレス モバイル デバイス (携帯電話など) 間の接続、制御、およびコンテンツ交換の標準が確立されます。 WMCDC は通信デバイス クラス (CDC) の拡張機能であり、幅広い通信およびネットワーク デバイスが含まれます。 このセクションでは、Windows オペレーティング システムで CDC および WMCDC デバイスをサポートするアーキテクチャについて説明します。
WMCDC デバイスは、論理ハンドセットにグループ化された複数の機能で構成されます。 ほとんどの WMCDC デバイスには単一の論理ハンドセットがありますが、デバイスには複数の論理ハンドセットが存在する可能性があります。 論理ハンドセットには、通常、データ/FAX モデム、オブジェクト ストア、通話制御機能などの機能が含まれます。 論理ハンドセットには、USB オーディオ クラスの仕様、USB ヒューマン インプット デバイス (HID) クラスの仕様、USB ビデオ クラスの仕様など、他の USB 仕様で定義されているサポート機能も含まれる場合があります。
Windows WMCDC アーキテクチャは、ネイティブ Windows ドライバーを使用して WMCDC デバイスの機能を管理します。 たとえば、Windows テレフォニー アプリケーション プログラム インターフェイス (TAPI) サブシステムを使用して、デバイスの音声およびデータ/FAX モデム機能を管理し、デバイスのイーサネット LAN 機能を管理する Windows ネットワーク ドライバー インターフェイス仕様 (NDIS) サブシステムを使用できます。 さらに、WinUSB (Winusb.sys) を使用して、ユーザー モード ソフトウェアでオブジェクト交換プロトコル (OBEX) 関数などの一部の機能を管理できます。
次の図は、WMCDC デバイスのドライバー スタックの例を示しています。
上の図では、WMCDC デバイスには、OBEX 関数とモデム関数という単一の論理ハンドセットが含まれています。 ベンダーによって提供される INF ファイルは、ネイティブ Windows ドライバーを読み込み、モデムを管理します。 OBEX 関数は、ユーザー モード ドライバー フレームワーク (UMDF) で実行される、ベンダーによって提供されるユーザー モード ドライバーによって管理されます。 ユーザー モード ドライバーは、Windows ポータブル デバイス (WPD) プロトコルを使用して、ユーザー アプリケーションと、USB スタックと通信するために WinUSB for Developers の概要でエクスポートするインターフェイスと通信します。 一般に、ベンダーによって提供される INF ファイルは、Winusb.sys を使用するインターフェイス コレクションごとに Winusb.sys の個別のインスタンスを読み込みます。
レジストリの設定
USB スタックは WMCDC を自動的にサポートしません。 Usbccgp.sys のインスタンスを読み込む INF ファイルを指定する必要があります。 INF ファイルには、Usbccgp.sys に関連付けられているソフトウェア キーの EnumeratorClass レジストリ値を、0x02、0x00、0x00 の 3 つの数値から構成される 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 に割り当てる必要がある値は、INF ファイルで 16 進数のペアで表される 3 つの 1 バイトバイナリ値 (02、00、00) から構成されます。 これらの 3 つの数値は、USB 実装者フォーラムが CDC デバイス クラス、CDC デバイス サブクラス、CDC デバイス プロトコルにそれぞれ割り当てた値に対応します。
次のトピックでは、WMCDC について詳しく説明します。
WMCDC でのインターフェイス コレクションの列挙
USB ワイヤレス モバイル通信デバイス クラス (WMCDC) は、USB 通信デバイス クラス (CDC) のサブクラスです。 WMCDC 仕様は拡張されますが、インターフェイス コレクションを定義するための CDC ガイドラインは大幅には変更されません。 特に、WMCDC デバイスは、インターフェイス コレクションを定義するための CDC ガイドラインに準拠している必要があります。
CDC インターフェイス コレクションには、通信インターフェイス クラス (bInterfaceClass = 0x02
) またはデータ インターフェイス クラス (bInterfaceClass = 0x0A
) に属するマスター インターフェイス (USB_INTERFACE_DESCRIPTOR) が含まれています。 マスター インターフェイスが通信インターフェイス クラス (一般的な状況) に属している場合、マスター インターフェイス (bInterfaceSubClass) のサブクラスは CDC コントロール モデルを指定します。 コントロール モデルは、インターフェイス コレクションに含まれているインターフェイスの種類を示します。 USB Implementers Forum で定義されているコントロール モデルの説明については、CDC の仕様と WMCDC の仕様をご覧ください。
インターフェイス コレクションのマスター インターフェイスの後、共用機能記述子 (UFD) を含む必須クラス固有の機能記述子のセットが続きます。 UFD には、コレクションに属するインターフェイスの番号が一覧表示されます。 UFD の bMasterInterface フィールドには、マスター インターフェイスの番号が含まれています。 0 個以上 の bSubordinateInterface フィールドには、コレクション内の他の (下位) インターフェイスの番号が含まれています。
ほとんどの種類のコントロール モデルでは、USB 汎用親ドライバー (Usbccgp.sys) によって、UFD ごとに 1 つの物理デバイス オブジェクト (PDO) が作成されます。 ただし、一部のコントロール モデルには、オーディオ インターフェイスが属するインターフェイス コレクションとは別に汎用親ドライバーが列挙するオーディオ インターフェイスが含まれています。 オーディオ インターフェイスは、インターフェイス コレクションの UFD の下位インターフェイス (bSubordinateInterface) の一覧に表示されますが、汎用親ドライバーはオーディオ インターフェイス用に別個の PDO を作成します。 オーディオ インターフェイスの PDO と、オーディオ インターフェイスが属するインターフェイス コレクションの PDO のどちらも、デバイス オブジェクト ツリー内の親複合デバイスの機能デバイス オブジェクト (FDO) のすぐ上にあります。 オーディオ インターフェイスの PDO は、インターフェイス コレクションの子ではありません。
レジストリで列挙特性を構成できるコントロール モデルには、論理ハンドセットを定義するワイヤレス ハンドセット コントロール モデル (WHCM) と Object Exchange Protocol (OBEX) コントロール モデルの 2 つがあります。 これら 2 つのコントロール モデルの列挙特性を構成するには、Usbccgp.sys のインスタンスを読み込み、その Usbccgp.sys のインスタンスのソフトウェア キーに CdcFlags の値を設定する INF ファイルを提供する必要があります。 CdcFlags の構成オプションを次の表に示します。
CdcFlags ビット | 0 に設定されたビット | 1 に設定されたビット |
---|---|---|
0 (マスク = 0x00000001) | USB 汎用親ドライバーは、OBEX インターフェイスごとに別個の PDO を作成します。 | USB 汎用親ドライバーは、すべての OBEX インターフェイスに対して 1 つの PDO を作成します。 |
1 (マスク = 0x00000010) | USB 汎用親ドライバーでは、WHCM インターフェイス (論理ハンドセット) 用の PDO は作成されません。 これらのインターフェイスは、デバイス オブジェクト ツリーの観点からは非表示のままになります。 | USB 汎用親ドライバーは、OBEX インターフェイスごとに 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 構成を示しています。
前の図のワイヤレス ハンドセット コントロール モデル (WHCM) インターフェイス コレクションには、3 つの下位インターフェイス コレクション (bSubordinateInterface)、つまり 2 つの OBEX コレクションとモデム コレクションが含まれています。 CdcFlags のビット 0 は 0 であるため、USB 汎用親ドライバーは WHCM インターフェイス コレクションの PDO を作成しません。 CdcFlags のビット 1 は 0 であるため、USB 汎用親ドライバーは OBEX インターフェイス コレクションごとに個別の PDO を生成します。
次の図は、CdcFlags のビット 0 とビット 1 の両方が設定される場合の PDO 構成を示しています。
CdcFlags のビット 0 が 1 に設定されているため、USB 汎用親ドライバーは WHCM インターフェイス コレクションの PDO を作成します。 CdcFlags のビット 1 は 1 に設定されているため、USB 汎用親ドライバーは 2 つの OBEX コレクションをグループ化し、両方の OBEX コレクションに対して 1 つの PDO を生成します。
カーネル レベルで単一の PDO を持つ OBEX コレクションを表し、ユーザー モード ドライバー内の個々の OBEX コレクションを区別することができます。 Windows ポータブル デバイス (WPD) プロトコルは、すべての OBEX 関数がカーネル レベルで 1 つの PDO にグループ化されている場合に、異なる OBEX 関数間においてユーザー レベルでデータ ストリームを多重化するのに役立ちます。
次の INF ファイルの例では、USB 汎用親ドライバーを読み込んで WMCDC デバイスを管理し、論理ハンドセット用の PDO を作成して、論理ハンドセット内のすべての OBEX コレクションに対して 1 つの 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 準拠の電話には WHCM インターフェイス コレクションを含めることができます。このコレクションには、抽象コントロール モデル コレクションと OBEX コレクションが含まれています。
- WHCM インターフェイス コレクションを列挙しないよう USB 汎用親ドライバーを構成できます。 再列挙されていない WHCM インターフェイス コレクションは非表示のままになりますが、汎用親ドライバーは、WHCM インターフェイス コレクションに属する共用関数記述子 (UFD) の情報を使用して、下位インターフェイス コレクションをグループ化および列挙します。
- USB 汎用親ドライバーを構成して、OBEX コントロール モデル インターフェイス コレクション用に個別の物理デバイス オブジェクト (PDO) を作成したり、すべての OBEX コントロール モデル インターフェイス コレクションに対して単一の PDO を作成したりできます。
- UFD 内のインターフェイス番号の一覧にギャップが生じる可能性があります。 つまり、UFD のインターフェイス番号は、連続していないインターフェイスを参照できます。 この種類の番号付けは無効です。たとえば、USB インターフェイス関連付け記述子 (IAD) では、インターフェイスが連続していている必要があり、連続する番号が必要です。
- UFD には、関連するオーディオ インターフェイス コレクションを含めることができます
- CDC および WMCDC インターフェイス コレクションのハードウェア識別子 (ID) には、インターフェイス サブクラスを含める必要があります。 ハードウェア ID にインターフェイス番号を指定する MI_%02X サフィックスが含まれている他の USB インターフェイスには、インターフェイス サブクラスに関する情報は含まれていません。 サブクラス情報はハードウェア ID に含まれているため、ベンダーは、記述子レイアウト内のインターフェイスの位置に依存してコレクションに読み込むドライバーを決定するのではなく、特定のインターフェイス コレクションに対してハードウェア ID の一致を持つ INF ファイルを提供することができます。 ハードウェア ID のサブクラス情報を使用すると、WMCDC インターフェイス コレクションを管理する、ベンダーによって提供される現在のドライバーから、ユーザー モード ドライバーなどの代替ドライバーへの段階的な移行パスも可能になります。 USB インターフェイスのハードウェア ID の形式の一般的な説明については、「USB デバイスの識別子」をご覧ください。
CDC および WMCDC コントロール モデル
「CDC および WMCDC コントロール モデル」セクションでは、Microsoft Windows オペレーティング システムでサポートされているインターフェイス コレクションのプロパティについて説明します。 各説明には、特に、USB 汎用親ドライバーがインターフェイス コレクション用に生成するハードウェア識別子とデバイス識別子 (ID) の一覧が含まれています。
Windows がサポートするインターフェイス コレクションの大部分は、通信デバイス クラス (CDC) とワイヤレス モバイル通信デバイス クラス (WMCDC) に属するコントロール モデルに対応していますが、オペレーティング システムでは、従来のオーディオおよびビデオ インターフェイス コレクションと、Mobile Computing Promotion Consortium (MCPC) が定義するインターフェイス コレクションもサポートされています。
このセクションで説明するインターフェイス コレクションは次のとおりです。
オーディオ クラス インターフェイス
CDC および WMCDC デバイスで発生する USB オーディオ デバイス クラス インターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | オーディオ デバイスのユニバーサル シリアル バス デバイス クラス定義、バージョン 1.0。 |
クラス | インターフェイス コレクション内のすべてのインターフェイスは、オーディオ デバイス クラス (0x01) に属している必要があります。 |
サブクラス | インターフェイス コレクション内の各インターフェイスには、コレクション内の最初のインターフェイスとは異なるサブクラスが必要です。 |
Protocol | なし (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 Abstract Control Model
抽象コントロール モデル (ACM) には 2 つのバージョンがあります。 元のバージョンは、USB 通信デバイス クラス (CDC) 仕様で定義されています。 USB ワイヤレス モバイル通信デバイス クラス (WMCDC) 仕様には、ACM の拡張定義が含まれています。
WMCDC 仕様に準拠するインターフェイス コレクションについては、このページで説明します。
CDC 仕様に準拠するインターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | 通信デバイスのユニバーサル シリアル バス クラス定義、バージョン 1.1、セクション 3.6.2。 |
マスター インターフェイスのクラス | 通信インターフェイス クラス (0x02)。 |
マスター インターフェイスのサブクラス | ACM (0x02)。 |
Protocol | 任意。 |
Enumerated | はい。 |
関連インターフェイス | 共用機能記述子 (UFD) が参照する 1 つのデータ クラス インターフェイスとオプションのオーディオ クラス インターフェイス。 |
ハードウェア 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) |
Protocol | なし (0x00) |
Enumerated | はい |
関連インターフェイス | 共用機能記述子 (UFD) によって参照される 1 つのデータ クラス インターフェイス |
ハードウェア 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 |
特殊な処理 | なし |
CDC CAPI コントロール モデル
USB CDC Common ISDN API (CAPI) コントロール モデル インターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | 通信デバイスのユニバーサル シリアル バス クラス定義、バージョン 1.1、セクション 3.7.2 |
マスター インターフェイスのクラス | 通信インターフェイス クラス (0x02) |
マスター インターフェイスのサブクラス | CAPI (0x05) |
Protocol | なし (0x00) |
Enumerated | はい |
関連インターフェイス | 共用機能記述子 (UFD) が参照する 1 つのデータ クラス インターフェイス |
ハードウェア 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 |
特殊な処理 | なし |
CDC ダイレクト ライン コントロール モデル
USB CDC ダイレクト ライン コントロール モデル (DLCM) インターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | 通信デバイスのユニバーサル シリアル バス クラス定義、バージョン 1.1、セクション 3.6.1。 |
マスター インターフェイスのクラス | 通信インターフェイス クラス (0x02)。 |
マスター インターフェイスのサブクラス | DLCM (0x01)。 |
Protocol | なし (0x00)。 |
Enumerated | はい。 |
関連インターフェイス | 共用機能記述子 (UFD) が参照するオーディオ クラスまたはベンダー定義インターフェイス。 |
ハードウェア 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 は、ACM インターフェイス コレクションとは別に列挙されるオーディオ クラス インターフェイス コレクションを参照します。 |
CDC イーサネット ネットワーク コントロール モデル
USB CDC イーサネット ネットワーク コントロール モデル (ENCM) インターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | 通信デバイスのユニバーサル シリアル バス クラス定義、バージョン 1.1、セクション 3.8.2。 |
マスター インターフェイスのクラス | 通信インターフェイス クラス (0x02)。 |
マスター インターフェイスのサブクラス | ENCM (0x06)。 |
Protocol | なし (0x00)。 |
Enumerated | はい。 |
関連インターフェイス | 共用機能記述子 (UFD) が参照する 1 つのデータ クラス インターフェイス |
ハードウェア 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 は、マイクロソフトによって提供される INF ファイルに一致します。 ベンダーによって指定された INF ファイル内のいずれかのハードウェア ID に一致するものが見つからない場合、システムはネイティブ NDIS ミニポート ドライバーを自動的に読み込んで、インターフェイス コレクションを管理します。 |
CDC マルチチャネル ISDN コントロール モデル
USB CDC マルチチャネル ISDN コントロール モデル (MCCM) インターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | 通信デバイスのユニバーサル シリアル バス クラス定義、バージョン 1.1、セクション 3.7.1 |
マスター インターフェイスのクラス | 通信インターフェイス クラス (0x02) |
マスター インターフェイスのサブクラス | MCCM (0x04) |
Protocol | なし (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 |
特殊な処理 | なし |
CDC 電話コントロール モデル
USB CDC 電話コントロール モデル (TCM) インターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | 通信デバイスのユニバーサル シリアル バス クラス定義、バージョン 1.1、セクション 3.6.3。 |
マスター インターフェイスのクラス | 通信インターフェイス クラス (0x02)。 |
マスター インターフェイスのサブクラス | TCM (0x03)。 |
Protocol | 任意。 |
Enumerated | はい。 |
関連インターフェイス | 共用機能記述子 (UFD) が参照するオーディオ クラス インターフェイス。 |
ハードウェア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 は、ACM インターフェイス コレクションとは別に列挙されるオーディオ クラス インターフェイス コレクションを参照できます。 |
MCPC ベンダー固有のインターフェイス
Mobile Computing Promotion Consortium (MCPC) は、ワイヤレス モバイル通信デバイス クラス (WMCDC) 仕様でベンダー固有の CDC デバイスの形式が提供される前に、インターフェイス コレクションの形式を定義しました。 したがって、MCPC インターフェイス コレクションは WMCDC 標準に準拠していません。
ただし、USB 汎用親ドライバーは、WMCDC が有効になっている場合、MCPC インターフェイス コレクションを列挙できます。 MCPC インターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | Mobile Computing Promotion Consortium (MCPC) GL-004 仕様 |
クラス | CDC (0x02) |
サブクラス | 0x88 |
Protocol | なし (0x00) |
Enumerated | はい |
関連インターフェイス | 共用機能記述子 (UFD) が参照する 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 |
特殊な処理 | なし |
ビデオ クラス インターフェイス
CDC および WMCDC デバイスで発生する USB ビデオ デバイス クラス インターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | ビデオ デバイスのユニバーサル シリアル バス デバイス クラス定義、バージョン 1.0。 |
クラス | ビデオ (0x0E)。 |
サブクラス | ビデオ コントロール (0x01)。 |
Protocol | なし (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) には 2 つのバージョンがあります。 元のバージョンは、USB 通信デバイス クラス (CDC) 仕様で定義されています。 USB ワイヤレス モバイル通信デバイス クラス (WMCDC) 仕様には、ACM の拡張定義が含まれています。 FAX/モデム関数を含む ACM コレクションでは、元の CDC ACM 定義ではなく、ACM の WMCDC 定義を使用する必要があります。
CDC 仕様に準拠するインターフェイス コレクションについては、このページで説明します。
WMCDC 仕様に準拠するインターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | ワイヤレス モバイル通信デバイスのユニバーサル シリアル バス CDC サブクラス仕様、バージョン 1.0、セクション 6.2。 |
マスター インターフェイスのクラス | 通信インターフェイス クラス (0x02)。 |
マスター インターフェイスのサブクラス | ACM (0x02)。 |
Protocol | コレクションで AT コマンド セット プロトコルが使用されている場合、互換性のある ID に埋め込まれているプロトコル値は0x01 です。 コレクションで WMCDC 仕様により記述されているプロトコルのいずれかが使用されている場合、互換性のある ID に埋め込まれているプロトコル値は、0x2 ~ 0x06、または 0xFE になります。 |
Enumerated | はい。 |
関連インターフェイス | 共用機能記述子 (UFD) が参照する 1 つのデータ クラス インターフェイス |
ハードウェア 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 は、マイクロソフトによって提供される INF ファイルに一致します。 ベンダーによって提供される INF ファイル内のいずれかのハードウェア ID に一致するものが見つからない場合、システムは自動的にネイティブ テレフォニー アプリケーション プログラミング インターフェイス (TAPI) モデム フィルター ドライバーを読み込んでモデム機能を管理し、プロトコル コードが 0xFE でない限り、適切な TAPI レジストリ設定を設定します。 プロトコル コードが 0xFE の場合、ベンダーはデバイスまたはクラスの共同インストーラーを指定して TAPI レジストリ設定を正しく設定する必要があります。 |
WMCDC デバイス管理モデル
USB WMCDC デバイス管理モデル (DMM) インターフェイス コレクションには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | ワイヤレス モバイル通信デバイスのユニバーサル シリアル バス CDC サブクラス仕様、バージョン 1.0、セクション 6.6。 |
マスター インターフェイスのクラス | 通信インターフェイス クラス (0x02)。 |
マスター インターフェイスのサブクラス | DMM (0x09)。 |
Protocol | 任意。 |
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) が参照する 1 個以上のデータ クラス インターフェイス |
ハードウェア 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)
Object Exchange Protocol (OBEX) コントロール モデル インターフェイス コレクションを列挙する方法は、2 つあります。USB 汎用親ドライバーは、すべての OBEX インターフェイスをまとめてグループ化し、すべての OBEX インターフェイスに対して 1 つの物理デバイス オブジェクト (PDO) を作成するか、親ドライバーで OBEX インターフェイスごとに別個の PDO を作成できます。
USB 汎用親ドライバーが各 OBEX インターフェイスに別個の PDO を割り当てると、PDO には次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | ワイヤレス モバイル通信デバイスのユニバーサル シリアル バス CDC サブクラス仕様、バージョン 1.0、セクション 6.5。 |
マスター インターフェイスのクラス | 通信インターフェイス クラス (0x02)。 |
マスター インターフェイスのサブクラス | OBEX (0x0B)。 |
Protocol | なし (0x00)。 |
Enumerated | はい。 |
関連インターフェイス | 共用機能記述子 (UFD) が参照する 1 つのデータ クラス インターフェイス |
ハードウェア 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)
Object Exchange Protocol (OBEX) コントロール モデル インターフェイス コレクションを列挙する方法は、2 つあります。USB 汎用親ドライバーは、すべての OBEX インターフェイスをまとめてグループ化し、すべての OBEX インターフェイスに対して 1 つの物理デバイス オブジェクト (PDO) を作成するか、親ドライバーで OBEX インターフェイスごとに別個の PDO を作成できます。
USB 汎用親ドライバーがすべての OBEX インターフェイスに単一の PDO を割り当てると、PDO には次のプロパティがあります。
プロパティ | 説明 |
---|---|
リファレンス | ワイヤレス モバイル通信デバイスのユニバーサル シリアル バス CDC サブクラス仕様、バージョン 1.0、セクション 6.5。 |
マスター インターフェイスのクラス | 通信インターフェイス クラス (0x02)。 |
マスター インターフェイスのサブクラス | OBEX (0x0B)。 |
Protocol | なし (0x00)。 |
Enumerated | はい。 |
関連インターフェイス | 共用機能記述子 (UFD) が参照する 1 つのデータ クラス インターフェイス |
ハードウェア 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)。 |
Protocol | なし (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) は、論理ハンドセットに関連付けられているインターフェイスを識別します。 |
前のトピックのハードウェア 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) を PDO に関連付けます。 IAD について詳しくは、「USB インターフェイスの関連付け記述子」をご覧ください。 このセクションでは、IAD に関連付けられているインターフェイス コレクションに割り当てられたハードウェア 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 フィールドから抽出される 4 桁のデバイス リリース番号 (バイナリコード 10 進リビジョン) です。
- z(2) は、IAD の bFirstInterface フィールドから抽出される 2 桁のインターフェイス番号です。
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、bFunctionSubClass、bFunctionProtocol フィールドから取得される値が含まれます。
IAD を再帰的に使用して関数の関数をバインドすることはできません。 特に、デバイスのファームウェアに IAD 記述子がある場合、「USB 複合デバイスのインターフェイス コレクションの列挙」で説明されているように、汎用親ドライバーはオーディオ デバイス クラスごとにインターフェイスをグループ化しません。
IAD のないオーディオ デバイス上のインターフェイス コレクションの列挙
オーディオ デバイスの場合、Windows オペレーティング システムは、機能に関連付けられているインターフェイス (インターフェイス コレクション) のグループを列挙し、デバイスにインターフェイス関連付け記述子 (IAD) がない場合でも、各グループに 1 つの物理デバイス オブジェクト (PDO) を割り当てることができます。
インターフェイスが以下の条件を満たしている場合、オペレーティング システムは複合オーディオ デバイスのインターフェイスをインターフェイス コレクションにグループ化します。
- インターフェイス コレクション内のすべてのインターフェイスは連続している必要があります。 つまり、インターフェイスはファームウェア メモリ内で互いに隣接している必要があります。
- インターフェイス コレクション内のすべてのインターフェイスは、オーディオ デバイス クラスに属している必要があります。 デバイスの製造元は、インターフェイス記述子の bInterfaceClass フィールドに 0x01 の値を割り当てることによって、インターフェイスがオーディオ デバイス クラスに属していることを指定します。
- インターフェイス コレクション内の各インターフェイスには、コレクション内の最初のインターフェイスとは異なるサブクラスが必要です。インターフェイス記述子の bInterfaceSubClass フィールドは、インターフェイスのデバイス サブクラスを指定します。
インターフェイスがこれら 3 つの条件をすべては満たしていない場合、Windows は他のオーディオ クラス インターフェイスとループ化するのではなく、別個に列挙しようとします。
インターフェイス関連付け記述子 (IAD) がデバイス ファームウェアに存在する場合、オペレーティング システムはオーディオ クラス インターフェイスを特殊な方法でグループ化しません。 IAD メソッドは、USB インターフェイスをグループ化する場合に常に推奨される方法です。
このセクションでは、オーディオ デバイス クラスに属しているインターフェイス コレクションのオペレーティング システムによって作成される PDO に関連付けられているハードウェア識別子と互換性のある識別子 (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 フィールドから抽出される 4 桁のデバイス リリース番号 (バイナリコード 10 進リビジョン) です。
- z(2) は、インターフェース記述子の bInterfaceNumber フィールドから抽出される 2 桁のインターフェース番号です。
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、bInterfaceSubClass、および bInterfaceProtocol フィールドから取得される値がそれぞれ含まれています。