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


Использование библиотеки WMI для регистрации блоков

Драйвер может использовать библиотеку WMI для обработки запросов IRP_MN_REGINFO и IRP_MN_REGINFO_EX , если он регистрирует блоки, которые не используют динамические имена экземпляров или используют статические имена экземпляров на основе строки базового имени PDO или драйвера. В этом случае драйвер:

  1. Вызывает WmiSystemControl с указателем на объект устройства драйвера, указателем на структуру WMILIB_CONTEXT и указателем на IRP.

    Структура WMILIB_CONTEXT указывает количество регистрируемых блоков (GuidCount) и указывает на список структур WMIGUIDREGINFO (GuidList), указывающих GUID, количество экземпляров и флаги регистрации, относящиеся к соответствующему блоку. Он также определяет точки входа для обязательных и необязательных процедур обратного вызова DpWmiXxxx .

  2. Когда WMI вызывает подпрограмму DpWmiQueryReginfo драйвера, драйвер указывает путь к реестру драйвера, его имя ресурса MOF, флаги регистрации, относящиеся ко всем его блокам, и сведения, которые WMI использует для имен экземпляров блоков данных драйвера, которые могут быть либо указателем на физический объект устройства, передаваемый в подпрограмму AddDevice драйвера, либо строку, на которой следует основывать имена статических экземпляров.

Драйвер должен инициализировать точки входа для процедур обратного вызова DpWmiXxxx в структуре WMILIB_CONTEXT перед вызовом WmiSystemControl, но может отложить инициализацию GuidCount и GuidList в структуре WMILIB_CONTEXT до тех пор, пока WMI не вызовет подпрограмму DpWmiQueryReginfo драйвера.