KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION
La propiedad KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION especifica un búfer cíclico asignado por el controlador para los datos de audio e identifica los requisitos de notificación de eventos.
En la tabla siguiente se resumen las características de esta propiedad.
Tabla de resumen de uso
Obtener | Set | Destino | Tipo de descriptor de propiedad | Tipo de valor de propiedad |
---|---|---|---|---|
Sí |
No |
Anclar |
El descriptor de propiedad (datos de instancia) consta de una estructura de KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION que contiene una estructura KSPROPERTY junto con otros miembros. El cliente escribe su tamaño de búfer solicitado en la estructura . El cliente debe especificar la dirección base como NULL a menos que se necesite una dirección base específica.
Esta propiedad se usa cuando se desea una notificación de eventos controlada por DMA. En función del miembro NotificationCount , los eventos registrados se indican una vez (al final) o dos veces (en el punto medio y el final) por ciclo a través del búfer cíclico. Los eventos se registran mediante KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT después de llamar correctamente a KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION.
El valor de propiedad (datos de operación) es una estructura de tipo KSRTAUDIO_BUFFER. El controlador rellena esta estructura con el tamaño real del búfer, la dirección base y la marca de barrera de memoria para el búfer cíclico que ha asignado.
Valor devuelto
Una solicitud de propiedad KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION devuelve STATUS_SUCCESS para indicar que se ha completado correctamente. De lo contrario, la solicitud devuelve un código de estado de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de estado de error.
status code | Significado |
---|---|
STATUS_UNSUCCESSFUL |
No se puede asignar un búfer cíclico con la combinación especificada de atributos de búfer. |
STATUS_INSUFFICIENT_RESOURCES |
No se puede asignar memoria para el búfer. |
STATUS_DEVICE_NOT_READY |
El dispositivo no está listo. |
Observaciones
La dirección base es la dirección de memoria virtual al principio del búfer cíclico. El cliente puede acceder directamente al búfer en esta dirección. El búfer es contiguo en memoria virtual. El controlador determina si el búfer es contiguo en memoria física.
El cliente establece la dirección base en el descriptor de propiedad en NULL. El controlador establece la dirección base en el valor de propiedad en la dirección virtual del búfer de audio asignado.
Normalmente, el hardware de audio requiere que el búfer de audio comience y finalice en los límites de ejemplo o que cumpla otros tipos de restricciones de alineación dependientes del hardware. Si hay suficiente memoria disponible, el tamaño real del búfer es el tamaño solicitado redondeado (arriba o abajo) al ejemplo más cercano u otro límite restringido por hardware. De lo contrario, el tamaño real puede ser menor que el tamaño solicitado.
Si una solicitud de propiedad de KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION se realiza correctamente, el valor de propiedad, que es una estructura de tipo KSRTAUDIO_BUFFER, contiene la dirección y el tamaño del búfer asignado por el controlador.
Al cerrar el pin, se libera automáticamente el búfer que se asignó a través de esta propiedad.
Requisitos
Versión |
Disponible en Windows Vista y en sistemas operativos Windows posteriores. |
Encabezado |
Ksmedia.h |