KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION 属性为音频数据指定驱动程序分配的循环缓冲区,并标识事件通知要求。

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

使用情况摘要表

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

固定

KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION

KSRTAUDIO_BUFFER

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

如果需要 DMA 驱动的事件通知,可以使用此属性。 基于 NotificationCount 成员,注册的事件在循环缓冲区的每个循环中被发信号一次(在结束时)或两次(在中点和结束时)。 成功调用 KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION 后,使用 KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT 注册事件。

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

返回值

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

状态代码 含义

STATUS_UNSUCCESSFUL

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

STATUS_INSUFFICIENT_RESOURCES

无法为缓冲区分配内存。

STATUS_DEVICE_NOT_READY

设备未准备就绪。

注解

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

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

通常,音频硬件要求音频缓冲器在采样边界上开始和结束,或者它满足其他类型的依赖于硬件的对齐约束。 如果有足够的内存可用,则缓冲区的实际大小是四舍五入(向上或向下)到最近的样本或其他硬件约束边界的请求大小。 否则,实际大小可以小于请求的大小。

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

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

要求

版本

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

标头

Ksmedia.h

另请参阅

KSPROPERTY

KSRTAUDIO_BUFFER

KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION

KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT