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 |