wmilib.h) (WMILIB_CONTEXT 结构
WMILIB_CONTEXT 结构提供驱动程序的数据块和事件块的注册信息,并为驱动程序的 WMI 库回调例程定义入口点。
语法
typedef struct _WMILIB_CONTEXT {
ULONG GuidCount;
PWMIGUIDREGINFO GuidList;
PWMI_QUERY_REGINFO QueryWmiRegInfo;
PWMI_QUERY_DATABLOCK QueryWmiDataBlock;
PWMI_SET_DATABLOCK SetWmiDataBlock;
PWMI_SET_DATAITEM SetWmiDataItem;
PWMI_EXECUTE_METHOD ExecuteWmiMethod;
PWMI_FUNCTION_CONTROL WmiFunctionControl;
} WMILIB_CONTEXT, *PWMILIB_CONTEXT;
成员
GuidCount
指定驱动程序注册的块数。
GuidList
指向 GuidCountWMIGUIDREGINFO 结构的数组的指针,该结构包含每个块的注册信息。
QueryWmiRegInfo
指向驱动程序的 DpWmiQueryReginfo 例程的指针,该例程是调用 WMI 库支持例程的驱动程序所需的入口点。
QueryWmiDataBlock
指向驱动程序的 DpWmiQueryDataBlock 例程的指针,该例程是调用 WMI 库支持例程的驱动程序所需的入口点。
SetWmiDataBlock
指向驱动程序的 DpWmiSetDataBlock 例程的指针,该例程是调用 WMI 库支持例程的驱动程序的可选入口点。 如果驱动程序未实现此例程,则必须将此成员设置为 NULL。 在这种情况下,WMI 会将STATUS_WMI_READ_ONLY返回给调用方,以响应任何 IRP_MN_CHANGE_SINGLE_INSTANCE 请求。
SetWmiDataItem
指向驱动程序的 DpWmiSetDataItem 例程的指针,该例程是调用 WMI 库支持例程的驱动程序的可选入口点。 如果驱动程序未实现此例程,则必须将此成员设置为 NULL。 在这种情况下,WMI 会将STATUS_WMI_READ_ONLY返回给调用方,以响应任何 IRP_MN_CHANGE_SINGLE_ITEM 请求。
ExecuteWmiMethod
指向驱动程序的 DpWmiExecuteMethod 例程的指针,该例程是调用 WMI 库支持例程的驱动程序的可选入口点。 如果驱动程序未实现此例程,则必须将此成员设置为 NULL。 在这种情况下,WMI 会向调用方返回STATUS_INVALID_DEVICE_REQUEST以响应任何 IRP_MN_EXECUTE_METHOD 请求。
WmiFunctionControl
指向驱动程序的 DpWmiFunctionControl 例程的指针,该例程是调用 WMI 库支持例程的驱动程序的可选入口点。 如果驱动程序未实现此例程,则必须将此成员设置为 NULL。 在这种情况下,WMI 向调用方返回STATUS_SUCCESS,以响应任何 IRP_MN_ENABLE_XXX 或 IRP_MN_DISABLE_XXX 请求。
注解
通过调用 WMI 库支持例程处理 WMI IRP 的驱动程序在其设备扩展中 存储初始化WMILIB_CONTEXT 结构 (或指向此类结构) 的指针。 如果每个设备对象提供同一组数据块,驱动程序可以对多个设备对象使用相同的 WMILIB_CONTEXT 结构。
当驱动程序收到IRP_MJ_SYSTEM_CONTROL请求时,它会使用指向其WMILIB_CONTEXT结构的指针、指向其设备对象的指针和指向 IRP 的指针调用 WmiSystemControl。 WmiSystemControl 确定 IRP 是否包含 WMI 请求,如果是,则通过调用驱动程序的相应 DpWmiXxx 例程来处理请求。
可以从分页池分配此结构的内存。
要求
要求 | 值 |
---|---|
Header | wmilib.h (包括 Wmilib.h) |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