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


Функция 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. Это приведет к отправке IRP_MN_REGINFO или IRP_MN_REGINFO_EX запроса на драйвер WMI.
WMIREG_ACTION_DEREGISTER Указывает, что WMI должен удалить вызывающий объект из списка поставщиков WMI для DeviceObject.
WMIREG_ACTION_REREGISTER Указывает, что WMI должен отменить регистрацию драйвера, а затем зарегистрировать (повторно зарегистрировать) драйвер. Повторная регистрация драйвера приводит к отправке IRP_MN_REGINFO или запроса IRP_MN_REGINFO_EX драйверу.
WMIREG_ACTION_UPDATE_GUIDS Указывает, что WMI должен повторно запрашивать драйвер для нового списка идентификаторов GUID, для которыми он предоставляет данные. Это приведет к отправке IRP_MN_REGINFO или IRP_MN_REGINFO_EX запроса на драйвер WMI.

Возвращаемое значение

IoWMIRegistrationControl возвращает код состояния из следующего списка:

Возвращаемый код Описание
STATUS_SUCCESS
Указывает, что WMI завершил действие, запрошенное без ошибок.
STATUS_INVALID_PARAMETER
Указывает, что действие, указанное в Action, было недопустимым.
STATUS_XXX
Указывает, что запрос завершился сбоем по причине, указанной значением NTSTATUS. Подробные сведения о фактическом коде возврата состояния см. в ntstatus.h.

Замечания

После вызова драйвера IoWMIRegistrationControlWMI отправляет драйверу запрос 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 в Action в вызове. Обратите внимание, что если драйвер вызывает IoWMIRegistrationControl с действием WMIREG_ACTION_DEREGISTER в ответ на IRP_MN_SURPRISE_REMOVAL IRP, драйвер не должен вызывать IoWMIRegistrationControl в ответ на IRP_MN_REMOVE_DEVICE IRP.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 2000.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), LowerDriverReturn(wdm), PowerIrpDDis(wdm)

См. также

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

IRP_MN_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL