Método IMiniportWaveRTOutputStream::GetPacketCount (portcls.h)

GetPacketCount retorna a contagem (baseada em 1) de pacotes completamente transferidos do buffer WaveRT para hardware.

Sintaxe

NTSTATUS GetPacketCount(
  [out] ULONG *pPacketCount
);

Parâmetros

[out] pPacketCount

pPacketCount retorna o número de pacotes completamente transferidos do buffer WaveRT para o hardware.

Retornar valor

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

Comentários

Na contagem de pacotes, o sistema operacional pode derivar a posição de fluxo dos pacotes que grava no buffer WaveRT. O sistema operacional também pode derivar a posição do buffer WaveRT do próximo pacote a ser gravado no buffer WaveRT. Para drivers WaveRT, o driver sinaliza um único evento de notificação à medida que transfere dados de cada pacote do buffer WaveRT. Portanto, o evento sozinho não pode indicar qual pacote dentro do buffer WaveRT está sendo transferido. Na operação normal, isso não é uma preocupação, mas em casos de subfluxo, a correção é obtida com mais facilidade consultando a contagem de pacotes da qual o sistema operacional pode determinar qual pacote gravar em seguida.

O PacketCount retornado indica a contagem (baseada em 1) de pacotes completamente transferidos do buffer WaveRT para o hardware. Com isso, o sistema operacional pode determinar o número baseado em 0 do pacote que está sendo transferido no momento e garantir que ele seja gravado antes desse pacote. Por exemplo, se a contagem de pacotes for 5, cinco pacotes serão completamente transferidos. Ou seja, os pacotes 0-4 foram completamente transferidos. Portanto, o pacote 5 está em andamento e o sistema operacional deve gravar o pacote 6. Se a contagem de notificações para o buffer WaveRT for 2, o pacote 6 estará no deslocamento 0 dentro do buffer WaveRT (porque 6 módulo 2 é 0 e 0 vezes o tamanho do pacote é 0).

O sistema operacional pode obter essa propriedade a qualquer momento. No entanto, geralmente, ele obtém essa propriedade apenas periodicamente ou depois que o driver retorna um erro de fluxo de dados (STATUS_DATA_LATE_ERROR, STATUS_DATA_OVERRUN) de SetWritePacket() para ressincronizar com o driver.

O driver deve redefinir a contagem de pacotes para 0 quando o fluxo estiver em KSSTATE_STOP.

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

IMiniportWaveRTOutputStream