Поделиться через


Низкоуровневые функции ввода консоли

Важно!

В этом документе описаны функции платформы консоли, которые больше не являются частью стратегии развития экосистемы. Мы не рекомендуем использовать это содержимое в новых продуктах, но мы будем продолжать поддерживать существующие использования для неопределенного будущего. Наше предпочтительное современное решение ориентировано на последовательности виртуальных терминалов для обеспечения максимальной совместимости в кроссплатформенных сценариях. Дополнительные сведения об этом решении по проектированию можно найти в классической консоли и в документе виртуального терминала .

Буфер низкоуровневых входных функций консоли содержит входные записи, которые могут включать сведения о клавиатуре, мыши, изменении размера буфера, фокусе и событиях меню. Низкоуровневые функции обеспечивают прямой доступ к входной буферу, в отличие от высокоуровневых функций, которые фильтруют и обрабатывают данные входного буфера карта все, кроме ввода клавиатуры.

Существует пять низкоуровневых функций для доступа к входной буферу консоли:

Функции ReadConsoleInput, PeekConsoleInput и WriteConsoleInput используют структуру INPUT_RECORD для чтения из входного буфера или записи.

Ниже приведены описания низкоуровневых входных функций консоли.

Function Description
ReadConsoleInput Считывает и удаляет входные записи из входного буфера. Функция не возвращается до тех пор, пока не будет доступна по крайней мере одна запись для чтения. Затем все доступные записи передаются в буфер вызывающего процесса, пока не будут доступны никакие записи или указанное количество записей было прочитано. Непрочитанные записи остаются в входном буфере для следующей операции чтения. Функция сообщает общее количество записей, которые были прочитаны. Пример использования ReadConsoleInput см. в разделе "Чтение входных буферных событий".
PeekConsoleInput Считывает без удаления ожидающих входных записей в входном буфере. Все доступные записи до указанного числа копируются в буфер вызывающего процесса. Если записи недоступны, функция возвращается немедленно. Функция сообщает общее количество записей, которые были прочитаны.
GetNumberOfConsoleInputEvents Определяет количество непрочитанных входных записей в входном буфере.
WriteConsoleInput Помещает входные записи в входной буфер за любыми ожидающих записей в буфере. Входной буфер динамически растет, если это необходимо, чтобы хранить столько записей, сколько записываются. Чтобы использовать эту функцию, указанный дескриптор входного буфера должен иметь право GENERIC_WRITE доступа.
FlushConsoleInputBuffer Dis карта все непрочитанные события в входном буфере. Чтобы использовать эту функцию, указанный дескриптор входного буфера должен иметь право GENERIC_WRITE доступа.

Поток процесса приложения может выполнять операцию ожидания, чтобы ждать, пока входные данные будут доступны в входном буфере. Чтобы инициировать операцию ожидания, укажите дескриптор входного буфера в вызове любой из функций ожидания. Эти функции могут возвращаться при сигнале состояния одного или нескольких объектов. Состояние дескриптора входных данных консоли сигнализирует о наличии непрочитанных записей в входном буфере. Состояние сбрасывается до не сигнального, когда входной буфер становится пустым. Если нет входных данных, вызывающий поток вводит эффективное состояние ожидания, потребляя очень мало времени процессора, ожидая выполнения условий операции ожидания.