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_XXXIRP_MN_DISABLE_XXX 请求。

注解

通过调用 WMI 库支持例程处理 WMI IRP 的驱动程序在其设备扩展中 存储初始化WMILIB_CONTEXT 结构 (或指向此类结构) 的指针。 如果每个设备对象提供同一组数据块,驱动程序可以对多个设备对象使用相同的 WMILIB_CONTEXT 结构。

当驱动程序收到IRP_MJ_SYSTEM_CONTROL请求时,它会使用指向其WMILIB_CONTEXT结构的指针、指向其设备对象的指针和指向 IRP 的指针调用 WmiSystemControlWmiSystemControl 确定 IRP 是否包含 WMI 请求,如果是,则通过调用驱动程序的相应 DpWmiXxx 例程来处理请求。

可以从分页池分配此结构的内存。

要求

要求
Header wmilib.h (包括 Wmilib.h)

另请参阅

DpWmiExecuteMethod

DpWmiFunctionControl

DpWmiQueryDataBlock

DpWmiQueryReginfo

DpWmiSetDataBlock

DpWmiSetDataItem

WMIGUIDREGINFO

WmiSystemControl