處理 WMI 要求
所有驅動程式都必須設定 DispatchSystemControl 常式的分派資料表進入點,才能處理 WMI 要求。 如果驅動程式 註冊為 WMI 資料提供者,則必須處理所有 WMI 要求。 否則,驅動程式必須將所有 WMI 要求轉送至下一個較低的驅動程式。
所有 WMI IRP 都有主要程式碼 IRP_MJ_SYSTEM_CONTROL ,以及下列其中一個次要程式碼:
IRP_MN_REGINFO, IRP_MN_REGINFO_EX— 在驅動程式呼叫 IoWMIRegistrationControl之後,查詢或更新驅動程式的註冊資訊。
IRP_MN_QUERY_ALL_DATA、 IRP_MN_QUERY_SINGLE_INSTANCE— 查詢所有實例或指定資料區塊的單一實例。
IRP_MN_CHANGE_SINGLE_ITEM, IRP_MN_CHANGE_SINGLE_INSTANCE— 要求驅動程式變更資料區塊實例中的單一專案或多個專案。
IRP_MN_ENABLE_COLLECTION, IRP_MN_DISABLE_COLLECTION— 要求驅動程式開始累積驅動程式註冊為昂貴收集之區塊的資料,或停止這類區塊的累積資料。
IRP_MN_ENABLE_EVENTS,IRP_MN_DISABLE_EVENTS— 要求驅動程式在啟用事件時開始傳送指定事件的通知,或停止傳送這類事件的通知。
IRP_MN_EXECUTE_METHOD— 要求驅動程式執行與資料區塊相關聯的方法。
WMI 核心模式元件會在驅動程式成功註冊為 WMI 資料提供者之後隨時傳送 WMI IRP,通常是當使用者模式資料取用者要求驅動程式裝置的 WMI 資訊時。 如果驅動程式藉由呼叫 IoWMIRegistrationControl註冊為 WMI 資料提供者,則必須以下列其中一種方式處理每個後續的 WMI 要求:
呼叫核心模式 WMI 程式庫常式 WmiSystemControl。 驅動程式可以呼叫 WmiSystemControl 來處理只處理未使用動態實例名稱的區塊,以及以單一基底名稱字串或 PDO 裝置實例識別碼 為基礎的靜態實例名稱。 如需詳細資訊,請參閱 呼叫 WmiSystemControl 來處理 WMI IRP。
在其 DispatchSystemControl 常式中,處理並完成任何以指標標記的這類要求,讓驅動程式傳入其 IoWMIRegistrationControl的呼叫,並將其他 IRP_MJ_SYSTEM_CONTROL 要求轉送至下一個較低的驅動程式。 如需詳細資訊,請參閱 處理 DispatchSystemControl 常式中的 WMI IRP。
如需 WMI 次要 IRP 的清單,請參閱 WMI 次要 IRP。