структура 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) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по