다음을 통해 공유


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

WMI 라이브러리 지원 루틴을 호출하는 드라이버에 필요한 진입점인 드라이버의 DpWmiQueryReginfo 루틴에 대한 포인터입니다.

QueryWmiDataBlock

WMI 라이브러리 지원 루틴을 호출하는 드라이버에 필요한 진입점인 드라이버의 DpWmiQueryDataBlock 루틴에 대한 포인터입니다.

SetWmiDataBlock

WMI 라이브러리 지원 루틴을 호출하는 드라이버의 선택적 진입점인 드라이버의 DpWmiSetDataBlock 루틴에 대한 포인터입니다. 드라이버가 이 루틴을 구현하지 않는 경우 이 멤버를 NULL설정해야 합니다. 이 경우 WMI는 IRP_MN_CHANGE_SINGLE_INSTANCE 요청에 대한 응답으로 호출자에게 STATUS_WMI_READ_ONLY 반환합니다.

SetWmiDataItem

WMI 라이브러리 지원 루틴을 호출하는 드라이버의 선택적 진입점인 드라이버의 DpWmiSetDataItem 루틴에 대한 포인터입니다. 드라이버가 이 루틴을 구현하지 않는 경우 이 멤버를 NULL설정해야 합니다. 이 경우 WMI는 IRP_MN_CHANGE_SINGLE_ITEM 요청에 대한 응답으로 호출자에게 STATUS_WMI_READ_ONLY 반환합니다.

ExecuteWmiMethod

WMI 라이브러리 지원 루틴을 호출하는 드라이버의 선택적 진입점인 드라이버의 DpWmiExecuteMethod 루틴에 대한 포인터입니다. 드라이버가 이 루틴을 구현하지 않는 경우 이 멤버를 NULL설정해야 합니다. 이 경우 WMI는 IRP_MN_EXECUTE_METHOD 요청에 대한 응답으로 호출자에게 STATUS_INVALID_DEVICE_REQUEST 반환합니다.

WmiFunctionControl

WMI 라이브러리 지원 루틴을 호출하는 드라이버의 선택적 진입점인 드라이버의 DpWmiFunctionControl 루틴에 대한 포인터입니다. 드라이버가 이 루틴을 구현하지 않는 경우 이 멤버를 NULL설정해야 합니다. 이 경우 WMI는 IRP_MN_ENABLE_XXX 또는 IRP_MN_DISABLE_XXX 요청에 대한 응답으로 호출자에게 STATUS_SUCCESS 반환합니다.

발언

WMI 라이브러리 지원 루틴을 호출하여 WMI IRP를 처리하는 드라이버는 초기화된 WMILIB_CONTEXT 구조체(또는 이러한 구조체에 대한 포인터)를 디바이스 확장에 저장합니다. 각 디바이스 개체가 동일한 데이터 블록 집합을 제공하는 경우 드라이버는 여러 디바이스 개체에 대해 동일한 WMILIB_CONTEXT 구조를 사용할 수 있습니다.

드라이버는 IRP_MJ_SYSTEM_CONTROL 요청을 받으면 WMILIB_CONTEXT 구조에 대한 포인터, 디바이스 개체에 대한 포인터 및 IRP에 대한 포인터를 사용하여 WmiSystemControl 호출합니다. WmiSystemControl IRP에 WMI 요청이 포함되어 있는지 여부를 확인하고, 이 경우 드라이버의 적절한 DpWmiXxx 루틴을 호출하여 요청을 처리합니다.

이 구조의 메모리는 페이징 풀에서 할당할 수 있습니다.

요구 사항

요구
헤더 wmilib.h(Wmilib.h 포함)

참고 항목

DpWmiExecuteMethod

DpWmiFunctionControl

DpWmiQueryDataBlock

DpWmiQueryReginfo

DpWmiSetDataBlock

DpWmiSetDataItem

WMIGUIDREGINFO

WmiSystemControl