實作 IPowerNotify
如果您的驅動程式迷你埠物件 (看到音訊 Miniport 物件介面) 或串流物件 (請參閱音訊串流物件介面) 需要知道電源狀態變更,他們可以在其QueryInterface方法中支援IPowerNotify介面,並在每次發生電源變更時接收來自 PortCls 系統驅動程式的通知。
當電源狀態變更時,PortCls 會呼叫 IPowerNotify::P owerChangeNotify 方法,個別通知每個支援 IPowerNotify 介面的迷你埠和串流物件。 在 PowerChangeNotify 呼叫期間,迷你埠物件應該快取新的裝置電源狀態。 例如,在 CAdapterCommon::Init 呼叫 (期間,請參閱 Microsoft Windows 驅動程式套件 [WDK] ) 中 Msvad 範例配接器的實作,迷你埠驅動程式應該將其快取的電源狀態設定為初始值 PowerDeviceD0。
在呼叫 PowerChangeState 以關閉電源之前,PortCls 會呼叫 IPowerNotify::P owerChangeNotify ,讓迷你埠驅動程式有機會儲存任何必要的裝置內容。 例如,此內容可能包含硬體暫存器值,這些值包含目前篩選拓撲和混音器線條設定。 呼叫 PowerChangeState 以啟動電源之後,PortCls 會呼叫 PowerChangeNotify ,讓迷你埠驅動程式可以還原已儲存的內容。
關閉電源時,PortCls 會在呼叫 PowerChangeNotify之前暫停任何作用中的音訊資料流程。 啟動電源時,PortCls 會先呼叫 PowerChangeNotify ,再重新開機任何暫停的音訊資料流程。
迷你埠驅動程式的迷你埠和串流物件類別可以繼承自 IPowerNotify 介面,並在 其 NonDelegatingQueryInterface 方法中支援此介面。 您可以使用標頭檔 Portcls.h 中的IMP_IPowerNotify定義,將 PowerChangeNotify 方法的函式宣告新增至驅動程式迷你埠和資料流程物件的類別定義。