コンテナー ID の生成方法

Windows 7 以降、プラグ アンド プレイ (PnP) マネージャーは、次の 3 つのメカニズムのいずれかを使用して、デバイス ノード (devnode) のコンテナー ID を生成します。

  • バスドライバーは、コンテナー ID を提供します。

    devnode にコンテナー ID を割り当てるときに、PnP マネージャーは、まず devnode のバスドライバーがコンテナー ID を提供できるかどうかを確認します。 バスドライバーは、Parameters.QueryId.IdType のフィールドが BusQueryContainerID に設定された IRP_MN_QUERY_ID の要求を通じてコンテナー ID を提供します。

    バス ドライバーがコンテナー ID を提供する場合は、物理デバイス ハードウェアに埋め込まれた正規のコンテナー ID を取得するか、デバイス ハードウェアからバス固有の一意の ID を使用してコンテナー ID を生成できます。 バス固有の一意の ID の例としては、デバイスのシリアル番号や、デバイスのファームウェアのメディア アクセス制御 (MAC) アドレスがあります。

    Note

    独立系ハードウェア ベンダー (IHV) は、バス ドライバーによって報告されるコンテナー ID の一意性を担当します。

    詳細については、「バス固有の一意の ID から生成されたコンテナー ID」を参照してください。

  • PnP マネージャーは、リムーバブルデバイス機能によってコンテナー ID を生成します。

    バスドライバーが列挙している devnode のコンテナー ID を指定できない場合、PnP マネージャーはリムーバブル デバイス機能を使用して、デバイスに列挙されているすべての devnode のコンテナー ID を生成します。 バスドライバーは、IRP_MN_QUERY_CAPABILITIES 要求に応答してこのデバイス機能を報告します。

    詳細については、「リムーバブル デバイス機能から生成されたコンテナーID」を参照してください。

  • PnP マネージャーは、リムーバブルデバイス機能のオーバーライドによってコンテナー ID を生成します。

    Note

    Windows 10 では、DPWS デバイスは常に、このメソッドを使用してデバイスのコンテナー ID を生成します。

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

    たとえば、リムーバブル デバイス機能のオーバーライドでデバイスがリムーバブルであることを指定した場合、PnP マネージャーは、デバイスに列挙されたすべての開発ノードのコンテナー ID を生成します。 このアクションは、デバイス自体がリムーバブルとして報告されたかどうかに関係なく実行されます。

    IHV は、デバイスによって報告されたリムーバブル デバイス機能をオーバーライドするキーをレジストリに設定できます。 このオーバーライド メカニズムは、リムーバブル デバイス機能をサポートしていないレガシ デバイスや、誤って報告するレガシ デバイスに役立ちます。

    詳細については、「リムーバブル デバイス機能のオーバーライドから生成されたコンテナー ID」を参照してください。

これらのメソッドに加えて、システムは ACPI BIOS オブジェクト設定を使用して、デバイス コンテナーのグループ化を指定します。 詳細については、「デバイス コンテナーのグループ化への ACPI の使用」を参照してください。