Freigeben über


SerCxGetRingBufferUtilization-Funktion (sercx.h)

Mit der SerCxGetRingBufferUtilization-Methode kann der Treiber des seriellen Controllers bestimmen, wie viel des Type-Ahead-Ringpuffers derzeit von Daten gefüllt wird, die vom seriellen Port empfangen werden.

Syntax

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

Parameter

[in] Device

Ein WDFDEVICE-Handle für das Frameworkgerätobjekt, das den seriellen Controller darstellt.

[out, optional] BytesUsed

Die Anzahl der Bytes ungelesener 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 in Bytes, der zum Speichern empfangener Daten verwendet wird.

Rückgabewert

Keine

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 für die genaue Ausführung der Softwareflusssteuerung (XON/XOFF) benötigt.

Um die Softwareflusssteuerung zu implementieren, überwacht der serielle Controllertreiber den verfügbaren Speicherplatz im Type-Ahead-Ringpuffer. Der verfügbare Speicherplatz in Bytes ist gleich BufferSize - BytesUsed. Wenn der verfügbare Speicherplatz unter einen vom Client angegebenen Schwellenwert fällt, XoffLimit, sendet der serielle Controllertreiber ein XOFF-Zeichen, um den Sendeport anzuhalten. Wenn später der verfügbare Speicherplatz über einen vom Client angegebenen Schwellenwert ( XonLimit) steigt, überträgt der Treiber ein XON-Zeichen, um den Sendeport anzuleiten, die Übertragung fortzusetzen. In der Regel hat der Client diese beiden Schwellenwerte in einer vorherigen IOCTL_SERIAL_SET_HANDFLOW E/A-Steuerungsanforderung angegeben.

SerCx wertet den verfügbaren Speicherplatz im Type-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 des Treibers 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
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.
Zielplattform Universell
Header sercx.h
IRQL <= DISPATCH_LEVEL

Weitere Informationen

EvtSerCxReceive

IOCTL_SERIAL_SET_HANDFLOW