次の方法で共有


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

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

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

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

オーバーライド メカニズムはリムーバブル デバイス機能の値を変更しませんが、デバイスのコンテナー ID を生成するときに、リムーバブル デバイス機能の値ではなく、オーバーライド設定を使用するように PnP マネージャーに強制します。

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

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

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

1

デバイスオーバーライド

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

2

HardwareID

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

このサブキーの名前は実際のハードウェア ID で、円記号 ('') 文字はすべて数字 ('#') 文字に置き換えられます。

2

CompatibleID

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

このサブキーの名前は実際のハードウェア ID で、円記号 ('') 文字はすべて数字 ('#') 文字に置き換えられます。

3

LocationPaths

デバイスの親デバイス ノード (devnode) の場所パスにのみ、リムーバブル デバイス機能のオーバーライドが適用されるように指定します。

3

ChildLocationPaths

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

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

4

LocationPath

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

このサブキーの名前は、コンピューターにインストールされているデバイスの 1 つの devnode インスタンスの実際の場所のパスです。

4

*

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

LocationPath および * レジストリ サブキー内で、DWORD 値 (リムーバブル) は、該当する開発ノードをリムーバブル (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 マネージャーは開発ノードを親からリムーバブルでないと解釈するため、この開発ノードに対して新しいコンテナー ID は生成されません。 代わりに、USB\VID_1234&PID_5678 (およびそのすべての子) は、その親のコンテナー ID (ContainerID {A}) を継承します。

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

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

devnode をリムーバブルではないものとしてマークするリムーバブル デバイス機能のオーバーライドを示す図。

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

例 2

次に示すのは、特定の ハードウェア ID 値に一致するすべてのデバイス ノードのリムーバブル デバイス機能のオーバーライドです。

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

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

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

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

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

ただし、USB\VID_062A&PID_0000 の ハードウェア ID を持つ子デブノードはオーバーライドに一致します。 その結果、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 の割り当てを示しています。

devnode をリムーバブルとしてマークするリムーバブル デバイス機能のオーバーライドを示す図。