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 应将调用方注册为 DeviceObject的 WMI 提供程序。 这将导致 WMI 向驱动程序发送 IRP_MN_REGINFO 或 IRP_MN_REGINFO_EX 请求。 |
WMIREG_ACTION_DEREGISTER | 指定 WMI 应从其 DeviceObjectWMI 提供程序列表中删除调用方。 |
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,IoWMIRegistrationControl 会导致调用线程阻止,直到之前发送到指定设备对象的所有 IRP_MJ_SYSTEM_CONTROL 请求都已完成。 在这种情况下,如果驱动程序调用 IoWMIRegistrationControl 调度例程中的 IRP_MJ_SYSTEM_CONTROL 请求,则调用线程将死锁。
如果设备突然删除(例如意外删除),导致 PnP 管理器发送 IRP_MN_SURPRISE_REMOVAL IRP,驱动程序必须调用 IoWMIRegistrationControl 并在调用 Action 中指定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) |