共用方式為


IAudioClient::GetBufferSize 方法 (audioclient.h)

GetBufferSize 方法會擷取端點緩衝區的最大容量 (大小) 。

語法

HRESULT GetBufferSize(
  [out] UINT32 *pNumBufferFrames
);

參數

[out] pNumBufferFrames

UINT32 變數的指標,此方法會將緩衝區可保留的音訊畫面數寫入其中。

傳回值

如果方法成功,它會傳回 S_OK。 如果失敗,可能的傳回碼包括但不限於下表所示的值。

傳回碼 Description
AUDCLNT_E_NOT_INITIALIZED
音訊數據流尚未成功初始化。
AUDCLNT_E_DEVICE_INVALIDATED
音訊端點裝置已解除叢集,或音訊硬體或相關聯的硬體資源已重新設定、停用、移除或無法使用。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows 音訊服務未執行。
E_POINTER
參數 pNumBufferFramesNULL

備註

這個方法需要 IAudioClient 介面的先前初始化。 此方法的所有呼叫都會失敗,併發生錯誤AUDCLNT_E_NOT_INITIALIZED,直到用戶端成功呼叫 IAudioClient::Initialize 方法來初始化音頻數據流為止。

這個方法會擷取用戶端應用程式與音訊引擎之間共用的端點緩衝區長度。 長度會表示為緩衝區可以保留的音訊畫面數。 音訊畫面的位元組大小會計算為數據流中的通道數目乘以每個通道的樣本大小。 例如,16 位樣本的立體 (2 通道) 數據流的框架大小為四個字節。

IAudioClient::Initialize 方法會配置緩衝區。 用戶端會在傳遞給 Initialize 方法的 hnsBufferDuration 參數值中指定緩衝區長度。 針對轉譯用戶端,緩衝區長度會決定應用程式可以在單一處理階段期間寫入端點緩衝區的最大轉譯數據量。 對於擷取客戶端,緩衝區長度會決定音訊引擎在單一處理階段期間可從端點緩衝區讀取的最大擷取數據量。 客戶端應該一律在呼叫 Initialize 之後呼叫 GetBufferSize,以判斷配置緩衝區的實際大小,這可能與要求的大小不同。

轉譯用戶端可以使用此值來計算每個處理階段期間可從 IAudioRenderClient::GetBuffer 要求的最大轉譯緩衝區大小。

如需呼叫 GetBufferSize 方法的程式 代碼範例,請參閱下列主題:

規格需求

需求
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 audioclient.h

另請參閱

IAudioClient 介面

IAudioClient::Initialize

IAudioRenderClient::GetBuffer