Функция 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 возвращает код состояния из следующего списка:
Возвращаемый код | Описание |
---|---|
|
Указывает, что WMI завершил действие, запрошенное без ошибок. |
|
Указывает, что действие, указанное в Action, было недопустимым. |
|
Указывает, что запрос завершился сбоем по причине, указанной значением 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) |