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.
Les fonctions ReadFile et WriteFile , ou les fonctions ReadConsole et WriteConsole , permettent à une application de lire l’entrée de console et d’écrire la sortie de la console en tant que flux de caractères. ReadConsole et WriteConsole se comportent exactement comme ReadFile et WriteFile , sauf qu’ils peuvent être utilisés en tant que fonctions à caractères larges (dans lesquelles les arguments de texte doivent utiliser Unicode) ou en tant que fonctions ANSI (dans lesquelles les arguments de texte doivent utiliser des caractères à partir du jeu de caractères Windows). Les applications qui doivent gérer un seul ensemble de sources pour prendre en charge Unicode ou le jeu de caractères ANSI doivent utiliser ReadConsole et WriteConsole.
ReadConsole et WriteConsole ne peuvent être utilisés qu’avec des handles de console ; ReadFile et WriteFile peuvent être utilisés avec d’autres handles (tels que des fichiers ou des canaux). ReadConsole et WriteConsole échouent en cas d’utilisation avec un handle standard qui a été redirigé et n’est plus un handle de console.
Pour obtenir une entrée au clavier, un processus peut utiliser ReadFile ou ReadConsole avec un handle vers la mémoire tampon d’entrée de la console, ou utiliser ReadFile pour lire l’entrée à partir d’un fichier ou d’un canal s’il STDIN a été redirigé. Ces fonctions retournent uniquement les événements clavier qui peuvent être traduits en caractères ANSI ou Unicode. L’entrée qui peut être retournée inclut des combinaisons de touches de contrôle. Les fonctions ne retournent pas d’événements clavier impliquant les touches de fonction ou les touches de direction. Les événements d’entrée générés par la souris, la fenêtre, le focus ou l’entrée de menu sont ignorés.
Si le mode d’entrée de ligne est activé (mode par défaut), ReadFile et ReadConsole ne reviennent pas à l’application appelante tant que la touche Entrée n’est pas enfoncée. Si le mode d’entrée de ligne est désactivé, les fonctions ne retournent pas tant qu’au moins un caractère n’est pas disponible. Dans l’un ou l’autre mode, tous les caractères disponibles sont lus tant qu’aucune autre clé n’est disponible ou que le nombre spécifié de caractères a été lu. Les caractères non lus sont mis en mémoire tampon jusqu’à l’opération de lecture suivante. Les fonctions signalent le nombre total de caractères réellement lus. Si le mode d’entrée d’écho est activé, les caractères lus par ces fonctions sont écrits dans la mémoire tampon d’écran active à la position actuelle du curseur.
Un processus peut utiliser WriteFile ou WriteConsole pour écrire dans une mémoire tampon d’écran active ou inactive, ou utiliser WriteFile pour écrire dans un fichier ou un canal si STDOUT a été redirigé. Le mode de sortie traité et l’habillage en mode sortie EOL contrôlent la façon dont les caractères sont écrits ou renvoyés à une mémoire tampon d’écran.
Les caractères écrits par WriteFile ou WriteConsole, ou échos par ReadFile ou ReadConsole, sont insérés dans une mémoire tampon d’écran à la position actuelle du curseur. À mesure que chaque caractère est écrit, la position du curseur avance vers la cellule de caractère suivante ; Toutefois, le comportement à la fin d’une ligne dépend de l’encapsulage de la mémoire tampon de l’écran de console en mode de sortie EOL.
Vous trouverez plus d’informations sur la position du curseur via des séquences de terminaux virtuels, en particulier dans la catégorie d’état de requête pour rechercher la position actuelle et la catégorie de positionnement du curseur pour définir la position actuelle. Vous pouvez également utiliser la fonction GetConsoleScreenBufferInfo pour déterminer la position actuelle du curseur et la fonction SetConsoleCursorPosition pour définir la position du curseur. Toutefois, le mécanisme de séquences de terminal virtuel est préféré pour tout développement nouveau et continu. Vous trouverez plus d’informations sur la stratégie derrière cette décision dans les fonctions classiques et la documentation de feuille de route de l’écosystème et du terminal virtuel.
Pour obtenir un exemple qui utilise les fonctions d’E/S de console de haut niveau, consultez Utilisation des fonctions d’entrée et de sortie High-Level.