Partager via


Fonctions d’entrée de console de bas niveau

Important

Ce document décrit les fonctionnalités de la plateforme de la console qui ne font plus partie de la feuille de route de notre écosystème. Nous vous déconseillons d’utiliser ce contenu dans de nouveaux produits, mais nous continuerons à prendre en charge des utilisations existantes pour l’avenir indéterminé. Notre solution moderne préférée se concentre sur les séquences de terminaux virtuels pour une compatibilité maximale dans les scénarios multiplateformes. Vous trouverez plus d’informations sur cette décision de conception dans notre document sur les consoles classiques et les terminaux virtuels.

Une mémoire tampon des fonctions d'entrée de console de bas niveau contient des enregistrements d'entrée qui peuvent inclure des informations sur le clavier, la souris, le redimensionnement de la mémoire tampon, la mise au point et les événements de menu. Les fonctions de bas niveau offrent un accès direct au tampon d'entrée, contrairement aux fonctions de haut niveau qui filtrent et traitent les données du tampon d'entrée, en ignorant toutes les entrées autres que celles de clavier.

Il existe cinq fonctions de bas niveau pour accéder à la mémoire tampon d’entrée d’une console :

Les fonctions ReadConsoleInput, PeekConsoleInput et WriteConsoleInput utilisent la structureINPUT_RECORD pour lire ou écrire dans une mémoire tampon d’entrée.

Les fonctions d'entrée de la console de bas niveau sont décrites ci-dessous.

Fonction Description
ReadConsoleInput Lit et supprime les enregistrements d’entrée d’une mémoire tampon d’entrée. La fonction ne renvoie pas tant qu’au moins un enregistrement n’est pas disponible en lecture. Ensuite, tous les enregistrements disponibles sont transférés vers la mémoire tampon du processus appelant jusqu’à ce qu’aucun autre enregistrement ne soit disponible ou que le nombre spécifié d’enregistrements ait été lu. Les enregistrements non lus restent dans la mémoire tampon d’entrée pour l’opération de lecture suivante. La fonction indique le nombre total d’enregistrements qui ont été lus. Pour obtenir un exemple d'utilisation de ReadConsoleInput, consultez la section Lecture des événements de la mémoire tampon d'entrée.
PeekConsoleInput Lit sans supprimer les enregistrements d’entrée en attente dans une mémoire tampon d’entrée. Tous les enregistrements disponibles jusqu’au numéro spécifié sont copiés dans la mémoire tampon du processus appelant. Si aucun enregistrement n’est disponible, la fonction renvoie immédiatement. La fonction indique le nombre total d’enregistrements qui ont été lus.
GetNumberOfConsoleInputEvents Détermine le nombre d’enregistrements d’entrée non lus dans une mémoire tampon d’entrée.
WriteConsoleInput Place les enregistrements d’entrée dans la mémoire tampon d’entrée derrière les enregistrements en attente dans la mémoire tampon. La mémoire tampon d’entrée augmente dynamiquement, si nécessaire, pour contenir autant d’enregistrements que ce qui est écrit. Pour utiliser cette fonction, le descripteur de mémoire tampon d’entrée spécifié doit avoir les droits d’accès GENERIC_WRITE.
FlushConsoleInputBuffer Ignore tous les événements non lus dans la mémoire tampon d'entrée. Pour utiliser cette fonction, le descripteur de mémoire tampon d’entrée spécifié doit avoir les droits d’accès GENERIC_WRITE.

Un thread du processus d’une application peut effectuer une opération d’attente pour attendre que l’entrée soit disponible dans une mémoire tampon d’entrée. Pour lancer une opération d’attente, spécifiez un descripteur vers la mémoire tampon d’entrée dans un appel à l’une des fonctions d’attente. Ces fonctions peuvent être renvoyées lorsque l'état d'un ou de plusieurs objets est signalé. L'état d'une descripteur d'entrée de console est signalé lorsqu'il y a des enregistrements non lus dans sa mémoire tampon d'entrée. L'état est réinitialisé à non-signalé lorsque la mémoire tampon d'entrée devient vide. Si aucune entrée n'est disponible, le thread appelant entre dans un état d'attente efficace, consommant très peu de temps processeur en attendant que les conditions de l'opération d'attente soient remplies.