Battery Miniclass 驅動程式的 DispatchSystemControl 例程
電池迷你類別驅動程序必須提供 DispatchSystemControl 例程來處理 IRP_MJ_SYSTEM_CONTROL IRP,以支援 Windows Management Instrumentation (WMI ) 。 WMI 提供一致的方式來讓驅動程式公開測量和檢測數據。
若要執行初始處理,電池迷你類別驅動程式會使用 BatteryClassSystemControl 例程,它會採用 WmiLibContext 參數來指定函式的分派表。 例程會使用 IRP_MJ_SYSTEM_CONTROL的 MinorFunction 成員來判斷所呼叫的分派函式。
電池裝置的所有驅動程式都必須處理特定的 WMI 查詢。 電池迷你類別驅動程式會將這些 WMI 查詢轉送到電池類別驅動程式,而不是直接支持它們。 為了處理 WMI 查詢,miniclass 驅動程式會在 WMILIB_CONTEXT 的 QueryWmiDataBlock 成員中提供 DpWmiQueryDataBlock 例程的指標。 迷你類別驅動程式不需要處理任何其他類型的 WMI 要求,而且如果不是的話,可以將WMILIB_CONTEXT的其他成員設定為零。
在其 DpWmiQueryDataBlock 例程中,迷你類別驅動程式會呼叫 BatteryClassQueryWmiDataBlock 例程,讓電池類別驅動程式盡可能處理 WMI 查詢要求。 如果電池類別驅動程式處理 WMI 類別 GUID,則會完成 IRP。 否則, BatteryClassQueryWmiDataBlock 會傳回值 STATUS_WMI_GUID_NOT_FOUND。 Miniclass 驅動程式接著可以執行驅動程式特定的處理,並使用 WmiCompleteRequest 來完成要求。
電池迷你類別驅動程式只需要呼叫 BatteryClassQueryWmiDataBlock 以進行 WMI IRP 處理。 在電池迷你類別驅動程式的最小 WMI 處理實作中,如果 BatteryClassQueryWmiDataBlock 傳回STATUS_WMI_GUID_NOT_FOUND,迷你類別驅動程式只會呼叫 WmiCompleteRequest ,且狀態值為 STATUS_WMI_GUID_NOT_FOUND。