# ReadConsoleInput

Функция `ReadConsoleInput` считывает данные из входного буфера консоли и удаляет их оттуда.

    BOOL ReadConsoleInput(
      HANDLE hConsoleInput,
      PINPUT_RECORD lpBuffer,
      DWORD nLength,
      LPDWORD lpNumberOfEventsRead
    );

### Параметры

hConsoleInput
Дескриптор консольного буфера ввода. Дескриптор должен иметь права `GENERIC_READ`.
lpBuffer
Указатель на массив структур INPUT_RECORD, который получит данные из входного буфера. Общий размер требуемого массива должен быть меньше чем 64КБ.
nLength
Число элементов в буфере `lpBuffer`, которое необходимо получить.
lpNumberOfEventsRead
Указатель на 32-х разрядную переменную, которая получит число реально прочитанных элементов.

### Возвращаемое значение

В случае успеха возвращается ненулевое значение.
Если функция завершается неудачно, возвращается ноль. Для получения дополнительной информации вызывайте функцию `GetLastError`.

### Замечания

Если число записей, запрашиваемых параметром `nLength` превышает число записей, доступных в буфере, будут считаны только доступные. Функция не возвращает управление, пока хоть одна запись не будет прочитана.

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

Для определения числа непрочитанных сообщений во входном буфере используйте функцию GetNumberOfConsoleInputEvents. Для чтения сообщений без их удаления из буфера используйте PeekConsoleInput. Для удаления всех сообщений из входного буфера используйте функцию FlushConsoleInputBuffer.

- Эта функция использует либо Unicode, либо 8-битовые символы из текущей кодовой страницы консоли. Кодовая страница консоли по умолчанию равна системной OEM странице.
  Для смены кодовой страницы используйте функции SetConsoleCP или SetConsoleOutputCP, или используйте команды `chcp` или `mode con cp select=`.

Смотрите также:
INPUT_RECORD, SetConsoleCP, SetConsoleOutputCP, WriteConsoleInput, PeekConsoleInput, FlushConsoleInputBuffer, GetNumberOfConsoleInputEvents, ReadConsole, ReadFile