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


структура 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 IRP путем вызова подпрограмм поддержки библиотеки WMI, сохраняет инициализированную структуру WMILIB_CONTEXT (или указатель на такую структуру) в расширении устройства. Драйвер может использовать одну и ту же структуру WMILIB_CONTEXT для нескольких объектов устройства, если каждый объект устройства предоставляет один и тот же набор блоков данных.

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

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

Требования

Требование Значение
Заголовок wmilib.h (включая Wmilib.h)

См. также раздел

DpWmiExecuteMethod

DpWmiFunctionControl

DpWmiQueryDataBlock

DpWmiQueryReginfo

DpWmiSetDataBlock

DpWmiSetDataItem

WMIGUIDREGINFO

WmiSystemControl