Compartir a través de


Función SerCxGetRingBufferUtilization (sercx.h)

El método SerCxGetRingBufferUtilization permite al controlador de controlador serie determinar la cantidad del búfer de anillo de escritura anticipada que se rellena actualmente por los datos recibidos del puerto serie.

Sintaxis

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

Parámetros

[in] Device

Un identificador WDFDEVICE para el objeto de dispositivo de marco que representa el controlador serie.

[out, optional] BytesUsed

Número de bytes de datos no leídos que se encuentran actualmente en el búfer de anillo de escritura anticipada que se usa para almacenar los datos recibidos.

[out, optional] BufferSize

Tamaño, en bytes, del búfer de anillo de escritura anticipada que se usa para almacenar los datos recibidos.

Valor devuelto

Ninguno

Observaciones

El controlador de controlador serie llama a esta función para determinar cuánto espacio de almacenamiento está disponible en el búfer de anillo de escritura anticipada. La extensión del controlador serie (SerCx) mantiene este búfer para contener datos que el controlador del controlador serie recibe del puerto serie cuando no se está procesando ninguna solicitud de lectura del cliente. Esta función proporciona la información necesaria para realizar con precisión el control de flujo de software (XON/XOFF).

Para implementar el control de flujo de software, el controlador de controlador serie supervisa la cantidad de espacio disponible en el búfer de anillo de escritura anticipada. El espacio disponible, en bytes, es igual a BufferSize - BytesUsed. Cuando el espacio disponible cae por debajo de un umbral especificado por el cliente, XoffLimit, el controlador de controlador de serie transmite un carácter XOFF para indicar al puerto de transmisión que pausa la transmisión. Más adelante, cuando el espacio disponible se eleva por encima de un umbral especificado por el cliente, XonLimit, el controlador transmite un carácter XON para indicar al puerto de transmisión que reanude la transmisión. Normalmente, el cliente especificó estos dos umbrales en una solicitud de control de E/S de IOCTL_SERIAL_SET_HANDFLOW anterior.

SerCx evalúa el espacio disponible en el búfer de anillo de escritura anticipada en el contexto del control de flujo actual y la configuración de protocolo de enlace. Después de que el búfer de anillo de escritura anticipada se vacía completamente, SerCx llama a la EvtSerCxReceive función de devolución de llamada para que el controlador pueda enviar un XON y reanudar la recepción de datos. La función EvtSerCxReceive puede llamar a SerCxGetRingBufferUtilization para determinar si se debe enviar un XON.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 8.
de la plataforma de destino de Universal
encabezado de sercx.h
irQL <= DISPATCH_LEVEL

Consulte también

EvtSerCxReceive

IOCTL_SERIAL_SET_HANDFLOW