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_XXXIRP_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)

另请参阅

DpWmiExecuteMethod

DpWmiFunctionControl

DpWmiQueryDataBlock

DpWmiQueryReginfo

DpWmiSetDataBlock

DpWmiSetDataItem

WMIGUIDREGINFO

WmiSystemControl