標準の USB 識別子
USB デバイス用に生成される識別子のセットは、デバイスが単一インターフェイス デバイスか、複数インターフェイス デバイスかによって異なります。
単一インターフェイス USB デバイス
新しい USB デバイスが接続されると、システム提供の USB ハブ ドライバーは、デバイスのデバイス記述子から抽出された情報を使用して、次のデバイス ID を構成します。
USB\VID_v(4)&PID_d(4)&REV_r(4)
ここで:
v(4) は、USB 委員会がベンダーに 割り当てるベンダー コードです。
d(4) は、ベンダーがデバイスに割り当てる製品コードです。
r(4) はリビジョン コードです。
ハブ ドライバーは、デバイス記述子の idVendor、idProduct、および bcdDevice フィールドからベンダーと製品コードをそれぞれ抽出します。 これらは 4 桁の 16 進数です。
INF モデル セクションでは、次のハードウェア ID を指定することもできます。
USB\VID_v(4)&PID_d(4)
および次の互換性のある ID:
USB\CLASS_c(2)&SUBCLASS_s(2)&PROT_p(2)
USB\CLASS_c(2)&SUBCLASS_s(2)
USB\CLASS_c(2)
ここで:
c(2) は、デバイス記述子から取得された デバイス クラス コードです。
s(2) はデバイス サブクラス コードです。
p(2) はプロトコル コードです。
デバイス クラス コード、サブクラス コード、およびプロトコル コードは、デバイス記述子の bDeviceClass、bDeviceSubClass、および bDeviceProtocol フィールドによってそれぞれ決定されます。 これらは 2 桁の 16 進数です。
複数インターフェイス USB デバイス
複数のインターフェイスを持つデバイスは複合デバイスと呼ばれます。 Windows 2000 以降では、新しい USB 複合デバイス がコンピューターに接続されると、USB ハブ ドライバーによって物理デバイス オブジェクト (PDO) が作成され、子デバイスのセットが変更されたことをオペレーティング システムに通知します。 システムは、新しい PDO に関連付けられているハードウェア識別子 をハブ ドライバーで照会した後で、オペレーティングシステムは、適切な INF ファイルを検索して ID の一致を見つけます。 USB\COMPOSITE 以外の一致が見つかると、INF ファイルに示されているドライバーが読み込まれます。 ただし、他の一致するものが見つからない場合、オペレーティング システムは互換性のある ID USB\COMPOSITE を使用し、USB 汎用親ドライバーを読み込みます。 その後、汎用親ドライバーは個別の PDO を作成し、複合デバイスのインターフェイスごとに個別のハードウェア識別子のセットを生成します。
各インターフェイスには、次の形式のデバイス ID があります。
USB\VID_v(4)&PID_d(4)&MI_z(2)
ここで:
v(4) は、USB 委員会がベンダーに 割り当てるベンダー コードです。
d(4) は、ベンダーがデバイスに割り当てる製品コードです。
z(2) は、対応するインターフェース記述子の bInterfaceNumber フィールドから抽出されるインターフェース番号です。
INF モデル セクションでは、次の互換性のある ID を指定することもできます。
USB\CLASS_d(2)&SUBCLASS_s(2)&PROT_p(2)
USB\CLASS_d(2)&SUBCLASS_s(2)
USB\CLASS_d(2)
USB\COMPOSITE
ここで:
d(2) は、デバイス記述子から取得された デバイス クラス コードです。
s(2) はサブクラス コードです。
p(2) はプロトコル コードです。
デバイス コード、サブクラス コード、およびプロトコル コードは、インターフェイス記述子の bInterfaceClass、bInterfaceSubClass、および bInterfaceProtocol フィールドによってそれぞれ決定されます。 これらは 2 桁の 16 進数です。