ファンクション コントローラー ドライバー用 USB レジストリ設定
OEM は、デバイスがコンピューターに接続されたときに正しいメタデータで列挙されるように、複数のレジストリ値を設定する必要があります。 これらの値は、Windows の USB デバイス側ドライバーのデバイス記述子と構成記述子を指定します。 独自のインターフェイスを作成して組み込む OEM は、インターフェイスを読み込んで使用できるように、追加のレジストリ値を設定する必要があります。
デバイス側 USB ドライバーに関連するレジストリ キーは、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN 下にあります。
このトピックでは、デバイス、構成、デバイスのインターフェイス記述子を定義する前述のキーとサブキーの設定について説明します。
USBFN レジストリ キー
USB デバイスの構成情報は、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN 下にあるレジストリにあります。
この表では、そのサブキーについて説明します。 それらの一部は OEM によって変更されることがあります。 各サブキーでサポートされている値の詳細については、以下のセクションで説明します。
サブキー | 説明 |
---|---|
代替 | このサブキーには、1 つ以上の代替設定のあるインターフェイスを定義する追加のサブキーが含まれています。 |
Associations | このサブキーは、インターフェイス関連付け記述子 (IAD) を定義します。 各 IAD は、複数のインターフェイスを 1 つの機能にグループ化することを可能にします。 各サブキーはそれぞれ異なる IAD を表し、OEM はそれらのサブキーの値を変更できます。 |
既定値 | このサブキーには、VID や PID などのデバイス固有の設定を定義するために使用される既定値が含まれています。 これは Microsoft 所有のサブキーであり、その値は親キーの値によって上書きされます。 |
構成 | このサブキーには、USB 列挙時に使用される構成記述子値を含む追加のサブキーが含まれています。 たとえば、標準のテスト構成は HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations\TestConfig 下にある場合があります。 |
Configurations\Default | これは Microsoft 所有のサブキーです。 これには、既定構成の値が含まれています。 既定構成のインターフェイスは、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN キー下にある IncludeDefaultCfg 値が 1 に設定されている場合、現在の構成の前に追加されます。 |
インターフェイス | このサブキーには、特定のインターフェイス記述子を定義する追加のサブキーが含まれています。 たとえば、IP over USB インターフェイスは HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces\IpOverUsb 下にある場合があります。 インターフェイス サブキーの名前は、USBFn クラス ドライバーを読み込むための USBFN 子デバイスのハードウェア ID としても使用されます。 IP over USB の例では、USBFN 子デバイスのハードウェア ID は USBFN\IpOverUsb になります。 |
この表では、OEM が HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN キーで定義できる値について説明します。 このキーで定義されていない値は、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Default 下にある Microsoft 定義の既定値と見なされます。
すべての OEM は idVendor、idProduct、ManufacturingString、および ProductString 値を設定する必要があります。 独自のインターフェイスを作成して追加する OEM は、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations 下にある InterfaceList に独自のインターフェイスを含むサブキーの名前に、CurrentConfiguration を設定する必要もあります。
値 | Type | Owner | 説明 |
---|---|---|---|
IncludeDefaultCfg | REG_DWORD | OEM | OEM が IpOverUsb や MTP などの既定構成のインターフェイスを含める場合に 1 に設定します。 |
idVendor | REG_DWORD | OEM | 列挙時にホストに送信されるデバイス記述子のベンダー識別子。 |
idProduct | REG_DWORD | OEM | 列挙時にホストに送信されるデバイス記述子の製品識別子。 |
ManufacturerString | REG_SZ | OEM | デバイスの製造元を識別するためにホストに送られる製造元文字列。 |
ProductString | REG_SZ | OEM | デバイスを製品として定義する文字列。 既定値は Windows 10 Mobile Device です。 この値は、接続されているコンピューターのユーザー インターフェイスでデバイスの表示名として使用されます。 OEM は、この値が DeviceTargetingInfo サブキー下にある PhoneModelName の値と一致することを確認する必要があります。 |
iSerialNumber | REG_DWORD | OEM | この値が 0 に設定されている場合は、デバイスにシリアル番号がありません。 この値が 0 でない場合、または存在しない場合、シリアル番号はデバイスごとに一意に生成されます。 |
CurrentConfiguration | REG_SZ | OEM | この文字列は構成サブキーの名前に対応する必要があります。 この文字列は、USB デバイスの列挙に使用する構成記述子の作成にどの構成を使用するかを特定します。 |
ClassEndpointRequestEnabled | REG_DWORD | OEM | クラス エンドポイント要求が受け入れられることを示す場合は、1 に設定します。 クラス エンドポイント要求は既定では受け入れられません。 クラス エンドポイント要求が受け入れられない、または特定のインターフェイスに対してのみ受け入れられることを示す場合は、0 に設定します (または、このレジストリ値を設定しません)。 特定のインターフェイスに対するクラス エンド ポイント要求を受け入れる方法については、「USBFN\Interfaces レジストリ キー」セクションの「ClassEndpointRequestEnabled 値」を参照してください。 |
USBFN\Configurations レジストリ キー
この表では、OEM が HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations 下にあるサブキーで定義できる値について説明しています。 各サブキーはそれぞれ異なる USB 構成を表します。 OEM が独自のインターフェイスを作成する場合、使用するインターフェイスを含む新しい構成を定義する必要があります。 そのためには、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations 下に構成の名前を使用するサブキーを作成し、そのサブキーにこの表の値を設定します。 さらに、USB ドライバーが新しい構成を使用するには、CurrentConfiguration 値 (前の表で説明) を構成サブキーの名前に設定する必要があります。
値 | Type | Owner | 説明 |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM または Microsoft | HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces 下にあるインターフェイス サブキーに対応するインターフェイス名のリスト、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations 下に定義されている IAD 関連付け、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates 下に定義されている代替インターフェイスを含みます。 これらのキーは、複合構成記述子の定義に使用されるインターフェイスを特定します。 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN キー下にある IncludeDefaultCfg 値が 1 に設定されている場合、このリストは Microsoft 所有の既定のインターフェイス リストに追加され、デバイスが列挙に使用する完全なインターフェイス リストが作成されます。 |
MSOSCompatIdDescriptor | REG_BINARY | OEM または Microsoft | 省略可能。 構成の拡張互換性 ID OS 機能記述子を定義します。 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN キー下にある IncludeDefaultCfg 値が 1 に設定されている場合、この記述子内の機能が既定構成の機能とインターフェイスに追加されます。 |
USBFN\Interfaces レジストリ キー
この表では、OEM が HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces 下にあるサブキーで変更できる値について説明しています。
各サブキーはそれぞれ異なる USB インターフェイスを表します。 インターフェイスを定義するには、インターフェイス名を使用して HKEY_LOCAL_MACHINEPSTimeCurrentControlSet\Control\USBFN\Interfaces 下にサブキーを作成し、以下の表の値を設定します。 さらに、インターフェイスは、CurrentConfiguration の InterfaceList の一部である場合にのみ含まれます。
値 | Type | Owner | 説明 |
---|---|---|---|
InterfaceDescriptor | REG_BINARY | OEM または Microsoft | USB 列挙中にホストに送信するインターフェイス記述子のバイナリ表現。 bInterfaceNumber と iInterface の値は、他のインターフェイス記述子との競合を避けるために、完全な構成記述子をコンパイルした後、USB ファンクション スタックによって自動的に設定されます。 |
InterfaceGUID | REG_SZ | OEM または Microsoft | バス上のインターフェイスを一意に識別する GUID。 |
InterfaceNumber | REG_DWORD | OEM または Microsoft | 省略可能。 この値は、機能に固定のインターフェイス番号を割り当てるために使用されます。 インターフェイス番号 0 ~ 1F は従来の機能用に予約されており、20 ~ 3F は Microsoft 用に予約されており、40 ~ 5F は OEM 用に予約されています。 |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM または Microsoft | 省略可能。 インターフェイスの拡張プロパティ OS 機能記述子を定義します。 |
ClassEndpointRequestEnabled | REG_DWORD | OEM | このレジストリ値は、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\ClassEndpointRequestEnabled が存在しないか、0 に設定されている場合にのみ有効です。 このインターフェイスに対するクラス エンドポイント要求が受け入れられることを示す場合は、このレジストリ値を 1 に設定します。 このインターフェイスに対するクラス エンドポイント要求が受け入れられないことを示す場合は、0 に設定します (または、このレジストリ値を設定しません)。 |
USBFN\Alternates レジストリ キー
alternates サブキーは、1 つ以上の代替インターフェイスを備える 1 つのインターフェイスを定義するために使用します。 この表では、OEM が HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates 下にあるサブキーで変更できる値について説明しています。
各サブキーはそれぞれ異なるインターフェイスを表します。 代替設定のあるインターフェイスを定義するには、インターフェイス名を使用して HKEY_LOCAL_MACHINEPSTimeCurrentControlSet\Control\USBFN\Alternates 下にサブキーを作成し、以下の表の値を設定します。
値 | Type | Owner | 説明 |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM または Microsoft | HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces 下で定義されたインターフェイスに対応する 2 つ以上のインターフェイス名のリスト。 そのキーは、代替設定のあるインターフェイスをまとめて定義します。 最初のインターフェイスは代替設定 0 に対応し、2 番目のインターフェイスは代替設定 1 に対応し、以下同様となります。 |
InterfaceNumber | REG_DWORD | OEM または Microsoft | 省略可能。 この値は、機能に固定のインターフェイス番号を割り当てるために使用されます。 インターフェイス番号 0 ~ 1F は従来の機能用に予約されており、20 ~ 3F は Microsoft 用に予約されており、40 ~ 5F は OEM 用に予約されています。 |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM または Microsoft | 省略可能。 インターフェイスの拡張プロパティ OS 機能記述子を定義します。 |
USBFN\Associations レジストリ キー
OEM は、インターフェイス関連付け記述子 (IAD) を定義することで関連付けを指定できます。 各 IAD は、複数のインターフェイスを 1 つの機能にグループ化することを可能にします。 この表では、OEM が HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations 下にあるサブキーで変更できる値について説明しています。
各サブキーはそれぞれ異なる IAD を表します。 関連付けを定義するには、IAD の名前を使用して HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations 下にサブキーを作成し、以下の表の値を設定します。
値 | Type | Owner | 説明 |
---|---|---|---|
InterfaceList | REG_MULTI_SZ | OEM または Microsoft | USB ファンクションに関連するインターフェイスまたは代替インターフェイスのリスト。 リストのサイズが 2 未満の場合、ファンクション ドライバー スタックの読み込みに失敗します。 他の機能またはインターフェイスの読み込みは続行されます。 |
bFunctionClass | REG_DWORD | OEM または Microsoft | 機能のクラス コードは 02 に設定されます。 |
bFunctionSubClass | REG_DWORD | OEM または Microsoft | 機能のサブクラスコードは 0d に設定されます。 |
bFunctionProtocol | REG_DWORD | 機能のプロトコル コードは 01 に設定されます。 | |
MSOSExtendedPropertyDescriptor | REG_BINARY | OEM または Microsoft | 省略可能。 インターフェイスの拡張プロパティ OS 機能記述子を定義します。 |
使用例: MirrorLink の有効化
MirrorLink は、モバイル デバイスと車載インフォテインメント システム間の統合を可能にする相互運用性に関する規格です。 デバイスは USB CDC NCM インターフェイスを MirrorLink クライアントに公開する必要があります。 CDC (Communications Device Class) デバイスとして、Interface Association Descriptor (IAD) / CDC Function Union Descriptor を使用してデータ インターフェイスを作成する必要があります。
Windows 10 モバイル デバイスで MirrorLink 接続を有効にするには、OEM が次の変更を加えて IAD を公開する必要があります。
インターフェイス関連付け記述子 (IAD) を使用して、前の表に示すレジストリ値を設定することで、通信インターフェイスとデータ インターフェイスの関連付けを作成します。
レジストリ設定に加えて、このレジストリ値を 0 以外の値に設定します。
値 Type Owner 説明 MirrorLink REG_DWORD OEM または Microsoft 0 以外の値は、インターフェイスが MirrorLink をサポートしていることを示します。 USB ファンクション スタックは MirrorLink USB コマンドを停止しません。 クラス固有の記述子は、レジストリで定義されたインターフェイス記述子セットに含めることができます。 これらの記述子には、USB ファンクション ドライバー スタックが記述子を正確に解析できるように、サイズ フィールドを設定する必要があります。
または、CDC Function Union Descriptor をクラス固有のインターフェイス記述子として定義することもできます。ただし、Union 記述子によって指定されるインターフェイス番号は静的であり、USB ファンクション ドライバー スタックによって割り当てられません。また、Union 記述子が存在しても、それにより記述されたインターフェイスが 1 つの子 PDO に関連付けられることはありません。 その関連付けには IAD が必要です。