Jump to content

Консоль Windows

(Перенаправлено с консоли Win32 )

Другие имена Консоль Win32
Разработчик(и) Майкрософт
Репозиторий github /Microsoft /Терминал /дерево /основной /источник /хозяин
Написано в С++
Операционная система Microsoft Windows
Платформа ИА-32 , x86-64 , ARM64
Тип Эмулятор терминала
Лицензия МОЯ лицензия
Веб-сайт документы .microsoft /en-нас /окна /консоль /

Консоль 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 PowerShell в Windows Vista
Midnight Commander с использованием персонажей, рисующих коробки

В 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 .

Command.com работает в консоли Windows в Windows 95

Поддержка 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

[ редактировать ]
Подсистема Windows для Linux под управлением Bash в Windows 10
Cmd.exe работает в Windows CE 3.0.

Традиционно подсистема выполнения клиент/сервер (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]

См. также

[ редактировать ]
  1. ^ Корица, Кайла (6 мая 2019 г.). «Знакомство с терминалом Windows» . Инструменты командной строки Windows для разработчиков . Майкрософт . Проверено 10 мая 2019 г.
  2. ^ Хулио Санчес; Мария П. Кантон (2003), «Основы VGA, Часть II: Графика DOS», Справочник по графике для ПК (для программистов C ++) (книга), CRC Press, стр. 125, ISBN  0849316782
  3. ^ Jump up to: а б «Некоторые 16-битные программы для DOS и командная строка не запускаются в полноэкранном режиме в Windows Vista и Windows 7» . Поддерживать . Майкрософт. 23 сентября 2011 г.
  4. ^ «План разработки драйверов для модели драйвера дисплея Windows 2000 (XDDM)» . Центр разработки для Windows — Аппаратное обеспечение . Майкрософт . 16 ноября 2013 года . Проверено 16 декабря 2013 г. Драйверы XDDM и VGA не компилируются в Windows 8 и более поздних версиях.
  5. ^ Ткаченко Сергей (24 ноября 2014 г.). «Открыть полноэкранный режим командной строки в Windows 10» . Винаэро . Проверено 31 июля 2019 г.
  6. ^ «Консольные режимы» . Документация консоли Windows . Майкрософт . Получено 13 октября 2020 г. - через Microsoft Docs.
  7. ^ Рекомендации Microsoft по безопасности (930181): опубликован код эксплойта, влияющий на подсистему времени выполнения клиентского сервера Windows.
  8. ^ Иосифович Павел; Ионеску, Алекс; Руссинович, Марк Э.; Соломон, Дэвид А. (15 мая 2017 г.). Внутреннее устройство Windows, часть 1: Архитектура системы, процессы, потоки, управление памятью и многое другое (7-е изд.). Редмонд, Вашингтон: Microsoft Press. п. 67. ИСБН  9780735684188 .
  9. ^ «Справочник по консоли» . Майкрософт. 2009 . Проверено 1 января 2010 г.
  10. ^ «Примечания к выпуску» . docs.microsoft.com . Консоль: исправлено отсутствие отображения выходного текста в кодовой странице 65001 (utf8).
  11. ^ Тернер, Рич (15 ноября 2018 г.). «Командная строка Windows: текстовый буфер вывода Unicode и UTF-8» . Инструменты командной строки Windows для разработчиков . Майкрософт . Проверено 14 июня 2019 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3a73bcf947a52439585c74395b0af8b7__1721330880
URL1:https://arc.ask3.ru/arc/aa/3a/b7/3a73bcf947a52439585c74395b0af8b7.html
Заголовок, (Title) документа по адресу, URL1:
Windows Console - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)