Compartir a través de


Método IMiniportWaveRTInputStream::GetReadPacket (portcls.h)

Devuelve información sobre los datos capturados.

Sintaxis

NTSTATUS GetReadPacket(
  [out] ULONG   *PacketNumber,
  [out] DWORD   *Flags,
  [out] ULONG64 *PerformanceCounterValue,
  [out] BOOL    *MoreData
);

Parámetros

[out] PacketNumber

Devuelve el número de paquete relativo al inicio de la captura.

[out] Flags

Reservado para uso futuro. Se debe establecer en 0.

[out] PerformanceCounterValue

Devuelve el valor del contador de rendimiento correspondiente al instante de muestreo de la primera muestra del paquete.

[out] MoreData

Devuelve TRUE si hay más datos listos inmediatamente. Opcionalmente, el sistema operativo puede llamar inmediatamente a esta rutina después de procesar el paquete para obtener la siguiente información del paquete. Si el controlador devuelve FALSE, la captura funciona en tiempo real.

Valor devuelto

GetReadPacket devuelve STATUS_SUCCESS si la llamada se realizó correctamente. De lo contrario, la función devuelve un código de estado de error adecuado.

STATUS_DEVICE_NOT_READY: el controlador devuelve este error si no hay datos nuevos disponibles.

Comentarios

Antes de leer los datos de audio capturados del búfer waveRT, el sistema operativo llama a esta rutina para obtener información sobre los datos disponibles.

El número de paquete identifica un paquete dentro de la secuencia. Esto se restablece a cero cuando la secuencia está en KSSTATE_STOP. El número avanza con cada búfer capturado. Desde el número de paquete, el sistema operativo puede derivar la ubicación del paquete dentro del búfer waveRT y también puede derivar la posición de flujo del paquete en relación con el inicio de la secuencia.

El tamaño del paquete es el tamaño del búfer de WaveRT dividido por notificationCount pasado a IMiniportWaveRTStreamNotification::AllocateBufferWithNotification. El sistema operativo puede llamar a esta rutina en cualquier momento. En funcionamiento normal, el sistema operativo llama a esta rutina después de que el controlador establezca el evento de notificación del búfer o después de que una llamada anterior devuelva true para MoreData. Cuando el sistema operativo llama a esta rutina, el controlador puede suponer que el sistema operativo ha terminado de leer todos los paquetes anteriores. Si el hardware ha capturado suficientes datos, el controlador puede expandir inmediatamente el siguiente paquete completo al búfer waveRT y volver a establecer el evento de búfer. En el caso de desbordamiento de captura (cuando el sistema operativo no lee los datos lo suficientemente rápido) el controlador de audio puede quitar o sobrescribir algunos datos de audio. El controlador de audio quita o sobrescribe primero los datos más antiguos, el controlador de audio puede seguir avanzando su contador de paquetes interno aunque el sistema operativo no haya leído los datos.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows 10 y versiones posteriores.
Plataforma de destino Windows
Encabezado portcls.h
IRQL Nivel pasivo

Consulte también

IMiniportWaveRTInputStream