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 |