リムーバブル デバイス機能のオーバーライドで生成されるコンテナー ID

Windows 7 以降では、新しいデバイスはバス固有の一意 ID を提供する必要があります (「バス固有の一意 ID から生成されるコンテナー ID」で説明されているように)。

または、デバイスとバス ドライバーは、リムーバブル デバイス機能を正しく設定する必要があります (「リムーバブル デバイス機能から生成されたコンテナー ID」で説明されているように)。 リムーバブルデバイス機能の詳細については、「リムーバブルデバイス機能の概要」を参照してください。

Windows 7 以降のバージョンの Windows では、報告されたリムーバブル デバイス機能をオーバーライドするメカニズムもサポートされています。 このメカニズムは、リムーバブル デバイスの機能を誤って報告するレガシ デバイスで役立ちます。

オーバーライド メカニズムによってリムーバブル デバイス機能の値が変化するわけではありませんが、PnP マネージャーは、デバイスのコンテナー ID を生成するときに、リムーバブルデバイス機能の値ではなく、オーバーライド設定を使用する必要があります。

このオーバーライド メカニズムを使用すると、レジストリ ベースのメソッドを使用してコンテナー ID を生成できます。 デバイスの最上位 (親) デバイス ノード (devnode) に対してコンテナー ID が生成されるとすぐに、「リムーバブル デバイス機能から生成されたコンテナー ID」で説明されているヒューリスティックを通じて、デバイスのそれぞれの子 devnode によって同じコンテナー ID が継承されます。

オーバーライド メカニズムは、レジストリ ベースのルックアップ テーブルであり、特定のデバイスにマップされるレジストリ キーで構成されます。 このオーバーライド テーブルは、DeviceOverrides レジストリ キーの下で維持され、次のレジストリ キーとサブキーで構成されます。

テーブル レベル レジストリ キー/サブキー名 説明

1

DeviceOverrides

すべてのリムーバブル デバイス機能のオーバーライドの親キー。

2

HardwareID

リムーバブル デバイス機能のオーバーライドが適用されるデバイスのハードウェア ID を指定します。

このサブキーの名前は実際のハードウェア ID であり、すべてのバックスラッシュ ('') 文字は番号記号 ('#') に置き換えられます。

2

CompatibleID

リムーバブル デバイス機能のオーバーライドが適用されるデバイスの互換性 ID を指定します。

このサブキーの名前は実際のハードウェア ID であり、すべてのバックスラッシュ ('') 文字は番号記号 ('#') に置き換えられます。

3

LocationPaths

デバイスの親デバイス ノード (devnode) のロケーション パスにのみ、リムーバブル デバイス機能のオーバーライドが適用されることを指定します。

3

ChildLocationPaths

デバイスの子 devnode のロケーション パスに、リムーバブル デバイス機能のオーバーライドが適用されることを指定します。

注: LocationPaths レジストリ サブキーも指定されているか、ChildLocationPaths レジストリ サブキーが親 devnode に対して指定されていない限り、指定されたデバイスの親 devnode はリムーバブル デバイス機能のオーバーライドによる影響を受けません。

4

LocationPath

リムーバブル デバイス機能のオーバーライドが適用される devnode の個別のロケーション パスを指定します。

このサブキーの名前は、コンピューターにインストールされたデバイスの 1 つの devnode インスタンスの実際のロケーション パスです。

4

*

リムーバブル デバイス機能のオーバーライドが、指定されたデバイスのすべての devnode に適用されることを指定します。

LocationPath および*レジストリ サブキー内で、DWORD 値 (Reovable) は、該当する devnode がリムーバブルと見なされる (1) か、リムーバブルと見なされない (0) かを指定します。

例 1

以下は、LocationPaths レジストリ サブキーで指定されたロケーション パスに加えて、HardwareID レジストリ サブキーと一致する devnode のデバイス オーバーライドを示しています。

この例では、オーバーライドによってリムーバブル デバイス機能が無効になり、ロケーション パス PCIROOT(0)#PCI(102)#USBROOT(0)#USB(1) にある USB\VID_1234&PID_5678 のハードウェア ID を持つすべての devnode に適用されます。

