Поделиться через


структура 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

Указатель на подпрограмму dpWmiQueryReg info драйвера, которая является обязательной точкой входа для драйверов, которые вызывают подпрограммы поддержки библиотеки WMI.

QueryWmiDataBlock

Указатель на dpWmiQueryDataBlock, которая является обязательной точкой входа для драйверов, которые вызывают подпрограммы поддержки библиотеки WMI.

SetWmiDataBlock

Указатель на подпрограмму DpWmiSetData Block драйвера, которая является необязательной точкой входа для драйверов, которые вызывают подпрограммы поддержки библиотеки 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 xxx или IRP_MN_DISABLE_XXX.

Замечания

Драйвер, обрабатывающий irPs WMI, вызывая подпрограммы поддержки библиотеки WMI, хранит инициализированную структуру WMILIB_CONTEXT (или указатель на такую структуру) в расширении устройства. Драйвер может использовать одну и ту же WMILIB_CONTEXT структуру для нескольких объектов устройств, если каждый объект устройства предоставляет один и тот же набор блоков данных.

Когда драйвер получает запрос IRP_MJ_SYSTEM_CONTROL, он вызывает WmiSystemControl с указателем на структуру WMILIB_CONTEXT, указатель на объект устройства и указатель на IRP. WmiSystemControl определяет, содержит ли IRP запрос WMI и, если да, обрабатывает запрос, вызывая соответствующую процедуру dpWmiX xxx.

Память для этой структуры может быть выделена из пула страниц.

Требования

Требование Ценность
заголовка wmilib.h (include Wmilib.h)

См. также

DpWmiExecuteMethod

DpWmiFunctionControl

DpWmiQueryDataBlock

DpWmiQueryReginfo

DpWmiSetDataBlock

DpWmiSetDataItem

WMIGUIDREGINFO

WmiSystemControl