Funzioni di input della console di basso livello
Importante
Questo documento descrive le funzionalità della piattaforma della console che non fanno più parte della roadmap dell'ecosistema. Non è consigliabile usare questo contenuto nei nuovi prodotti, ma continueremo a supportare gli utilizzi esistenti per il futuro indefinito. La soluzione moderna preferita è incentrata sulle sequenze di terminale virtuale per garantire la massima compatibilità negli scenari multipiattaforma. Per altre informazioni su questa decisione di progettazione, vedere il documento relativo alla console classica e al terminale virtuale.
Un buffer delle funzioni di input della console di basso livello contiene record di input che possono includere informazioni su tastiera, mouse, ridimensionamento del buffer, stato attivo ed eventi di menu. Le funzioni di basso livello forniscono accesso diretto al buffer di input, a differenza delle funzioni di alto livello che filtrano ed elaborano i dati del buffer di input, ignorando tutti gli input della tastiera.
Esistono cinque funzioni di basso livello per l'accesso al buffer di input di una console:
- ReadConsoleInput
- PeekConsoleInput
- GetNumberOfConsoleInputEvents
- WriteConsoleInput
- FlushConsoleInputBuffer
Le funzioni ReadConsoleInput, PeekConsoleInput e WriteConsoleInput usano la struttura INPUT_RECORD per leggere o scrivere in un buffer di input.
Di seguito sono riportate le descrizioni delle funzioni di input della console di basso livello.
Funzione | Descrizione |
---|---|
ReadConsoleInput | Legge e rimuove i record di input da un buffer di input. La funzione non restituisce finché non è disponibile almeno un record da leggere. Tutti i record disponibili vengono quindi trasferiti nel buffer del processo chiamante fino a quando non sono disponibili altri record o il numero specificato di record è stato letto. I record non letti rimangono nel buffer di input per l'operazione di lettura successiva. La funzione indica il numero totale di record letti. Per un esempio che usa ReadConsoleInput, vedere Lettura degli eventi del buffer di input. |
PeekConsoleInput | Legge senza rimuovere i record di input in sospeso in un buffer di input. Tutti i record disponibili fino al numero specificato vengono copiati nel buffer del processo chiamante. Se non sono disponibili record, la funzione restituisce immediatamente. La funzione indica il numero totale di record letti. |
GetNumberOfConsoleInputEvents | Determina il numero di record di input non letti in un buffer di input. |
WriteConsoleInput | Inserisce i record di input nel buffer di input dietro i record in sospeso nel buffer. Il buffer di input cresce in modo dinamico, se necessario, per contenere tutti i record scritti. Per usare questa funzione, l'handle del buffer di input specificato deve avere il diritto di accesso GENERIC_WRITE. |
FlushConsoleInputBuffer | Elimina tutti gli eventi non letti nel buffer di input. Per usare questa funzione, l'handle del buffer di input specificato deve avere il diritto di accesso GENERIC_WRITE. |
Un thread del processo di un'applicazione può eseguire un'operazione di attesa per attendere che l'input sia disponibile in un buffer di input. Per avviare un'operazione di attesa, specificare un handle per il buffer di input in una chiamata a una delle funzioni di attesa. Queste funzioni possono restituire quando viene segnalato lo stato di uno o più oggetti. Lo stato di un handle di input della console viene segnalato quando sono presenti record non letti nel buffer di input. Lo stato viene reimpostato su non segnalato quando il buffer di input diventa vuoto. Se non è disponibile alcun input, il thread chiamante entra in uno stato di attesa efficiente, richiedendo molto poco tempo del processore durante l'attesa delle condizioni dell'operazione di attesa.