IMMNotificationClient::OnDefaultDeviceChanged 方法 (mmdeviceapi.h)

OnDefaultDeviceChanged方法會通知用戶端特定裝置角色的預設音訊端點裝置已變更。

語法

HRESULT OnDefaultDeviceChanged(
  [in] EDataFlow flow,
  [in] ERole     role,
  [in] LPCWSTR   pwstrDefaultDeviceId
);

參數

[in] flow

端點裝置的資料流程方向。 此參數設定為下列其中一個 EDataFlow 列舉值:

eRender

eCapture

轉譯裝置的資料流程方向為 eRender。 擷取裝置的資料流程方向為 eCapture。

[in] role

音訊端點 裝置的裝置角色 。 此參數設定為下列其中一個 ERole 列舉值:

eConsole

eMultimedia

eCommunications

[in] pwstrDefaultDeviceId

識別音訊端點裝置的 端點識別碼字串 指標。 此參數指向包含端點識別碼的 Null 終止寬字元字串。 字串在呼叫期間維持有效狀態。 如果使用者已移除或停用特定角色的預設裝置,而且沒有其他裝置可以假設該角色, 則 pwstrDefaultDeviceNull

傳回值

如果方法成功,它會傳回 S_OK。 如果方法失敗,則會傳回錯誤碼。

備註

三個輸入參數會指定新預設音訊端點裝置的資料流程方向、裝置角色和端點識別碼字串。

在 Windows Vista 中,MMDevice API 支援裝置角色,但系統提供的使用者介面程式則不支援。 Windows Vista 中的使用者介面可讓使用者選取用於轉譯的預設音訊裝置,以及用於擷取的預設音訊裝置。 當使用者變更預設轉譯或擷取裝置時,系統會將 eConsole、eMultimedia 和 eCommunications) 的所有三個裝置 (角色指派給新的裝置。 因此,當使用者變更預設轉譯或擷取裝置時,系統會呼叫用戶端的 OnDefaultDeviceChanged 方法三次,這三個裝置角色各一次。

在未來的 Windows 版本中,使用者介面可能會讓使用者將個別角色指派給不同的裝置。 在此情況下,如果使用者只將一或兩個裝置角色指派變更為新的轉譯或擷取裝置,系統只會呼叫用戶端的 OnDefaultDeviceChanged 方法一次或兩 (次,也就是每次變更的角色呼叫一次) 。 根據 OnDefaultDeviceChanged 方法如何回應角色變更,在 Windows Vista 中開發的音訊應用程式行為可能會在未來的 Windows 版本中執行時變更。 如需詳細資訊,請參閱 Windows Vista 中的裝置角色

如需實作 OnDefaultDeviceChanged 方法的程式碼範例,請參閱 裝置事件

需求

   
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 mmdeviceapi.h

另請參閱

IMMNotificationClient 介面