KSPROPERTY_RTAUDIO_PACKETCOUNT
KSPROPERTY_RTAUDIO_PACKETCOUNT devuelve el recuento (basado en 1) de paquetes transferidos completamente desde el búfer de WaveRT al hardware.
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) es una estructura KSPROPERTY . Antes de enviar la solicitud, el cliente carga la estructura con el recuento (basado en 1) de paquetes transferidos completamente desde el búfer de WaveRT al hardware.
El valor de la propiedad es una variable de tipo ULONG.
Valor devuelto
Una solicitud de propiedad KSPROPERTY_RTAUDIO_PACKETCOUNT devuelve STATUS_SUCCESS para indicar que se ha completado correctamente. De lo contrario, la solicitud devuelve un código de estado de error adecuado.
Observaciones
Desde el recuento de paquetes, el sistema operativo puede derivar la posición de flujo de los paquetes que escribe en el búfer de WaveRT. El sistema operativo también puede derivar la posición del búfer de WaveRT del siguiente paquete para escribir en el búfer de WaveRT. En el caso de los controladores waveRT, el controlador señala un único evento de notificación a medida que transfiere datos de cada paquete del búfer de WaveRT. Por lo tanto, el evento por sí solo no puede indicar qué paquete dentro del búfer de WaveRT se está transfiriendo. En el funcionamiento normal, esto no es un problema, pero en la corrección de casos de subflujo se consigue más fácilmente consultando el recuento de paquetes desde el que el sistema operativo puede determinar qué paquete escribir a continuación.
El PacketCount devuelto indica el recuento (basado en 1) de paquetes transferidos completamente desde el búfer de WaveRT al hardware. A partir de esto, el sistema operativo puede determinar el número basado en 0 del paquete que se está transfiriendo actualmente y asegurarse de que escribe delante de ese paquete. Por ejemplo, si el número de paquetes es 5, 5 paquetes se han transferido por completo. Es decir, los paquetes 0-4 se han transferido completamente. Por lo tanto, el paquete 5 está en curso y el sistema operativo debe escribir el paquete 6. Si el recuento de notificaciones del búfer de WaveRT es 2, el paquete 6 estaría en el desplazamiento 0 dentro del búfer de WaveRT (porque el módulo 2 es 0 y 0 veces el tamaño del paquete es 0).
El sistema operativo puede obtener esta propiedad en cualquier momento. Sin embargo, normalmente obtiene esta propiedad solo periódicamente o después de que el controlador devuelva un error de flujo de datos (STATUS_DATA_LATE_ERROR, STATUS_DATA_OVERRUN) de SetWritePacket() para volver a sincronizar con el controlador.
El controlador debe restablecer el número de paquetes a 0 cuando la secuencia está en KSSTATE_STOP.
Requisitos
Versión |
Disponible en Windows 10 y sistemas operativos Windows posteriores. |
Encabezado |
Ksmedia.h |