所有驅動程式都必須設定 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 IRPs 的詳細內容。
如需 WMI 次要 IRP 的清單,請參閱 WMI 次要 IRP。