以下は、このオーバーライドのレジストリ テーブル形式の例です。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceOverrides
    USB#VID_1234&PID_5678
        LocationPaths
            PCIROOT(0)#PCI(102)#USBROOT(0)#USB(1)
                Removable=0

この例では、USB#VID_1234&PID_5678 HardwareID レジストリ サブキーの名前であり、PCIROOT(0)#PCI(102)#USBROOT(0)#USB(1)LocationPath レジストリ サブキーの名前です。

このオーバーライドにより、プラグ アンド プレイ (PnP) マネージャーによるデバイス トポロジの解釈が変更されます。 ハードウェア ID 値 USB\VID_1234&PID_5678 を持つ devnode はレジストリでリムーバブルでないとしてマークされたことに注意してください。 PnP マネージャーは devnode を親からリムーバブルでないと解釈するため、この devnode に対して新しいコンテナー ID は生成されません。 代わりに、USB\VID_1234&PID_5678 (およびそのすべての子) は、親のコンテナー ID (ContainerID {{A}}) を継承します。

このオーバーライドの結果は、ツリー内のすべての devnode が同じコンテナー ID を持つため、単一のデバイス グループになります。 デバイス USB\VID_1234&PID_5678 は、コンピューターと統合されていると解釈されます。

次の図は、結果として得られるデバイス トポロジと関連するコンテナー ID の割り当てを示しています。

diagram illustrating removable device capability override that marks a devnode as not removable.

前の例は、頻繁に発生する devnode トポロジを示しています。デバイスがリムーバブルとして誤って報告される特定のバスの場所にハードワイヤードされたポータブル コンピューターです。 Web カメラや生体認証 (指紋) センサーなど、コンピューターと物理的に統合されているデバイスは、ユーザーがコンピューターから物理的に分離できないため、リムーバブルとして報告しないでください。 リムーバブル オーバーライドを使用すると、独立系ハードウェア ベンダー (IHV) または OEM は、PnP マネージャーがリムーバブル デバイスの機能を解釈する方法を変更し、デバイスのコンテナー ID の割り当てに影響を与えます。

例 2

以下は、特定のハードウェア ID 値に一致するすべての devnode のリムーバブル デバイス機能のオーバーライドを示しています。

この例では、オーバーライドによってリムーバブル デバイス機能が有効になり、ハードウェア ID 値が USB\VID_062A&PID_0000 の devnode にオーバーライドが適用されます。

このオーバーライドのレジストリ テーブル形式の概要を次に示します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceOverrides
    USB#VID_062A&PID_00001
        LocationPaths
            *
                Removable=1

1 HardwareID レジストリ サブキーの名前。

この例では、ハードウェア ID が USB\VID_1234&PID_5678 の devnode は、デバイスのリムーバブル機能を正しく報告しています。 PnP マネージャーは、コンテナー ID (ContainerID {{B}}) とそのすべての子 devnode を生成します。

ただし、USB\VID_062A&PID_0000 のハードウェア ID を持つ子 devnode はオーバーライドと一致します。 その結果、PnP マネージャーは、この devnode とそのすべての子 devnode の別のコンテナー ID (ContainerID {{C}}) を生成します。

以前と同様に、このオーバーライドにより、PnP マネージャーによるデバイス トポロジの解釈が変更されます。 物理デバイスには 2 つのコンテナー ID が割り当てられ、Windows からは 2 つのデバイスに見えます。 USB\VID_062A&PID_0000 のハードウェア ID を持つ devnode は、devnode をデバイスにグループ化する場合にリムーバブルと解釈されます。 これにより、デバイスのリムーバブル機能について devnode によって報告される値は変更されません。

さらに、* レジストリ サブキーは、USB\VID_062A&PID_0000 のハードウェア ID を持つコンピューター上のすべての devnode にこのオーバーライドを適用する必要があることを示すために指定されました。

次の図は、結果として得られるデバイス トポロジと関連するコンテナー ID の割り当てを示しています。

diagram illustrating removable device capability override that marks a devnode as removable.