Функция IoWMIRegistrationControl (wdm.h)
Подпрограмма IoWMIRegistrationControl регистрирует или отменяет регистрацию вызывающего объекта в качестве поставщика данных WMI для указанного объекта устройства.
Синтаксис
NTSTATUS IoWMIRegistrationControl(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG Action
);
Параметры
[in] DeviceObject
Указатель на объект устройства. Этот объект является системной структурой DEVICE_OBJECT .
[in] Action
Действие, которое должен выполнить WMI. Запрошенное действие обозначается одним из следующих значений.
Значение действия | Значение |
---|---|
WMIREG_ACTION_REGISTER | Указывает, что WMI должен зарегистрировать вызывающий объект в качестве поставщика WMI для DeviceObject. В результате WMI отправит драйверу запрос IRP_MN_REGINFO или IRP_MN_REGINFO_EX . |
WMIREG_ACTION_DEREGISTER | Указывает, что WMI должен удалить вызывающий объект из списка поставщиков WMI для DeviceObject. |
WMIREG_ACTION_REREGISTER | Указывает, что WMI должен отменить регистрацию драйвера, а затем зарегистрировать (перерегистрировать) драйвер. Повторная регистрация драйвера приводит к тому, что WMI отправляет драйверу запрос IRP_MN_REGINFO или IRP_MN_REGINFO_EX . |
WMIREG_ACTION_UPDATE_GUIDS | Указывает, что WMI должен повторно запрашивать у драйвера новый список идентификаторов GUID, для которые он предоставляет данные. В результате WMI отправит драйверу запрос IRP_MN_REGINFO или IRP_MN_REGINFO_EX . |
Возвращаемое значение
IoWMIRegistrationControl возвращает код состояния из следующего списка:
Код возврата | Описание |
---|---|
|
Указывает, что WMI завершил запрошенное действие без ошибок. |
|
Указывает, что действие, указанное в действии, было недопустимым. |
|
Указывает, что запрос завершился сбоем по причине, указанной значением NTSTATUS. Подробные сведения о фактическом коде возврата состояния см. в статье Ntstatus.h. |
Комментарии
Когда драйвер вызывает IoWMIRegistrationControl, WMI отправляет драйверу запрос IRP_MN_REGINFO или IRP_MN_REGINFO_EX , чтобы драйвер смог предоставить сведения в WMI. Дополнительные сведения см. в разделе Регистрация в качестве поставщика данных WMI.
Если вызывающий объект указывает WMIREG_ACTION_DEREGISTER для action, IoWMIRegistrationControl приводит к блокировке вызывающего потока до тех пор, пока не будут завершены все IRP_MJ_SYSTEM_CONTROL запросы, которые ранее были отправлены указанному объекту устройства. В таком случае, если драйвер вызывает IoWMIRegistrationControl в рамках подпрограммы диспетчеризации для запроса IRP_MJ_SYSTEM_CONTROL , вызывающий поток будет взаимоблокирован.
Если устройство удаляется внезапно (например, при неожиданном удалении), в результате чего диспетчер PnP отправляет IRP_MN_SURPRISE_REMOVAL IRP, драйвер должен вызвать IoWMIRegistrationControl и указать WMIREG_ACTION_DEREGISTER в действии в вызове. Обратите внимание, что если драйвер вызывает IoWMIRegistrationControl с действием WMIREG_ACTION_DEREGISTER в ответ на IRP_MN_SURPRISE_REMOVAL IRP, драйвер не должен выполнять тот же вызов IoWMIRegistrationControl в ответ на IRP_MN_REMOVE_DEVICE IRP.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), LowerDriverReturn(wdm), PowerIrpDDis(wdm) |