Compartilhar via


Função SerCxGetRingBufferUtilization (sercx.h)

O método SerCxGetRingBufferUtilization permite que o driver do controlador serial determine quanto do buffer de anel type-ahead 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 de 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 anéis do tipo à frente que é usado para armazenar dados recebidos.

[out, optional] BufferSize

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

Retornar valor

Nenhum

Comentários

O driver do controlador serial chama essa função para determinar quanto espaço de armazenamento está disponível no buffer de anéis do tipo à frente. 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 que o driver requer para executar 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 emissora para pausar a transmissão. Posteriormente, quando o espaço disponível sobe acima de um limite especificado pelo cliente, XonLimit, o driver transmite um caractere XON para informar a porta emissora 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 das configurações atuais de controle de fluxo e handshaking. Depois que o buffer de anel type-ahead esvazia completamente, o SerCx chama a função de retorno de chamada EvtSerCxReceive do driver para que o driver possa enviar um XON e retomar o recebimento de dados. A função EvtSerCxReceive pode chamar SerCxGetRingBufferUtilization para determinar se deseja enviar um XON.

Requisitos

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

Confira também

EvtSerCxReceive

IOCTL_SERIAL_SET_HANDFLOW