實作 IAdapterPowerManagement
為驅動程式實作 IAdapterPowerManagement 介面時,請參閱 Microsoft Windows 驅動程式套件 (WDK) 範例音訊驅動程式中的 CAdapterCommon 類別實作。 這個類別會處理裝置中斷,並執行所有音訊配接器驅動程式通用的其他功能。 介面卡的 CAdapterCommon 類別應該繼承自 IAdapterPowerManagement 介面,並在 其 NonDelegatingQueryInterface 方法中支援此介面。 (如需非委派介面的詳細資訊,請參閱 INonDelegatingUnknown 介面的描述。)
您可以使用標頭檔 Portcls.h 中的IMP_IAdapterPowerManagement定義,將 IAdapterPowerManagement::P owerChangeState、 IAdapterPowerManagement::QueryPowerChangeState和 IAdapterPowerManagement::QueryDeviceCapabilities 方法的函式宣告新增至驅動程式的 CAdapterCommon 類別定義。
在 PortCls 系統驅動程式呼叫介面卡的裝置啟動常式期間, (請參閱啟動裝置) ,介面卡應該藉由呼叫PcRegisterAdapterPowerManagement向 PortCls 註冊其IAdapterPowerManagement介面。 如需程式碼範例,請參閱 Sysvad 範例驅動程式中的 StartDevice 函式,其會在 範例音訊驅動程式中討論。 PcRegisterAdapterPowerManagement函式的第一個參數是配接器驅動程式CAdapterCommon物件的IUnknown指標。 PortCls 會查詢此物件的 IAdapterPowerManagement 介面。
當 PortCls 呼叫介面卡驅動程式的 IAdapterPowerManagement::P owerChangeState 方法來變更裝置的電源狀態時,配接器驅動程式應該快取介面卡 CAdapterCommon 物件中的裝置新電源狀態。 在 CAdapterCommon::Init 呼叫期間, (查看 WDK 範例配接器驅動程式) 中的實作,驅動程式應該將初始電源狀態設定為 DeviceState) 中所述的 PowerDeviceD0 (,然後再從成功初始化傳回。 只有在已知硬體處於適當的電源狀態時,驅動程式才應該寫入硬體。
在關閉電源以回應 PowerChangeState 呼叫之前,配接器驅動程式應該會將音訊輸出置於防止電源關閉時發生喇叭雜訊的狀態。 例如,關機程式可能包括將 DAC 輸出提升為零、關閉 DAC,以及將 MIDI 行設為靜音。