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
GuidCount 陣列的指標WMIGUIDREGINFO 結構,其中包含每個區塊的註冊資訊。
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 連結庫來處理 WMI IRP 的驅動程式支援例程,會將初始化的 WMILIB_CONTEXT 結構(或這類結構的指標)儲存在其裝置延伸模組中。 如果每個裝置物件提供相同的數據區塊集,驅動程式就可以針對多個裝置物件使用相同的 WMILIB_CONTEXT 結構。
當驅動程式收到 IRP_MJ_SYSTEM_CONTROL 要求時,它會呼叫 WmiSystemControl,其中包含其 WMILIB_CONTEXT 結構的指標、其裝置物件的指標,以及 IRP 的指標。 WmiSystemControl 會判斷 IRP 是否包含 WMI 要求,如果是的話,請呼叫驅動程式的適當 DpWmiXxx 例程來處理要求。
此結構的記憶體可以從分頁集區配置。
要求
要求 | 價值 |
---|---|
標頭 | wmilib.h (包括 Wmilib.h) |