IAudioClock2::GetDevicePosition メソッド (audioclient.h)
GetDevicePosition メソッドは、現在のデバイスの位置をフレーム単位でハードウェアから直接取得します。
構文
HRESULT GetDevicePosition(
[out] UINT64 *DevicePosition,
[out] UINT64 *QPCPosition
);
パラメーター
[out] DevicePosition
デバイスの位置をフレーム単位で受け取ります。 受信した位置は、メソッドがハードウェアから直接取得する未処理の値です。 詳細については、「解説」を参照してください。
[out] QPCPosition
GetDevicePosition 呼び出しに応答して、オーディオ エンドポイント デバイスが DevicePosition パラメーターで取得したデバイス位置を読み取った時点で、パフォーマンス カウンターの値を受け取ります。
GetDevicePosition は 、カウンター値を QPCPosition に書き込む前に、100 ナノ秒の時間単位に変換します。
クライアントがパフォーマンス カウンター値を必要としない場合、QPCPosition は NULL にすることができます。
詳細については、「解説」を参照してください。
戻り値
メソッドが成功した場合は、S_OK を返します。
リターン コード | 説明 |
---|---|
|
Parameter DevicePosition は NULL です。 |
|
オーディオ エンドポイントが切断されました。 |
|
このストリームに対して IAudioClient::Start メソッドが呼び出されていません。 |
注釈
このメソッドは、共有モード ストリームにのみ適用されます。
このメソッドは、次の 2 つの相関ストリーム位置値を取得します。
- デバイスの位置。 クライアントは、 DevicePosition で未処理のデバイス位置を取得します。 これは、現在スピーカーを介して再生されている (レンダリング ストリームの場合)、またはマイク (キャプチャ ストリームの場合) を介して記録されているサンプルのストリーム位置です。 デバイス エンドポイントのサンプリング レートは、クライアントで使用されるミックス形式のサンプリング レートとは異なる場合があります。 クライアントからデバイスの位置を取得するには、 IAudioClock::GetPosition を呼び出します。
- パフォーマンス カウンター。 クライアントは 、QPCPosition でパフォーマンス カウンターを取得します。 GetDevicePosition は、オーディオ エンドポイント デバイスが GetDevicePosition メソッドの DevicePosition パラメーターにストリーム位置を格納する時点で QueryPerformanceCounter 関数を呼び出してカウンター値を取得します。 GetDevicePosition は 、カウンター値を 100 ナノ秒の時間単位に変換します。 QueryPerformanceCounter と QueryPerformanceFrequency の詳細については、Windows SDKドキュメントを参照してください。
- 生のカウンター値に 10,000,000 を乗算します。
- QueryPerformanceFrequency から取得したカウンター頻度で結果を除算します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | audioclient.h |