Поделиться через


Флаги регистрации WMI

Драйвер указывает, использует ли блок статические или динамические имена экземпляров, и задает другие характеристики блока, устанавливая флаги в структуре WMIGUIDREGINFO или WMIREGGUID , которые он передает в WMI для регистрации блока.

Драйвер указывает, что блок использует статические имена экземпляров, установив один из следующих флагов:

  • WMIREG_FLAG_INSTANCE_LIST указывает, что драйвер предоставляет все имена экземпляров в статичном списке.

    Драйвер может установить этот флаг, только если он регистрирует блоки путем обработки IRP_MN_REGINFO или IRP_MN_REGINFO_EX запросов, а не путем вызова WmiSystemControl. Драйвер записывает строки имени экземпляра со смещением байтов, указанным instanceNameList в структуре WMIREGGUID блока.

  • WMIREG_FLAG_INSTANCE_BASENAME предписывает WMI создавать статические имена экземпляров из строки базового имени, определяемой драйвером.

    Драйвер, обрабатывающий запрос IRP_MN_REGINFO или IRP_MN_REGINFO_EX , записывает строку базового имени со смещением, указанным BaseNameOffset в структуре WMIREGGUID блока.

    Драйвер, вызывающий WmiSystemControl , задает строку базового имени в параметре InstanceName подпрограммы DpWmiQueryReginfo .

  • WMIREG_FLAG_INSTANCE_PDO предписывает WMI создавать статические имена экземпляров из идентификатора экземпляра устройства PDO драйвера.

    Драйвер, обрабатывающий запрос IRP_MN_REGINFO или IRP_MN_REGINFO_EX , записывает указатель на PDO-член структурыWMIREGGUID блока. Если запрос IRP_MN_REGINFO_EX, драйвер должен увеличить число ссылок для каждого переданного PDO путем вызова подпрограммы ObReferenceObject . (Система разыменует каждое PDO позже.)

    Драйвер, вызывающий WmiSystemControl , записывает указатель на PDO в параметре Pdo своей подпрограммы DpWmiQueryReginfo .

Чтобы указать, что блок использует динамические имена экземпляров, драйвер не должен устанавливать следующие флаги: WMIREG_FLAG_INSTANCE_LIST, WMIREG_FLAG_INSTANCE_PDO или WMIREG_FLAG_INSTANCE_BASENAME.

Драйвер указывает, что сбор блока данных является дорогостоящим, задав WMIREG_FLAG_EXPENSIVE. Это указывает инструментарию WMI отправить запрос IRP_MN_ENABLE_COLLECTION при первом открытии клиентом WMI блока данных и запросе IRP_MN_DISABLE_COLLECTION , когда последний клиент WMI закрывает блок. Драйверу не нужно собирать данные для такого блока, пока он не получит запрос IRP_MN_ENABLE_COLLECTION .

Драйвер указывает блок событий, задав WMIREG_FLAG_EVENT_ONLY_GUID. Это означает, что блок можно включить или отключить только как событие, и его нельзя запросить или задать.

Драйвер указывает WMI удалить ранее зарегистрированный блок, задав WMIREG_FLAG_REMOVE_GUID. Этот флаг действителен только в ответ на запрос на обновление сведений о регистрации (IRP_MN_REGINFO или IRP_MN_REGINFO_EX с помощью WMIUPDATE). Дополнительные сведения см. в разделе Обновление сведений о регистрации WMI.