Обновление сведений о регистрации WMI
После первоначальной регистрации в WMI драйвер изменяет свои регистрационные данные, вызывая IoWMIRegistrationControl с одним из следующих действий:
WMIREG_ACTION_REREGISTER заменить все регистрационные данные, ранее предоставленные драйвером, новыми сведениями.
В ответ WMI отправляет драйверу запрос IRP_MN_REGINFO или запрос IRP_MN_REGINFO_EX с параметром Parameters.WMI.DataPath , равным WMIREGISTER. (В Windows 98 и Windows 2000 система отправляет запрос IRP_MN_REGINFO . В Windows XP и более поздних версиях система отправляет запрос IRP_MN_REGINFO_EX .)
Драйвер предоставляет WMI с новыми сведениями о регистрации для всех поддерживаемых блоков, как описано в разделах Использование библиотеки WMI для регистрации блоков и Обработка IRP_MN_REGINFO и IRP_MN_REGINFO_EX для регистрации блоков.
WMIREG_ACTION_UPDATE_GUIDS добавить или удалить поддержку блоков или изменить статические имена экземпляров зарегистрированных блоков.
В ответ WMI отправляет драйверу запрос IRP_MN_REGINFO или IRP_MN_REGINFO_EX , для параметра Parameters.Wmi.DataPath задано значение WMIUPDATE.
Драйвер предоставляет WMI с обновленными сведениями о регистрации, в которых:
Драйвер задает WMIREG_FLAG_REMOVE_GUID, чтобы удалить поддержку этого блока.
Драйвер очищает WMIREG_FLAG_REMOVE_GUID добавления нового блока или обновления существующего блока.
Драйвер задает или очищает WMIREG_FLAG_INSTANCE_XXX и предоставляет все необходимые сведения об имени экземпляра, чтобы изменить статические имена экземпляров блока или изменить его для использования динамических имен экземпляров.
WMIREG_ACTION_DEREGISTER, чтобы проинструктировать WMI, что драйвер больше не будет предоставлять сведения о WMI.
WMI не отправляет запрос IRP_MN_REGINFO или IRP_MN_REGINFO_EX в ответ на этот вызов, так как он не требует дополнительных сведений от драйвера. Как правило, драйвер отменяет регистрацию своих блоков в ответ на запрос IRP_MN_REMOVE_DEVICE . Обратите внимание, что вызов отмены регистрации будет блокироваться до тех пор, пока не будут завершены все WMI IRP на устройстве. Если драйвер помещает в очередь WMI IRP, он должен отменить их перед вызовом IoWMIRegistrationControl для отмены регистрации.