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

Retorna informações sobre os dados capturados.

Sintaxe

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

Parâmetros

[out] PacketNumber

Retorna o número do pacote relativo ao início da captura.

[out] Flags

Reservado para uso futuro. Deve ser definido como 0.

[out] PerformanceCounterValue

Retorna o valor do contador de desempenho correspondente ao instantâneo de amostragem do primeiro exemplo no pacote.

[out] MoreData

Retornará TRUE se houver mais dados prontos imediatamente. Opcionalmente, o sistema operacional pode chamar essa rotina imediatamente novamente depois de processar o pacote para obter as próximas informações do pacote. Se o driver retornar FALSE, a captura estará operando em tempo real.

Retornar valor

GetReadPacket retornará STATUS_SUCCESS se a chamada tiver sido bem-sucedida. Caso contrário, a função retornará um erro apropriado status código.

STATUS_DEVICE_NOT_READY - O driver retornará esse erro se nenhum dado novo estiver disponível.

Comentários

Antes de ler dados de áudio capturados do buffer WaveRT, o sistema operacional chama essa rotina para obter informações sobre os dados disponíveis.

O número do pacote identifica um pacote dentro do fluxo. Isso é redefinido para zero quando o fluxo está em KSSTATE_STOP. O número avança com cada buffer capturado. No número do pacote, o sistema operacional pode derivar o local do pacote dentro do buffer WaveRT e também pode derivar a posição do fluxo do pacote em relação ao início do fluxo.

O tamanho do pacote é o tamanho do buffer WaveRT dividido pela NotificationCount passada para IMiniportWaveRTStreamNotification::AllocateBufferWithNotification. O sistema operacional pode chamar essa rotina a qualquer momento. Na operação normal, o sistema operacional chama essa rotina depois que o driver define o evento de notificação de buffer ou depois que uma chamada anterior retorna true para MoreData. Quando o sistema operacional chama essa rotina, o driver pode assumir que o sistema operacional terminou de ler todos os pacotes anteriores. Se o hardware tiver capturado dados suficientes, o driver poderá imediatamente estourar o próximo pacote completo para o buffer WaveRT e definir o evento de buffer novamente. No caso de estouro de captura (quando o sistema operacional não lê dados rapidamente o suficiente), o driver de áudio pode remover ou substituir alguns dados de áudio. O driver de áudio descarta ou substitui os dados mais antigos primeiro, o driver de áudio pode continuar a avançar seu contador de pacotes interno, embora o sistema operacional possa não ter lido os dados.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível em Windows 10 e posterior.
Plataforma de Destino Windows
Cabeçalho portcls.h
IRQL Nível passivo

Confira também

IMiniportWaveRTInputStream