IMMNotificationClient 介面 (mmdeviceapi.h)
IMMNotificationClient介面會在新增或移除音訊端點裝置、端點裝置的狀態或屬性變更,或指派給端點裝置的預設角色有所變更時,提供通知。 不同于本節中的其他介面,這些介面是由 MMDevice API 系統元件所實作,MMDevice API 用戶端會實作 IMMNotificationClient 介面。 若要接收通知,用戶端會將指標傳遞至其 IMMNotificationClient 介面實例做為 IMMDeviceEnumerator::RegisterEndpointNotificationCallback 方法的參數。
註冊其 IMMNotificationClient 介面之後,用戶端會透過 介面的 方法來接收回呼形式的事件通知。
IMMNotificationClient介面中的每個方法都會接收作為其其中一個輸入參數的端點識別碼字串,用來識別屬於通知主體的音訊端點裝置。 字串可唯一識別與系統中所有其他音訊端點裝置相關的裝置。 IMMNotificationClient介面實作中的方法應將此字串視為不透明。 也就是說,任何方法都不應該嘗試剖析字串的內容,以取得裝置的相關資訊。 原因是字串格式未定義,而且可能會從 MMDevice API 系統模組的其中一個實作變更為下一個。
用戶端可以使用它收到的端點識別碼字串作為 IMMNotificationClient 方法呼叫中的輸入參數,有兩種方式:
- 用戶端可以建立端點識別碼字串所識別之裝置的實例。 用戶端會呼叫 IMMDeviceEnumerator::GetDevice 方法,並提供端點識別碼字串作為輸入參數來執行此動作。
- 用戶端可以將端點識別碼字串與現有裝置實例的端點識別碼字串進行比較。 若要取得第二個端點識別碼字串,用戶端會呼叫裝置實例的 IMMDevice::GetId 方法。 如果兩個字串相符,則會識別相同的裝置。
- 介面的方法必須是非封鎖。 用戶端不應該在事件回呼期間等候同步處理物件。
- 為了避免鎖死,用戶端絕對不應該在其IMMNotificationClient方法的實作中呼叫IMMDeviceEnumerator::RegisterEndpointNotificationCallback或IMMDeviceEnumerator::UnregisterEndpointNotificationCallback。
- 用戶端不應該在事件回呼期間釋放 MMDevice API 物件的最終參考。
繼承
IMMNotificationClient介面繼承自IUnknown介面。 IMMNotificationClient 也有下列類型的成員:
方法
IMMNotificationClient介面具有這些方法。
IMMNotificationClient::OnDefaultDeviceChanged OnDefaultDeviceChanged 方法會通知用戶端特定裝置角色的預設音訊端點裝置已變更。 |
IMMNotificationClient::OnDeviceAdded OnDeviceAdded 方法表示已新增音訊端點裝置。 |
IMMNotificationClient::OnDeviceRemoved OnDeviceRemoved 方法表示已移除音訊端點裝置。 |
IMMNotificationClient::OnDeviceStateChanged OnDeviceStateChanged 方法表示音訊端點裝置的狀態已變更。 |
IMMNotificationClient::OnPropertyValueChanged OnPropertyValueChanged 方法表示屬於音訊端點裝置的屬性值已變更。 |
需求
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | mmdeviceapi.h |
另請參閱
IMMDeviceEnumerator::GetDevice
IMMDeviceEnumerator::RegisterEndpointNotificationCallback