Compartilhar via


Função SerCxGetRingBufferUtilization (sercx.h)

O método SerCxGetRingBufferUtilization permite que o driver do controlador serial determine quanto do buffer de anel de tipo à frente está atualmente preenchido pelos dados recebidos da porta serial.

Sintaxe

void SerCxGetRingBufferUtilization(
  [in]            WDFDEVICE Device,
  [out, optional] PULONG    BytesUsed,
  [out, optional] PULONG    BufferSize
);

Parâmetros

[in] Device

Um identificador WDFDEVICE para o objeto de dispositivo da estrutura que representa o controlador serial.

[out, optional] BytesUsed

O número de bytes de dados não lidos que estão atualmente contidos no buffer de anel com antecedência que é usado para armazenar dados recebidos.

[out, optional] BufferSize

O tamanho, em bytes, do buffer de anel de tipo à frente usado para armazenar dados recebidos.

Valor de retorno

Nenhum

Observações

O driver do controlador serial chama essa função para determinar quanto espaço de armazenamento está disponível no buffer de anel com antecedência. A extensão do controlador serial (SerCx) mantém esse buffer para conter dados que o driver do controlador serial recebe da porta serial quando nenhuma solicitação de leitura do cliente está sendo processada no momento. Essa função fornece as informações necessárias para que o driver execute com precisão o controle de fluxo de software (XON/XOFF).

Para implementar o controle de fluxo de software, o driver do controlador serial monitora a quantidade de espaço disponível no buffer de anel de tipo à frente. O espaço disponível, em bytes, é igual a bufferSize - bytesUsed. Quando o espaço disponível fica abaixo de um limite especificado pelo cliente, XoffLimit, o driver do controlador serial transmite um caractere XOFF para informar a porta de transmissão para pausar a transmissão. Posteriormente, quando o espaço disponível aumenta acima de um limite especificado pelo cliente, XonLimit, o driver transmite um caractere XON para informar à porta de transmissão para retomar a transmissão. Normalmente, o cliente especificou esses dois limites em uma solicitação de controle de E/S IOCTL_SERIAL_SET_HANDFLOW anterior.

O SerCx avalia o espaço disponível no buffer de anel de tipo à frente no contexto do controle de fluxo atual e das configurações de handshaking. Depois que o buffer de anel type-ahead esvaziar completamente, o SerCx chamará o do driver EvtSerCxReceive função de retorno de chamada para que o driver possa enviar um XON e retomar o recebimento de dados. A função EvtSerCxReceive pode chamar SerCxGetRingBufferUtilization para determinar se um XON deve ser enviado.

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível a partir do Windows 8.
da Plataforma de Destino Universal
cabeçalho sercx.h
IRQL <= DISPATCH_LEVEL

Consulte também

EvtSerCxReceive

IOCTL_SERIAL_SET_HANDFLOW