Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Ce document décrit les fonctionnalités de plateforme console qui ne font plus partie de notre feuille de route de l’écosystème. Nous vous déconseillons d’utiliser ce contenu dans de nouveaux produits, mais nous continuerons à prendre en charge les utilisations existantes pour l’avenir indéfini. Notre solution moderne préférée se concentre sur les séquences de terminal virtuel pour une compatibilité maximale dans les scénarios multiplateformes. Vous trouverez plus d’informations sur cette décision de conception dans notre document de console classique et de terminal virtuel .
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, le focus et les événements de menu. Les fonctions de bas niveau fournissent un accès direct à la mémoire tampon d’entrée, contrairement aux fonctions de haut niveau qui filtrent et traitent les données de la mémoire tampon d’entrée, en ignorant toutes les entrées au clavier.
Il existe cinq fonctions de bas niveau pour accéder à la mémoire tampon d’entrée d’une console :
- ReadConsoleInput
- PeekConsoleInput
- GetNumberOfConsoleInputEvents
- WriteConsoleInput
- FlushConsoleInputBuffer
Les fonctions ReadConsoleInput, PeekConsoleInput et WriteConsoleInput utilisent la structure INPUT_RECORD pour lire ou écrire dans une mémoire tampon d’entrée.
Voici des descriptions des fonctions d’entrée de console de bas niveau.
| Fonction | Descriptif |
|---|---|
| ReadConsoleInput | Lit et supprime les enregistrements d’entrée d’une mémoire tampon d’entrée. La fonction ne retourne 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 qui utilise ReadConsoleInput, consultez La lecture des événements de 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 retourne 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 ceux écrits. Pour utiliser cette fonction, le handle de mémoire tampon d’entrée spécifié doit avoir le droit 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 handle de mémoire tampon d’entrée spécifié doit avoir le droit 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 handle vers la mémoire tampon d’entrée dans un appel à l’une des fonctions d’attente. Ces fonctions peuvent retourner lorsque l’état d’un ou plusieurs objets est signalé. L’état d’un handle d’entrée de console devient signalé lorsqu’il existe des enregistrements non lus dans sa mémoire tampon d’entrée. L’état est réinitialisé à la mémoire tampon d’entrée non signalée lorsque la mémoire tampon d’entrée devient vide. S’il n’y a pas d’entrée 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 satisfaites.