在 Windows Vista 中,系統會產生端點標識符字串,以識別系統中 音訊端點裝置。 端點標識符字串是以空結尾的寬字元字串。 特定音訊端點裝置的端點標識符字串可唯一識別系統中所有音訊端點裝置之間的裝置。
如果系統包含兩個或多個相同的音訊配接器裝置,對應的音訊端點裝置將會有相同的易記名稱,但每個端點裝置都會有唯一的端點標識符字串。 如需取得端點裝置易記名稱的詳細資訊,請參閱 裝置屬性。
取得音訊端點裝置的 IMMDevice 介面實例之後,用戶端可以呼叫 IMMDevice::GetId 方法來取得裝置的端點標識符字元串。 客戶端可以使用端點標識符字串,稍後或在不同的進程中呼叫 IMMDeviceEnumerator::GetDevice 方法來建立音訊端點裝置的實例。
客戶端可以設定,以便在任何音訊端點裝置的狀態變更時接收通知。 為了接收通知,用戶端會實作 IMMNotificationClient 介面,並使用 MMDevice API 註冊該介面。 當端點裝置的狀態變更時,MMDevice API 會在用戶端的 EDataFlow 介面中呼叫適當的方法。 方法的其中一個輸入參數是端點標識符字串,可識別狀態已變更的端點裝置。 如需 EDataFlow的詳細資訊,請參閱 裝置事件。
DirectSound 和 Windows 多媒體函式等舊版音訊 API 有自己的介面來列舉和識別音訊裝置。 在 Windows Vista 中,這些介面已擴充,以提供端點標識符字串,以識別 API 所呈現裝置抽象概念的基礎端點裝置。
在 DirectSound 裝置列舉期間,DirectSound 會為其列舉的每個裝置提供端點標識符字串。 如需詳細資訊,請參閱 舊版音頻應用程式的音頻事件。
若要取得舊版超聲波裝置的端點標識符字串,請使用 waveOutMessage 或 waveInMessage 函式,將DRV_QUERYFUNCTIONINSTANCEID訊息傳送至超聲波設備驅動器。 如需顯示使用此訊息的程式代碼範例,請參閱 舊版 Windows 多媒體應用程式的裝置角色。
如需使用核心音訊 API 功能來增強使用舊版音訊 API 之應用程式的詳細資訊,請參閱 與舊版音訊 API 的互作性。
用戶端應將端點標識符字串的內容視為不透明。 也就是說,客戶端不應該嘗試剖析字串的內容,以取得裝置的相關信息。 原因在於該字串格式尚未定義,並且可能會從一個MMDevice API系統模組的實作變更到下一個實作。
端點標識符字串的存留期會系結至裝置安裝。 如果使用者升級裝置驅動程式,或使用者卸載裝置,並再次安裝裝置,裝置的端點標識符字串就會變更。 不過,當使用者拔除裝置並插回裝置時,端點標識符字串在系統重新啟動時會保持不變,而USB音訊裝置的端點標識符字串會保持不變。
由於作業系統與音訊驅動程式的更新可能會改變實體音訊端點的 ID 字串,端點 ID 無法提供應用程式在使用者會話間記憶與追蹤音訊端點的可靠機制。 例如,通訊應用程式可能想記住使用者選擇的麥克風和喇叭來通話。 如果應用程式使用端點 ID 來追蹤使用者偏好,那麼音訊驅動程式更新改變麥克風或喇叭端點 ID 可能會導致應用程式失去使用者的偏好。
自 Windows 11 年起,版本 24H2(版本 26100),Windows 在音訊端點提供一個PKEY_AudioEndpoint_StableId屬性,當可用時,應用程式可用來可靠地追蹤音訊端點在作業系統與音訊驅動程式更新中。 PKEY_AudioEndpoint_StableId 是一個不透明、大小寫區分的字串,應用程式可以儲存,之後在呼叫 IMMDeviceEnumerator::GetDevice 時用來取得相同的音訊端點。 更多資訊請參見 PKEY_AudioEndpoint_StableId。
相關主題