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. Debe establecerse en 0.

[out] PerformanceCounterValue

Devuelve el valor del contador de rendimiento correspondiente al instante de muestreo del primer ejemplo del paquete.

[out] MoreData

Devuelve TRUE si hay más datos listos inmediatamente. El sistema operativo puede llamar opcionalmente a esta rutina de nuevo 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 nuevos datos disponibles.

Observaciones

Antes de leer los datos de audio capturados desde el búfer de 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 de 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 el funcionamiento normal, el sistema operativo llama a esta rutina después de que el controlador establezca el evento de notificación de 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 de 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 es posible que el sistema operativo no haya leído los datos.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible en Windows 10 y versiones posteriores.
de la plataforma de destino de Windows
encabezado de portcls.h
irQL Nivel pasivo

Consulte también

IMiniportWaveRTInputStream