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 |