Partager via


SerCxGetRingBufferUtilization, fonction (sercx.h)

La méthode SerCxGetRingBufferUtilization permet au pilote de contrôleur série de déterminer la quantité de la mémoire tampon en anneau de type avant est actuellement remplie par les données reçues du port série.

Syntaxe

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

Paramètres

[in] Device

Un handle WDFDEVICE pour l’objet d’appareil framework qui représente le contrôleur série.

[out, optional] BytesUsed

Nombre d’octets de données non lues actuellement contenues dans la mémoire tampon en anneau de type avant utilisée pour stocker les données reçues.

[out, optional] BufferSize

Taille, en octets, de la mémoire tampon d’anneau de type avant utilisée pour stocker les données reçues.

Valeur de retour

None

Remarques

Le pilote du contrôleur série appelle cette fonction pour déterminer la quantité d’espace de stockage disponible dans la mémoire tampon en anneau de type avant. L’extension de contrôleur série (SerCx) gère cette mémoire tampon pour contenir les données que le pilote du contrôleur série reçoit du port série lorsqu’aucune demande de lecture du client n’est en cours de traitement. Cette fonction fournit les informations dont le pilote a besoin pour effectuer avec précision le contrôle de flux logiciel (XON/XOFF).

Pour implémenter le contrôle de flux logiciel, le pilote de contrôleur série surveille la quantité d’espace disponible dans la mémoire tampon d’anneau de type avant. L’espace disponible, en octets, est égal à BufferSize - BytesUsed. Lorsque l’espace disponible est inférieur à un seuil spécifié par le client, XoffLimit, le pilote du contrôleur série transmet un caractère XOFF pour indiquer au port de transmission de suspendre la transmission. Plus tard, lorsque l’espace disponible dépasse un seuil spécifié par le client, XonLimit, le pilote transmet un caractère XON pour indiquer au port de transmission de reprendre la transmission. En règle générale, le client a spécifié ces deux seuils dans une demande de contrôle d’E /S IOCTL_SERIAL_SET_HANDFLOW précédente.

SerCx évalue l’espace disponible dans la mémoire tampon d’anneau de type avant dans le contexte des paramètres de contrôle de flux et de négociation actuels. Une fois la mémoire tampon d’anneau de type avant complètement vidée, SerCx appelle la fonction de rappel EvtSerCxReceive du pilote afin que le pilote puisse envoyer un XON et reprendre la réception des données. La fonction EvtSerCxReceive peut appeler SerCxGetRingBufferUtilization pour déterminer s’il faut envoyer un XON.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 8.
Plateforme cible Universal
En-tête sercx.h
IRQL <= DISPATCH_LEVEL

Voir aussi

EvtSerCxReceive

IOCTL_SERIAL_SET_HANDFLOW