Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
En este documento se describe la funcionalidad de la plataforma de consola que ya no forma parte de nuestra hoja de ruta del ecosistema. No se recomienda usar este contenido en nuevos productos, pero seguiremos admitiendo los usos existentes para el 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 consola clásica frente a terminal virtual .
Un búfer de funciones de entrada de consola de bajo nivel contiene registros de entrada que pueden incluir información sobre el teclado, el mouse, el cambio de tamaño del búfer, el foco y los eventos de 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 del búfer de entrada, descartando todas las entradas del teclado, excepto .
Hay cinco funciones de bajo nivel para acceder al búfer de entrada de una consola:
- ReadConsoleInput
- PeekConsoleInput
- GetNumberOfConsoleInputEvents (obtener el número de eventos de entrada de la consola)
- WriteConsoleInput
- FlushConsoleInputBuffer
Las funciones ReadConsoleInput, PeekConsoleInput y WriteConsoleInput usan la estructura de 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 |
|---|---|
| ReadConsoleInput | Lee y quita los registros de entrada de un búfer de entrada. La función no devuelve hasta que al menos hay un registro disponible para leerse. A continuación, todos los registros disponibles se transfieren al búfer del proceso de llamada hasta que no haya más registros disponibles o se haya leído 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 obtener un ejemplo que usa ReadConsoleInput, consulte Lectura de eventos de búfer de entrada. |
| PeekConsoleInput | Lee sin quitar los registros de entrada pendientes en un búfer de entrada. 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 inmediatamente. La función informa del número total de registros leídos. |
| GetNumberOfConsoleInputEvents (obtener el número de eventos de entrada de la consola) | 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 del búfer. El búfer de entrada crece dinámicamente, si es necesario, para contener tantos registros como se escriben. Para usar 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 usar 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. Estas funciones pueden devolverse 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. El estado se restablece a no señalizado cuando el búfer de entrada se vuelve vacío. Si no hay ninguna entrada disponible, el subproceso de llamada entra en un estado de espera eficaz, lo que consume muy poco tiempo de procesador mientras espera las condiciones de la operación de espera que se cumplan.