Функция 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 возвращает код состояния из следующего списка:

Код возврата Описание
STATUS_SUCCESS
Указывает, что WMI завершил запрошенное действие без ошибок.
STATUS_INVALID_PARAMETER
Указывает, что действие, указанное в действии, было недопустимым.
STATUS_XXX
Указывает, что запрос завершился сбоем по причине, указанной значением 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)

См. также раздел

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

IRP_MN_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL