Partilhar via


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

SetWritePacket informa ao driver que o sistema operacional gravou dados válidos no buffer WaveRT.

Sintaxe

NTSTATUS SetWritePacket(
  [in] ULONG PacketNumber,
  [in] DWORD Flags,
  [in] ULONG EosPacketLength
);

Parâmetros

[in] PacketNumber

O número do pacote gravado pelo sistema operacional no buffer WaveRT.

[in] Flags

Atributos adicionais relacionados ao pacote ou ao fluxo.

KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM - Esse sinalizador indica que esse pacote representa o final do fluxo de dados.

[in] EosPacketLength

O comprimento do pacote EOS se KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM for especificado em Sinalizadores. Zero é um valor válido. Se KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM não for especificado em Sinalizadores, esse parâmetro será ignorado.

Valor de retorno

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

STATUS_DATA_LATE_ERROR – o driver retornará esse erro se o sistema operacional passar um número de pacote que já foi transferido ou está sendo transferido no momento. Nesse caso, ocorreu uma condição de falha. Opcionalmente, o driver pode usar alguns dos dados do pacote ou continuar reproduzindo os dados gravados anteriormente nesse número de pacote.

STATUS_DATA_OVERRUN – O driver retornará esse erro se o sistema operacional passar um número de pacote maior do que pode ser armazenado no buffer WaveRT. Nesse caso, ocorreu uma condição de falha. Opcionalmente, o driver pode ignorar os dados no pacote.

STATUS_INVALID_DEVICE_STATE – o driver retornará esse erro se o sistema operacional chamar essa rotina após uma configuração anterior do sinalizador de KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM.

STATUS_INVALID_PARAMETER – O driver retornará esse erro se achar qualquer outro parâmetro inválido, além dos casos específicos para outro status de erro. Isso inclui quaisquer valores de sinalizador não definidos especificamente acima.

Observações

Depois que o sistema operacional chamar essa rotina, o driver poderá, opcionalmente, usar as informações fornecidas para otimizar a transferência de hardware. Por exemplo, o driver pode otimizar transferências de DMA ou o hardware do programa para interromper a transferência no final do pacote especificado, caso o sistema operacional não chame essa rotina novamente para informar o driver de outro pacote. Isso pode atenuar os efeitos audíveis do fluxo inferior, por exemplo, introduzindo uma lacuna audível em vez de repetir um buffer circular. No entanto, o driver ainda é obrigado a aumentar seu contador de pacotes interno e sinalizar eventos de notificação a uma taxa nominal em tempo real.

Exceto quando o sistema operacional especifica o sinalizador KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM, o tamanho do pacote é o tamanho do buffer WaveRT dividido pelo NotificationCount passado para IMiniportWaveRTStreamNotification::AllocateBufferWithNotification.

Dependendo dos recursos de hardware, se o sinalizador de KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM for especificado, o driver poderá silenciar o preenchimento de uma parte do buffer WaveRT que segue o pacote EOS caso o hardware transfira dados além da posição do EOS.

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível no Windows 10 e posterior.
da Plataforma de Destino Windows
cabeçalho portcls.h
IRQL Nível passivo

Consulte também

IMiniportWaveRTOutputStream