Eingabefunktionen für die Konsolen auf niedriger Ebene

Wichtig

In diesem Dokument werden Konsolenplattformfunktionen beschrieben, die nicht mehr Teil unserer Ökosystem-Roadmap sind. Wir empfehlen nicht, diesen Inhalt in neuen Produkten zu verwenden, aber wir werden weiterhin vorhandene Nutzungen für die unbegrenzte Zukunft unterstützen. Unsere bevorzugte moderne Lösung konzentriert sich auf virtuelle Terminalsequenzen für maximale Kompatibilität in plattformübergreifenden Szenarien. Weitere Informationen zu dieser Designentscheidung finden Sie in unserem klassischen Konsolendokument im Vergleich zum virtuellen Terminal .

Ein Puffer mit Konsoleneingabefunktionen auf niedriger Ebene enthält Eingabedatensätze, die Informationen zu Tastatur-, Maus-, Pufferänderungs-, Fokus- und Menüereignissen enthalten können. Die Funktionen auf niedriger Ebene bieten direkten Zugriff auf den Eingabepuffer, im Gegensatz zu den Funktionen auf hoher Ebene, die die Daten des Eingabepuffers filtern und verarbeiten, wobei die gesamte Tastatureingabe aufgehoben wird.

Es gibt fünf Funktionen auf niedriger Ebene für den Zugriff auf den Eingabepuffer einer Konsole:

Die Funktionen ReadConsoleInput, PeekConsoleInput und WriteConsoleInput verwenden die INPUT_RECORD Struktur, um aus einem Eingabepuffer zu lesen oder in einen Eingabepuffer zu schreiben.

Nachfolgend sind Beschreibungen der Eingabefunktionen der Konsole auf niedriger Ebene aufgeführt.

Funktion Beschreibung
ReadConsoleInput Liest und entfernt Eingabedatensätze aus einem Eingabepuffer. Die Funktion wird erst zurückgegeben, wenn mindestens ein Datensatz gelesen werden kann. Dann werden alle verfügbaren Datensätze in den Puffer des aufrufenden Prozesses übertragen, bis entweder keine weiteren Datensätze verfügbar sind oder die angegebene Anzahl von Datensätzen gelesen wurde. Ungelesene Datensätze verbleiben im Eingabepuffer für den nächsten Lesevorgang. Die Funktion meldet die Gesamtanzahl der Datensätze, die gelesen wurden. Ein Beispiel, das ReadConsoleInput verwendet, finden Sie unter Lesen von Eingabepufferereignissen.
PeekConsoleInput Liest ohne die ausstehenden Eingabedatensätze in einem Eingabepuffer zu entfernen. Alle verfügbaren Datensätze bis zur angegebenen Nummer werden in den Puffer des aufrufenden Prozesses kopiert. Wenn keine Datensätze verfügbar sind, wird die Funktion sofort zurückgegeben. Die Funktion meldet die Gesamtanzahl der Datensätze, die gelesen wurden.
GetNumberOfConsoleInputEvents Bestimmt die Anzahl der ungelesenen Eingabedatensätze in einem Eingabepuffer.
WriteConsoleInput Platziert Eingabedatensätze in den Eingabepuffer hinter allen ausstehenden Datensätzen im Puffer. Der Eingabepuffer wird bei Bedarf dynamisch wachsen, um so viele Datensätze wie geschrieben zu halten. Um diese Funktion zu verwenden, muss der angegebene Eingabepufferziehpunkt über das GENERIC_WRITE Zugriffsrecht verfügen.
FlushConsoleInputBuffer Hebt alle ungelesenen Ereignisse im Eingabepuffer auf. Um diese Funktion zu verwenden, muss der angegebene Eingabepufferziehpunkt über das GENERIC_WRITE Zugriffsrecht verfügen.

Ein Thread des Prozesses einer Anwendung kann einen Wartevorgang ausführen, um zu warten, bis die Eingabe in einem Eingabepuffer verfügbar ist. Um einen Wartevorgang zu initiieren, geben Sie einen Handle für den Eingabepuffer in einem Aufruf einer der Wartefunktionen an. Diese Funktionen können zurückgegeben werden, wenn der Status eines oder mehrerer Objekte signalisiert wird. Der Zustand eines Konsoleneingabehandles wird signalisiert, wenn ungelesene Datensätze im Eingabepuffer vorhanden sind. Der Zustand wird auf nicht signalisiert zurückgesetzt, wenn der Eingabepuffer leer wird. Wenn keine Eingabe verfügbar ist, wechselt der aufrufende Thread in einen effizienten Wartezustand, was sehr wenig Prozessorzeit in Anspruch nimmt, während auf die Bedingungen des Wartevorgangs gewartet wird.