IAudioClock2::GetDevicePosition 方法 (audioclient.h)
GetDevicePosition 方法直接从硬件获取当前设备位置(以帧为单位)。
语法
HRESULT GetDevicePosition(
[out] UINT64 *DevicePosition,
[out] UINT64 *QPCPosition
);
参数
[out] DevicePosition
接收设备位置(以帧为单位)。 接收的位置是方法直接从硬件获取的未处理值。 有关详细信息,请参阅“备注”。
[out] QPCPosition
在音频终结点设备读取在 DevicePosition 参数中检索到的设备位置以响应 GetDevicePosition 调用时接收性能计数器的值。
GetDevicePosition 将计数器值转换为 100 纳秒的时间单位,然后再将其写入 QPCPosition。
如果客户端不需要性能计数器值,则 QPCPosition 可以为 NULL。
有关详细信息,请参阅“备注”。
返回值
如果该方法成功,则它会返回 S_OK。
返回代码 | 说明 |
---|---|
|
参数 DevicePosition 为 NULL。 |
|
音频终结点已断开连接。 |
|
尚未为此流调用 IAudioClient::Start 方法。 |
注解
此方法仅适用于共享模式流。
此方法检索两个相关的流位置值:
- 设备位置。 客户端在 DevicePosition 中检索未处理的设备位置。 这是当前通过扬声器播放的示例的流位置, (呈现流) 或通过麦克风 (录制捕获流) 。 设备终结点的采样率可能与客户端使用的混合格式的采样率不同。 若要从客户端检索设备位置,请调用 IAudioClock::GetPosition。
- 性能计数器。 客户端在 QPCPosition 中检索性能计数器。 当音频终结点设备将流位置存储在 GetDevicePosition 方法的 DevicePosition 参数中时,GetDevicePosition 通过调用 QueryPerformanceCounter 函数来获取计数器值。 GetDevicePosition 将计数器值转换为 100 纳秒的时间单位。 有关 QueryPerformanceCounter 和 QueryPerformanceFrequency 的详细信息,请参阅Windows SDK文档。
- 将原始计数器值乘以 10,000,000。
- 将结果除以从 QueryPerformanceFrequency 获取的计数器频率。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | audioclient.h |