KSPROPERTY_RTAUDIO_BUFFER

KSPROPERTY_RTAUDIO_BUFFER 属性为音频数据指定驱动程序分配的循环缓冲区。

下表总结了此属性的功能。

使用情况摘要表

获取 设置 目标 属性描述符类型 属性值类型

固定

KSRTAUDIO_BUFFER_PROPERTY

KSRTAUDIO_BUFFER

属性描述符(实例数据)由 KSRTAUDIO_BUFFER_PROPERTY 结构组成,该结构包含 KSPROPERTY 结构以及其他成员。 客户端将其请求的缓冲区大小写入结构中。 如果客户端不必使用特定的基址,则必须将基址指定为 NULL

属性值(操作数据)是 KSRTAUDIO_BUFFER 类型的结构。 驱动程序使用实际缓冲区大小、基址和已分配的循环缓冲区的内存屏障标志来填充此结构。

返回值

KSPROPERTY_RTAUDIO_BUFFER 属性请求返回 STATUS_SUCCESS,以指示已成功完成。 否则,请求将返回适当的故障状态代码。 下表显示了一些可能的故障状态代码。

状态代码 含义

STATUS_UNSUCCESSFUL

无法分配具有指定缓冲区属性组合的循环缓冲区。

STATUS_INSUFFICIENT_RESOURCES

无法为缓冲区分配内存。

STATUS_DEVICE_NOT_READY

设备未准备就绪

注解

基址是循环缓冲区开始处的虚拟存储地址。 客户端可以直接访问此地址的缓冲区。 缓冲区在虚拟内存中是连续的。 是否使缓冲区在物理内存中连续由驱动程序决定。

客户端将属性描述符中的基址设置为 NULL。 驱动程序将属性值中的基址设置为分配的音频缓冲区的虚拟地址。

通常,音频硬件要求音频缓冲区在样本边界上开始和结束,或者满足其他类型的依赖于硬件的对齐约束。 如果有足够的内存可用,则缓冲区的实际大小是四舍五入(向上或向下)到最近的样本或其他硬件约束边界的请求大小。 实际大小必须至少为请求的大小;否则,音频会话 API (WASAPI) 音频引擎将不使用缓冲区,流创建将失败。

如果 KSPROPERTY_RTAUDIO_BUFFER 属性请求成功,属性值(KSRTAUDIO_BUFFER 类型的结构)包含驱动程序分配的缓冲区的地址和大小。

关闭引脚会自动释放通过此属性分配的缓冲区。

如果需要事件通知,则必须调用 KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION 而不是 KSPROPERTY_RTAUDIO_BUFFER。

要求

版本

适用于 Windows Vista 及更高版本的 Windows 操作系统。

标头

Ksmedia.h

另请参阅

KSRTAUDIO_BUFFER

KSRTAUDIO_BUFFER_PROPERTY

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION