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
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 |