Funciones de entrada de la consola de bajo nivel
Importante
En este documento se describe funcionalidad de la plataforma de consola que ya no forma parte de nuestro plan de desarrollo del ecosistema. No se recomienda usar este contenido en nuevos productos, pero seguiremos admitiendo los usos existentes en un futuro indefinido. Nuestra solución moderna preferida se centra en secuencias de terminal virtual para lograr la máxima compatibilidad en escenarios multiplataforma. Puede encontrar más información sobre esta decisión de diseño en nuestro documento de Comparación de consola clásica y terminal virtual.
El búfer de funciones de entrada de consola de bajo nivel contiene registros de entrada que pueden incluir información sobre eventos de teclado, mouse, cambio de tamaño del búfer, foco y menú. Las funciones de bajo nivel proporcionan acceso directo al búfer de entrada, a diferencia de las funciones de alto nivel, que filtran y procesan los datos de este búfer y descartan todas las entradas excepto la de teclado.
Hay cinco funciones de bajo nivel para acceder al búfer de entrada de una consola:
- PeekConsoleInput
- PeekConsoleInput
- GetNumberOfConsoleInputEvents
- WriteConsoleInput
- FlushConsoleInputBuffer
Las funciones ReadConsoleInput, PeekConsoleInput y WriteConsoleInput utilizan la estructura INPUT_RECORD para leer o escribir en un búfer de entrada.
A continuación se muestran descripciones de las funciones de entrada de consola de bajo nivel.
Función | Descripción |
---|---|
PeekConsoleInput | Lee y elimina los registros de entrada de un búfer de entrada. La función no devuelve resultados hasta que hay al menos un registro disponible para su lectura. A continuación, todos los registros disponibles se transfieren al búfer del proceso de llamada hasta que no hay más registros disponibles o hasta que se lee el número especificado de registros. Los registros no leídos permanecen en el búfer de entrada para la siguiente operación de lectura. La función informa del número total de registros leídos. Para ver un ejemplo en el que se utiliza ReadConsoleInput, consulte Lectura de eventos de búfer de entrada. |
PeekConsoleInput | Lee los registros de entrada pendientes en un búfer de entrada sin eliminarlos. Todos los registros disponibles hasta el número especificado se copian en el búfer del proceso de llamada. Si no hay registros disponibles, la función devuelve resultados inmediatamente. La función informa del número total de registros leídos. |
GetNumberOfConsoleInputEvents | Determina el número de registros de entrada no leídos en un búfer de entrada. |
WriteConsoleInput | Coloca los registros de entrada en el búfer de entrada detrás de los registros pendientes en el búfer. El búfer de entrada crece dinámicamente si es necesario para contener todos los eventos escritos. Para utilizar esta función, el identificador de búfer de entrada especificado debe tener el derecho de acceso GENERIC_WRITE. |
FlushConsoleInputBuffer | Descarta todos los eventos no leídos en el búfer de entrada. Para utilizar esta función, el identificador de búfer de entrada especificado debe tener el derecho de acceso GENERIC_WRITE. |
Un subproceso del proceso de una aplicación puede realizar una operación de espera para esperar a que la entrada esté disponible en un búfer de entrada. Para iniciar una operación de espera, especifique un identificador para el búfer de entrada en una llamada a cualquiera de las funciones de espera (wait). Estas funciones pueden devolver resultados cuando se señala el estado de uno o varios objetos. El estado de un identificador de entrada de consola se señala cuando hay registros no leídos en su búfer de entrada correspondiente. El estado se restablece a no señalizado cuando el búfer de entrada se vacía. Si no hay ninguna entrada disponible, el subproceso de llamada entra en un estado de espera eficiente, lo que consume muy poco tiempo de procesador mientras espera a que se cumplan las condiciones de la operación de espera.