WMILIB_CONTEXT结构(wmilib.h)
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 请求时,它将调用 WmiSystemControl,其中包含指向其 WMILIB_CONTEXT 结构的指针、指向其设备对象的指针以及指向 IRP 的指针。 WmiSystemControl 确定 IRP 是否包含 WMI 请求,如果是,则通过调用驱动程序的适当 DpWmiXxx 例程来处理请求。
可以从分页池分配此结构的内存。
要求
要求 | 价值 |
---|---|
标头 | wmilib.h (包括 Wmilib.h) |