Как создаются идентификаторы контейнеров

Начиная с Windows 7, диспетчер Plug and Play (PnP) создает идентификатор контейнера для узла устройства (devnode) с помощью одного из трех механизмов:

  • Драйвер автобуса предоставляет идентификатор контейнера.

    При назначении идентификатора контейнера devnode диспетчер PnP сначала проверяет, может ли драйвер шины devnode предоставить идентификатор контейнера. Водители автобуса предоставляют идентификатор контейнера через запрос IRP_MN_QUERY_ID с полем Parameters.QueryId.IdType, заданным как BusQueryContainerID.

    Если драйвер автобуса хочет предоставить идентификатор контейнера, он может получить подлинный идентификатор контейнера, внедренный в оборудование физического устройства, или использовать уникальный идентификатор конкретной шины из оборудования устройства для создания идентификатора контейнера. Примерами уникальных идентификаторов шины являются серийный номер устройства или MAC-адрес в встроенном ПО устройства.

    Примечание

    Независимый поставщик оборудования (IHV) отвечает за уникальность идентификатора контейнера, сообщаемого водителем автобуса.

    Дополнительные сведения см. в разделе Идентификаторы контейнеров, созданные на основе уникального идентификатора Bus-Specific.

  • Диспетчер PnP создает идентификатор контейнера с помощью возможности съемных устройств.

    Если драйвер шины не может предоставить идентификатор контейнера для перечисляемого devnode, диспетчер PnP использует возможность съемных устройств для создания идентификатора контейнера для всех перечисленных для устройства devnodes. Водитель автобуса сообщает об этой возможности устройства в ответ на запрос IRP_MN_QUERY_CAPABILITIES .

    Дополнительные сведения см. в разделе Идентификаторы контейнеров, созданные на основе возможности съемных устройств.

  • Диспетчер PnP создает идентификатор контейнера путем переопределения возможности съемных устройств.

    Примечание

    В Windows 10 устройства DPWS всегда создают идентификатор контейнера для устройства с помощью этого метода.

    Хотя механизм переопределения не изменяет значение возможности съемных устройств, он заставляет диспетчер PnP использовать параметр переопределения, а не значение возможности съемных устройств при создании идентификаторов контейнеров для устройств.

    Например, если переопределение возможности съемного устройства указывает, что устройство является съемным, диспетчер PnP создает идентификатор контейнера для всех объектов devnodes, перечисленных для устройства. Это действие выполняется независимо от того, сообщило ли устройство о себе как съемный или нет.

    IHV может заполнить реестр ключами, которые переопределяют возможности съемных устройств, сообщаемые устройством. Этот механизм переопределения полезен для устаревших устройств, которые либо не поддерживают возможность съемных устройств, либо неправильно сообщают об этом.

    Дополнительные сведения см. в разделе Идентификаторы контейнеров, созданные при переопределении возможностей съемных устройств.

В дополнение к этим методам система использует параметры объектов ACPI BIOS для указания группирования контейнеров устройств. Дополнительные сведения см. в статье Использование ACPI для группирования контейнеров устройств.