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) アドレスがあります。
注
独立系ハードウェア ベンダー (IHV) は、バス ドライバーによって報告されるコンテナー ID の一意性を担当します。
詳細については、「Bus-Specific 一意の ID から生成されたコンテナー ID」を参照してください。
PnP マネージャーは、リムーバブル デバイス機能を使用してコンテナー ID を生成します。
バス ドライバーが列挙している devnode のコンテナー ID を指定できない場合、PnP マネージャーはリムーバブル デバイス機能を使用して、そのデバイスに対して列挙されたすべての devnode のコンテナー ID を生成します。 バス ドライバーは、 IRP_MN_QUERY_CAPABILITIES 要求に応答してこのデバイス機能を報告します。
詳細については、「リムーバブル デバイス機能から生成されたコンテナー ID」を参照してください。
PnP マネージャーは、リムーバブル デバイス機能のオーバーライドによってコンテナー ID を生成します。
注
Windows 10では、DPWS デバイスは常に、このメソッドを使用してデバイスのコンテナー ID を生成します。
オーバーライド メカニズムはリムーバブル デバイス機能の値を変更しませんが、デバイスのコンテナー ID を生成するときに、リムーバブル デバイス機能の値ではなく、オーバーライド設定を使用するように PnP マネージャーに強制します。
たとえば、リムーバブル デバイス機能のオーバーライドでデバイスがリムーバブルであることを指定した場合、PnP マネージャーは、デバイスに列挙されたすべてのデバイス ノードのコンテナー ID を生成します。 このアクションは、デバイス自体がリムーバブルとして報告されたかどうかに関係なく実行されます。
IHV は、デバイスによって報告された、デバイスがリムーバブルとして扱われる特性をオーバーライドするキーをレジストリに設定できます。 このオーバーライド メカニズムは、リムーバブル デバイス機能をサポートしていないレガシ デバイスや、その機能を誤って報告するレガシ デバイスに役立ちます。
詳細については、「 リムーバブル デバイス機能のオーバーライドから生成されたコンテナー ID」を参照してください。
これらのメソッドに加えて、システムは ACPI BIOS オブジェクト設定を使用して、デバイス コンテナー グループを指定します。 詳細については、「 デバイス コンテナーのグループ化に ACPI を使用する」を参照してください。