Lese- und Schreibvorgänge
Windows unterstützt sowohl synchrone als auch asynchrone (überlappende) Datei-E/A-Vorgänge für serielle Kommunikationsressourcen. Überlappende Vorgänge ermöglichen es dem aufrufenden Thread, andere Aufgaben auszuführen, während der Vorgang im Hintergrund ausgeführt wird. Ein Thread verwendet die ReadFile- oder ReadFileEx-Funktion , um aus einer Kommunikationsressource zu lesen, und die WriteFile- oder WriteFileEx-Funktion , um in eine Kommunikationsressource zu schreiben. ReadFile und WriteFile können synchron oder asynchron ausgeführt werden. ReadFileEx und WriteFileEx können nur asynchron ausgeführt werden.
Das Verhalten dieser Lese- und Schreibfunktionen wird davon beeinflusst, ob die Funktion als überlappender Vorgang ausgeführt wird, ob die Timeoutparameter dem Handle zugeordnet sind und ob dem Handle Flusssteuerungsparameter zugeordnet sind.
Ein Thread kann auch mit der TransmitCommChar-Funktion in eine Kommunikationsressource schreiben, die ein angegebenes Zeichen vor ausstehenden Daten im Ausgabepuffer überträgt. Diese Funktion ist nützlich für die Übertragung eines Signalzeichens mit hoher Priorität an das Empfangssystem. Die Übertragung des Zeichens mit hoher Priorität unterliegt weiterhin Ablaufsteuerungs- und Schreibtimeouts, und der Vorgang wird synchron ausgeführt.
Ein Thread kann die PurgeComm-Funktion verwenden, um alle Zeichen im Ausgabe- oder Eingabepuffer eines Geräts zu verwerfen. PurgeComm kann auch ausstehende Lese- oder Schreibvorgänge beenden, selbst wenn die Vorgänge noch nicht abgeschlossen wurden. Wenn ein Thread PurgeComm verwendet, um einen Ausgabepuffer zu leeren, werden die gelöschten Zeichen nicht übertragen. Um den Ausgabepuffer zu leeren und gleichzeitig sicherzustellen, dass der Inhalt übertragen wird, kann ein Thread die FlushFileBuffers-Funktion aufrufen (ein synchroner Vorgang). Beachten Sie jedoch, dass FlushFileBuffers der Flusssteuerung, aber nicht dem Schreiben von Timeouts unterliegt und erst zurückgegeben wird, wenn alle ausstehenden Schreibvorgänge übertragen wurden.