共用方式為


(audioclient.h) IAudioClock2::GetDevicePosition 方法

GetDevicePosition 方法會直接從硬體取得畫面格中的目前裝置位置。

語法

HRESULT GetDevicePosition(
  [out] UINT64 *DevicePosition,
  [out] UINT64 *QPCPosition
);

參數

[out] DevicePosition

接收畫面格中的裝置位置。 接收的位置是方法直接從硬體取得的未處理值。 如需詳細資訊,請參閱<備註>。

[out] QPCPosition

在音訊端點裝置讀取 DevicePosition 參數中擷取的裝置位置以回應 GetDevicePosition 呼叫時,接收性能計數器的值。
GetDevicePosition 會將計數器值轉換為 100 奈秒的時間單位,然後再將它寫入 QPCPosition。 如果用戶端不需要性能計數器值,QPCPosition 可以是 NULL。 如需詳細資訊,請參閱<備註>。

傳回值

如果方法成功,它會傳回 S_OK。

傳回碼 Description
E_POINTER
參數 DevicePositionNULL
AUDCLNT_E_DEVICE_INVALIDATED
音訊端點已中斷連線。
AUDCLNT_S_POSITION_STALLED
此數據流尚未呼叫 IAudioClient::Start 方法。

備註

這個方法只適用於共用模式數據流。

此方法會擷取兩個相互關聯的數據流位置值:

  • 裝置位置。 用戶端會在 DevicePosition 中擷取未處理的裝置位置。 這是目前透過喇叭播放的範例串流位置, (轉譯數據流) 或透過麥克風 (錄製擷取數據流) 。 裝置端點的取樣率可能與用戶端所使用的混合格式取樣率不同。 若要從用戶端擷取裝置位置,請呼叫 IAudioClock::GetPosition
  • 性能計數器。 用戶端會擷取 QPCPosition 中的性能計數器。 GetDevicePosition 會在音訊端點裝置在 GetDevicePosition 方法的 DevicePosition 參數中儲存數據流位置時呼叫 QueryPerformanceCounter 函式,以取得計數器值。 GetDevicePosition 會將計數器值轉換為 100 奈秒的時間單位。 如需 QueryPerformanceCounterQueryPerformanceFrequency 的詳細資訊,請參閱 Windows SDK 檔。
根據 GetDevicePosition 呼叫時的裝置位置和性能計數器,用戶端可以藉由呼叫 QueryPerformanceCounter 來取得目前的性能計數器,並根據記錄原始裝置位置以來的進階程度,取得更及時的裝置位置估計裝置位置。 用戶端可以呼叫 QueryPerformanceCounter 函 式,以取得遞增計數器的時鐘頻率。 在比較從 QueryPerformanceCounter 取得的原始計數器值與 GetDevicePosition 所擷取的值之前,請將原始計數器值轉換為 100 奈秒的時間單位,如下所示:
  1. 將原始計數器值乘以 10,000,000。
  2. 將結果除以從 QueryPerformanceFrequency 取得的計數器頻率。

規格需求

需求
最低支援的用戶端 Windows 7 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 R2 [僅限桌面應用程式]
目標平台 Windows
標頭 audioclient.h

另請參閱

IAudioClock2