Freigeben über


SerCxGetRingBufferUtilization-Funktion (sercx.h)

Mit der SerCxGetRingBufferUtilization--Methode kann der serielle Controllertreiber bestimmen, wie viel der Type-Ahead-Ringpuffer derzeit durch daten gefüllt wird, die vom seriellen Port empfangen wurden.

Syntax

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

Parameter

[in] Device

Ein WDFDEVICE-Handle für das Framework-Geräteobjekt, das den seriellen Controller darstellt.

[out, optional] BytesUsed

Die Anzahl der Bytes von ungelesenen Daten, die derzeit im Typ-Ahead-Ringpuffer enthalten sind, der zum Speichern empfangener Daten verwendet wird.

[out, optional] BufferSize

Die Größe des Typ-Ahead-Ringpuffers, der zum Speichern empfangener Daten verwendet wird, in Byte.

Rückgabewert

Nichts

Bemerkungen

Der serielle Controllertreiber ruft diese Funktion auf, um zu bestimmen, wie viel Speicherplatz im Type-Ahead-Ringpuffer verfügbar ist. Die serielle Controllererweiterung (SerCx) verwaltet diesen Puffer, um Daten zu enthalten, die der serielle Controllertreiber vom seriellen Port empfängt, wenn derzeit keine Leseanforderung vom Client verarbeitet wird. Diese Funktion stellt die Informationen bereit, die der Treiber benötigt, um die Softwareflusssteuerung (XON/XOFF) genau auszuführen.

Um die Softwareflusssteuerung zu implementieren, überwacht der serielle Controllertreiber den verfügbaren Speicherplatz im Type-Ahead-Ringpuffer. Der verfügbare Speicherplatz in Bytes entspricht BufferSize - BytesUsed-. Wenn der verfügbare Speicherplatz unter einen clientspezifischen Schwellenwert fällt, XoffLimit, überträgt der serielle Controllertreiber ein XOFF-Zeichen, um den Übertragungsanschluss anzuhalten. Wenn später der verfügbare Speicherplatz über einem clientspezifischen Schwellenwert steigt, XonLimit, überträgt der Treiber ein XON-Zeichen, um dem Übertragungsanschluss mitzuteilen, dass die Übertragung fortgesetzt werden soll. In der Regel hat der Client diese beiden Schwellenwerte in einer vorherigen IOCTL_SERIAL_SET_HANDFLOW E/A-Steuerelementanforderung angegeben.

SerCx wertet den verfügbaren Platz im Typ-Ahead-Ringpuffer im Kontext der aktuellen Ablaufsteuerungs- und Handshakingeinstellungen aus. Nachdem der Type-Ahead-Ringpuffer vollständig geleert wurde, ruft SerCx die EvtSerCxReceive Rückruffunktion auf, damit der Treiber ein XON senden und den Empfang von Daten fortsetzen kann. Die EvtSerCxReceive-Funktion kann SerCxGetRingBufferUtilization- aufrufen, um zu bestimmen, ob ein XON gesendet werden soll.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.
Zielplattform- Universal
Header- sercx.h
IRQL- <= DISPATCH_LEVEL

Siehe auch

EvtSerCxReceive

IOCTL_SERIAL_SET_HANDFLOW