Консоль Windows
Другие имена | Консоль Win32 |
---|---|
Разработчик(и) | Майкрософт |
Репозиторий | github |
Написано в | С++ |
Операционная система | Microsoft Windows |
Платформа | ИА-32 , x86-64 , ARM64 |
Тип | Эмулятор терминала |
Лицензия | МОЯ лицензия |
Веб-сайт | документы |
Консоль Windows — это инфраструктура для консольных приложений в Microsoft Windows . Экземпляр консоли Windows имеет экранный буфер и входной буфер . Он позволяет консольным приложениям запускаться внутри окна или в аппаратном текстовом режиме (чтобы занять весь экран). Пользователь может переключаться между ними с помощью Alt+ ↵ Enter комбинация клавиш. Текстовый режим недоступен в Windows Vista и более поздних версиях. Однако, начиная с Windows 10 , доступен собственный полноэкранный режим.
Экземпляры консоли Windows обычно используются для приложений, которым не требуется отображать изображения, но которые могут использовать цвет. Примеры включают cmd.exe , Windows PowerShell , Far Manager и Midnight Commander .
В 2019 году исходный код консольного хоста был открыт под лицензией MIT вместе с Windows Terminal . [1]
Оконный и полноэкранный режимы
[ редактировать ]В Windows консольное приложение может работать в двух режимах.
В одном режиме текст помещается в окно операционной системы и используется рендеринг шрифтов . В этом режиме взаимодействие приложения с пользователем контролируется оконной системой. Это аналогично приложениям X Window System, таким как xterm .
Второй — полноэкранный режим. В Windows XP и более ранних версиях полноэкранная консоль использует аппаратный текстовый режим и загружает растровый шрифт в видеоадаптер . Это аналог текстовой системной консоли . Этот ранний полноэкранный режим поддерживает только текстовые режимы, совместимые с VGA, что обеспечивает максимальное разрешение символов 80 столбцов по 28 строк. [2] Этот режим устарел в Windows Vista . [3] Эту проблему можно было обойти, установив драйвер дисплея Windows XP; [3] однако Windows 8 и более поздние версии их не принимают. [4] В Windows 10 снова есть полноэкранный режим, но в этой реализации вместо текстового режима используется собственная подсистема рендеринга Windows. Он может иметь столько столбцов и строк, сколько умещается на экране. [5]
Приложения можно заставить переключаться между двумя режимами с помощью Alt+ ↵ Enter комбинация клавиш.
Подробности
[ редактировать ]Входной буфер — это очередь, в которой хранятся события (от клавиатуры , мыши и т. д.). Выходной буфер представляет собой прямоугольную сетку, в которой хранятся символы вместе с их атрибутами. Окно консоли может иметь несколько буферов вывода, только один из которых активен (т.е. отображается) в данный момент. Приложения могут программно взаимодействовать с консолью Windows через Windows API , который предоставляет обе высокоуровневые функции (такие как ReadConsole
и WriteConsole
) и функции низкого уровня (например, ReadConsoleInput
и WriteConsoleOutput
). [6]
Пользователи могут изменить цветовую палитру или шрифт либо на общесистемном уровне, либо на уровне приложения. Однако каждый экземпляр консольного приложения не может менять свою цветовую палитру или шрифт на лету.
Приложения консоли Windows отличаются от приложений MS-DOS , хотя в Windows (особенно в Windows 9x ) они могут не отличаться. Приложения консоли Windows имеют доступ ко всему API Windows и не запускаются в MS-DOS или совместимых операционных системах. Однако приложения DOS не имеют доступа к Windows API и могут работать только в 32-разрядных версиях Windows с помощью виртуальной машины DOS (VDM).
Реализации
[ редактировать ]В Windows 3.1 и более ранних версиях встроенная поддержка консолей отсутствует. Поскольку эти версии представляют собой всего лишь графический интерфейс для MS-DOS, большинство текстовых программ, работавших в более ранних версиях Windows, на самом деле были программами MS-DOS, работающими в окне. Чтобы упростить задачу переноса приложений на Windows, ранние версии Visual C++ поставляются с QuickWin — библиотекой, реализующей базовую функциональность консоли внутри обычного окна. Похожая библиотека для Borland C++ называлась EasyWin .
Windows 9x
[ редактировать ]Поддержка Windows 9x относительно слаба по сравнению с Windows NT , поскольку окно консоли работает на системной виртуальной машине DOS , и поэтому ввод с клавиатуры в консольное приложение Win32 должен был быть направлен на него с помощью conagent.exe, запущенного на виртуальной машине DOS, которая также используется. для реальных приложений DOS, перехватив прерывание клавиатуры. conagent.exe
затем вызывает Vcond (который является VxD ). Затем Vcond пришлось передать ввод с клавиатуры системной виртуальной машине, а затем, наконец, консольному приложению Win32. Помимо производительности, еще одна проблема этой реализации заключается в том, что диски, локальные для виртуальной машины DOS, не видны консольному приложению Win32. Это может вызвать путаницу.
В Windows 9x экранный буфер повторяет структуру текстового буфера VGA , с двумя байтами на ячейку символа: один байт для кода символа, один байт для атрибутов (символ должен быть в наборе символов OEM , атрибут имеет фон высокой интенсивности). /не моргая). Это значительно ускоряет работу, если используется настоящий текстовый режим VGA.
Windows NT и Windows CE
[ редактировать ]Традиционно подсистема выполнения клиента/сервера (CSRSS) отвечала за управление окнами консоли в операционных системах семейства Windows NT . [7] В Windows 7 CSRSS порождает один conhost.exe
для каждого окна консоли, чтобы управлять им. В Windows 8 и более поздних версиях консольные приложения создают свои conhost.exe
процессы напрямую. Это изменение имеет последствия как для безопасности, так и для удобства использования. Хотя CSRSS работает в контексте безопасности с высокими привилегиями, каждый conhost.exe
работает в том же контексте безопасности, что и консольное приложение. Кроме того, в Windows 7 это изменение позволило консольным окнам иметь функции темы Aero Glass . [8]
В Windows NT и Windows CE буфер экрана использует четыре байта на ячейку символа: два байта для кода символа, два байта для атрибутов. Затем символ кодируется в 16-битном подмножестве Unicode ( UCS-2 ). [9] Для обратной совместимости API консоли существуют в двух версиях: с поддержкой Unicode и без поддержки Unicode. Версии API, не поддерживающие Юникод, могут использовать переключение кодовых страниц для расширения диапазона отображаемых символов (но только если для окна консоли используются шрифты TrueType , тем самым расширяя диапазон доступных кодов). Даже UTF-8 доступен как «кодовая страница 65001». [10] (отображается только из подмножества UCS-2 полного Unicode). [ нужна ссылка ] ).
Начиная с обновления Windows 10 за октябрь 2018 г., консоль Windows имеет полную поддержку Unicode. [11]
См. также
[ редактировать ]- Сравнение эмуляторов терминала
- Интерфейс командной строки
- Шелл (вычисления)
- Системная консоль
- Терминал Windows
- консоль Linux
- Текстовый (вычислительный)
- Список ранее проприетарного программного обеспечения
Ссылки
[ редактировать ]- ^ Корица, Кайла (6 мая 2019 г.). «Знакомство с терминалом Windows» . Инструменты командной строки Windows для разработчиков . Майкрософт . Проверено 10 мая 2019 г.
- ^ Хулио Санчес; Мария П. Кантон (2003), «Основы VGA, Часть II: Графика DOS», Справочник по графике для ПК (для программистов C ++) (книга), CRC Press, стр. 125, ISBN 0849316782
- ^ Перейти обратно: а б «Некоторые 16-битные программы на базе DOS и командная строка не запускаются в полноэкранном режиме в Windows Vista и Windows 7» . Поддерживать . Майкрософт. 23 сентября 2011 г.
- ^ «План разработки драйверов для модели драйвера дисплея Windows 2000 (XDDM)» . Центр разработки для Windows — Аппаратное обеспечение . Майкрософт . 16 ноября 2013 года . Проверено 16 декабря 2013 г.
Драйверы XDDM и VGA не компилируются в Windows 8 и более поздних версиях.
- ^ Ткаченко Сергей (24 ноября 2014 г.). «Открыть полноэкранный режим командной строки в Windows 10» . Винаэро . Проверено 31 июля 2019 г.
- ^ «Консольные режимы» . Документация консоли Windows . Майкрософт . Получено 13 октября 2020 г. - через Microsoft Docs.
- ^ Рекомендации Microsoft по безопасности (930181): опубликован код эксплойта, влияющий на подсистему времени выполнения клиентского сервера Windows.
- ^ Иосифович Павел; Ионеску, Алекс; Руссинович, Марк Э.; Соломон, Дэвид А. (15 мая 2017 г.). Внутреннее устройство Windows, часть 1: Архитектура системы, процессы, потоки, управление памятью и многое другое (7-е изд.). Редмонд, Вашингтон: Microsoft Press. п. 67. ИСБН 9780735684188 .
- ^ «Справочник по консоли» . Майкрософт. 2009 . Проверено 1 января 2010 г.
- ^ «Примечания к выпуску» . docs.microsoft.com .
Консоль: исправлено отсутствие отображения выходного текста в кодовой странице 65001 (utf8).
- ^ Тернер, Рич (15 ноября 2018 г.). «Командная строка Windows: текстовый буфер вывода Unicode и UTF-8» . Инструменты командной строки Windows для разработчиков . Майкрософт . Проверено 14 июня 2019 г.
Внешние ссылки
[ редактировать ]- Ранее проприетарное программное обеспечение
- Бесплатное программное обеспечение с открытым исходным кодом
- Бесплатные эмуляторы терминала
- бесплатное программное обеспечение Майкрософт
- Программное обеспечение, использующее лицензию MIT
- Текстовый пользовательский интерфейс
- Администрирование Windows
- Бесплатное программное обеспечение только для Windows