Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Det här dokumentet beskriver konsolplattformsfunktioner som inte längre ingår i vår ekosystemöversikt. Vi rekommenderar inte att du använder det här innehållet i nya produkter, men vi kommer att fortsätta att stödja befintliga användningar på obestämd tid. Vår föredragna moderna lösning fokuserar på virtuella terminalsekvenser för maximal kompatibilitet i plattformsoberoende scenarier. Du hittar mer information om det här designbeslutet i vår klassiska konsol jämfört med det virtuella terminaldokumentet .
En buffert för indatafunktioner på låg nivå i konsolen innehåller indataposter som kan innehålla information om tangentbord, mus, buffertändring, fokus och menyhändelser. Funktionerna på låg nivå ger direkt åtkomst till indatabufferten, till skillnad från de högnivåfunktioner som filtrerar och bearbetar indatabuffertens data och tar bort alla utom tangentbordsindata.
Det finns fem lågnivåfunktioner för åtkomst till en konsols indatabuffert:
- ReadConsoleInput
- PeekConsoleInput
- GetNumberOfConsoleInputEvents
- WriteConsoleInput
- FlushConsoleInputBuffer
Funktionerna ReadConsoleInput, PeekConsoleInput och WriteConsoleInput använder INPUT_RECORD-strukturen för att läsa från eller skriva till en indatabuffert.
Här följer beskrivningar av indatafunktionerna för konsolen på låg nivå.
| Funktion | Beskrivning |
|---|---|
| ReadConsoleInput | Läser och tar bort indataposter från en indatabuffert. Funktionen returneras inte förrän minst en post är tillgänglig för läsning. Sedan överförs alla tillgängliga poster till bufferten i anropsprocessen tills antingen inga fler poster är tillgängliga eller det angivna antalet poster har lästs. Olästa poster finns kvar i indatabufferten för nästa läsåtgärd. Funktionen rapporterar det totala antalet poster som har lästs. Ett exempel som använder ReadConsoleInput finns i Läsa indatabufferthändelser. |
| PeekConsoleInput | Läser utan att ta bort väntande indataposter i en indatabuffert. Alla tillgängliga poster upp till det angivna numret kopieras till bufferten i anropsprocessen. Om inga poster är tillgängliga returnerar funktionen omedelbart. Funktionen rapporterar det totala antalet poster som har lästs. |
| GetNumberOfConsoleInputEvents | Avgör antalet olästa indataposter i en indatabuffert. |
| WriteConsoleInput | Placerar indataposter i indatabufferten bakom väntande poster i bufferten. Indatabufferten växer dynamiskt om det behövs för att lagra så många poster som skrivs. Om du vill använda den här funktionen måste det angivna indatabufferthandtaget ha GENERIC_WRITE åtkomsträtt. |
| FlushConsoleInputBuffer | Tar bort alla olästa händelser i indatabufferten. Om du vill använda den här funktionen måste det angivna indatabufferthandtaget ha GENERIC_WRITE åtkomsträtt. |
En tråd i ett programs process kan utföra en vänteåtgärd för att vänta tills indata är tillgängliga i en indatabuffert. Om du vill initiera en vänteåtgärd anger du ett handtag till indatabufferten i ett anrop till någon av väntefunktionerna. Dessa funktioner kan returneras när tillståndet för ett eller flera objekt signaleras. Tillståndet för ett konsolindatahandtag signaleras när det finns olästa poster i indatabufferten. Tillståndet återställs till icke-signalerad när indatabufferten blir tom. Om det inte finns några indata, går den anropande tråden in i ett effektivt väntetillstånd, vilket förbrukar mycket lite processortid medan du väntar på att villkoren för vänteåtgärden ska vara uppfyllda.