Megosztás:


Low-Level konzolbemeneti függvények

Fontos

Ez a dokumentum a konzolplatform azon funkcióit ismerteti, amelyek már nem részei az ökoszisztéma ütemtervének. Nem javasoljuk, hogy ezt a tartalmat új termékekben használja, de továbbra is támogatni fogjuk a határozatlan időre vonatkozó meglévő használatokat. Előnyben részesített modern megoldásunk a virtuális terminálütemezésekre összpontosít a platformfüggetlen forgatókönyvek maximális kompatibilitása érdekében. Erről a tervezési döntésről a klasszikus konzol és a virtuális terminál dokumentumában talál további információt.

Az alacsony szintű konzolbemeneti függvények puffere olyan bemeneti rekordokat tartalmaz, amelyek tartalmazhatnak információkat a billentyűzetről, az egérről, a puffer átméretezéséről, a fókuszról és a menüeseményekről. Az alacsony szintű függvények közvetlen hozzáférést biztosítanak a bemeneti pufferhez, ellentétben a bemeneti puffer adatainak szűrését és feldolgozását végző magas szintű függvényekkel, amelyek a billentyűzet bemenetén kívül az összeset elvetik.

A konzol bemeneti pufferéhez öt alacsony szintű függvény érhető el:

A ReadConsoleInput, a PeekConsoleInput és a WriteConsoleInput függvény a INPUT_RECORD struktúrát használja a bemeneti pufferből való olvasáshoz vagy íráshoz.

Az alábbiakban az alacsony szintű konzolbemeneti függvények leírásai találhatók.

Funkció Leírás
ReadConsoleInput Beolvassa és eltávolítja a bemeneti rekordokat egy bemeneti pufferből. A függvény csak akkor ad vissza, ha legalább egy rekord olvasható. Ezután a rendszer az összes rendelkezésre álló rekordot átviszi a hívási folyamat pufferébe, amíg nincs több rekord, vagy a megadott számú rekord be nem olvasható. Az olvasatlan rekordok a bemeneti pufferben maradnak a következő olvasási művelethez. A függvény a beolvasott rekordok teljes számát jelenti. A ReadConsoleInputot használó példa: Olvasási bemeneti pufferes események.
PeekConsoleInput Olvasás a bemeneti pufferben lévő függőben lévő bemeneti rekordok eltávolítása nélkül. A rendszer a megadott számig minden elérhető rekordot átmásol a hívási folyamat pufferébe. Ha nem érhetők el rekordok, a függvény azonnal visszatér. A függvény a beolvasott rekordok teljes számát jelenti.
GetNumberOfConsoleInputEvents Meghatározza a bemeneti puffer olvasatlan bemeneti rekordjainak számát.
WriteConsoleInput A bemeneti rekordokat a bemeneti pufferbe helyezi a puffer függőben lévő rekordjai mögött. A bemeneti puffer szükség esetén dinamikusan növekszik, hogy annyi rekordot tároljon, amennyi meg van írva. A függvény használatához a megadott bemeneti pufferfogópontnak rendelkeznie kell a GENERIC_WRITE hozzáférési jogosultságával.
FlushConsoleInputBuffer Elveti a bemeneti puffer összes olvasatlan eseményét. A függvény használatához a megadott bemeneti pufferfogópontnak rendelkeznie kell a GENERIC_WRITE hozzáférési jogosultságával.

Az alkalmazás folyamatának szála várakozási műveletet hajthat végre, hogy megvárja, amíg a bemenet elérhető lesz egy bemeneti pufferben. Várakozási művelet indításához adjon meg egy leírót a bemeneti pufferhez a várakozási függvények bármelyikének hívásában. Ezek a függvények egy vagy több objektum állapotának jelzése esetén térhetnek vissza. A konzol bemeneti leírójának állapota akkor lesz jelezve, ha olvasatlan rekordok találhatók a bemeneti pufferben. Ha a bemeneti puffer üressé válik, az állapot visszaáll a nem jelre. Ha nincs bemenet, a hívószál hatékony várakozási állapotba kerül, és nagyon kevés processzoridőt vesz igénybe, amíg a várakozási művelet feltételei teljesülnek.