윈도 콘솔
Windows Console기타 이름 | Win32 콘솔 |
---|---|
개발자 | 마이크로소프트 |
리포지토리 | github |
기록 위치 | C++ |
운영 체제 | 마이크로소프트 윈도 |
플랫폼 | IA-32, x86-64, ARM64 |
유형 | 단자 에뮬레이터 |
면허증 | MIT 라이선스 |
웹사이트 | docs |
Windows Console은 Microsoft Windows에서 콘솔 응용 프로그램을 위한 인프라 입니다.윈도우즈 콘솔 인스턴스에는 화면 버퍼와 입력 버퍼가 있다.콘솔 앱이 창 안이나 하드웨어 텍스트 모드(전체 화면을 차지하도록)에서 실행될 수 있도록 한다).사용자는 다음을 사용하여 둘 사이를 전환할 수 있다.Alt+↵ Enter 키 조합.텍스트 모드는 Windows Vista 이상에서 사용할 수 없다.그러나 Windows 10부터는 기본 전체 화면 모드를 사용할 수 있다.
Windows Console 인스턴스는 일반적으로 이미지를 표시할 필요는 없지만 색을 사용할 수 있는 앱에 사용된다.예를 들어 cmd.exe, Windows PowerShell, Far Manager 및 Midnight Commander가 있다.
2019년, Windows Console 인프라는 Windows 터미널과 함께 MIT 라이센스 하에 오픈 소스가 제공되었다.[1]
창 및 전체 화면 모드
Windows에서 콘솔 응용 프로그램은 두 가지 모드로 실행될 수 있다.
한 모드는 텍스트를 창에 놓고 운영 체제의 글꼴 렌더링을 사용한다.이 모드에서 응용 프로그램의 사용자와 상호작용은 윈도우 시스템에 의해 제어된다.이것은 xterm과 같은 X 윈도우 시스템 어플리케이션과 유사하다.
두 번째는 전체 화면 모드다.Windows XP 이하에서는 전체 화면 콘솔이 하드웨어 텍스트 모드를 사용하고 래스터 글꼴을 비디오 어댑터에 업로드한다.이것은 텍스트 시스템 콘솔과 유사하다.이 초기 전체 화면 모드는 VGA 호환 텍스트 모드만 지원하여 최대 80개 열, 28개 행의 최대 문자 해상도를 제공한다.[2]이 모드는 Windows Vista에서 더 이상 사용되지 않았다.[3]Windows XP 디스플레이 드라이버를 설치하여 이 문제를 피할 수 있었지만,[3] Windows 8 이상에서는 이러한 문제를 받아들이지 않는다.[4]윈도 10은 다시 한번 전체 화면 모드를 특징으로 하지만 이 구현은 텍스트 모드 대신 네이티브 윈도 렌더링 서브시스템을 사용한다.그것은 화면에 맞는 만큼의 열과 행을 가질 수 있다.[5]
앱은 ↵ Enter+키 조합을 이용해 두 모드 사이를 전환할 수 있다.
세부 사항
입력 버퍼는 (키보드, 마우스 등) 이벤트가 저장되는 대기열이다.출력 버퍼는 문자와 그 속성이 함께 저장되는 직사각형 그리드다.콘솔 창에는 여러 개의 출력 버퍼가 있을 수 있으며, 그 중 하나만 특정 순간 동안 활성(즉, 표시)되어 있을 수 있다.앱은 Windows API를 통해 Windows Console과 프로그래밍 방식으로 상호 작용할 수 있으며, 이는 두 가지 높은 수준의 기능(예:ReadConsole
그리고WriteConsole
) 및 저수준 함수(예:ReadConsoleInput
그리고WriteConsoleOutput
).[6]
사용자는 시스템 전체 또는 앱 수준에서 색상 팔레트 또는 글꼴을 변경할 수 있다.그러나 콘솔 앱의 각 인스턴스 자체는 색상 팔레트나 글꼴을 즉시 변경할 수 없다.
윈도 콘솔 앱은 MS-DOS 앱과 구별된다. 비록 윈도(특히 윈도 9x)에서는 다름이 없어 보일 수 있다.Windows Console 앱은 전체 Windows API에 액세스할 수 있으며 MS-DOS 또는 호환되는 운영 체제에서 실행되지 않는다.그러나 DOS 앱은 Windows API에 액세스할 수 없으며 VDM(Virtual DOS Machine)의 도움으로 32비트 버전의 Windows에서만 실행될 수 있다.
구현
윈도우 95 이전에는 콘솔에 대한 기본 지원이 없었다.윈도 3.1 이전은 MS-DOS용 그래픽 인터페이스에 불과하기 때문에, 이전 윈도 버전에서 실행된 대부분의 텍스트 프로그램은 실제로 윈도우에서 실행되는 MS-DOS 프로그램이었다.Windows에 응용 프로그램을 포팅하는 작업을 단순화하기 위해, 초기 버전의 Visual C++는 일반 창 안에서 기본적인 콘솔 기능을 구현하는 라이브러리인 QuickWin과 함께 제공된다.볼랜드 C++의 비슷한 도서관은 이지윈이라고 불렸다.
윈도 9x
콘솔 창은 시스템 가상 DOS 머신에서 실행되기 때문에 Win32 콘솔 애플리케이션에 대한 키보드 입력은 실제 DOS VM에서 실행되는 conagent.exe가 키보드 인터럽트를 후킹하여 실제 DOS 애플리케이션에도 사용했기 때문에 윈도우즈 9x 지원은 상대적으로 윈도우즈 NT에 비해 좋지 않다. conagent.exe
그런 다음 Vcond(VxD)를 호출한다.그 후 Vcond는 키보드 입력을 시스템 VM에 전달해야 했고, 마지막으로 Win32 콘솔 애플리케이션에 전달해야 했다.성능 외에도, 이 구현의 또 다른 문제는 DOS VM의 로컬 드라이브가 Win32 콘솔 애플리케이션에 보이지 않는다는 것이다.이것은 혼란을 일으킬 수 있다.
윈도 9x에서 화면 버퍼는 VGA 텍스트 버퍼의 구조를 미러링하며, 문자 셀당 2바이트, 즉 문자 코드의 경우 1바이트, 속성의 경우 1바이트(문자는 OEM 문자 집합에 있어야 하며 속성은 고강도의 배경/깜빡하지 않음)를 가지고 있다.이는 실제 VGA 텍스트 모드를 사용할 경우 작동 속도가 상당히 빨라진다.
윈도 NT 및 윈도 CE
전통적으로 클라이언트/서버 런타임 서브시스템(CSRSS)은 윈도우즈 NT 운영 체제 제품군의 콘솔 윈도우 관리를 담당해왔다.[7]Windows 7(윈도우 7)에서 CSRSS가 1을 생성함conhost.exe
각 콘솔 창에 대해 관리하십시오.윈도우즈 8 이상에서는 콘솔 앱이conhost.exe
직접 처리이 변경은 보안과 사용적합성에 모두 영향을 미친다.CSRSS는 매우 특권이 있는 보안 컨텍스트에서 실행되는 반면, 각각conhost.exe
콘솔 앱과 동일한 보안 컨텍스트에서 실행하십시오.또한 Windows 7에서는 이러한 변경으로 콘솔 창이 Aero Glass 테마의 기능을 가질 수 있게 되었다.[8]
윈도 NT와 윈도 CE에서 화면 버퍼는 문자 셀당 4바이트(문자 코드의 경우 2바이트, 속성의 경우 2바이트)를 사용한다.그런 다음 문자는 유니코드의 16비트 서브셋(UCS-2)으로 인코딩된다.[9]이전 버전과의 호환성을 위해 콘솔 API는 두 가지 버전으로 존재한다.유니코드 및 비 유니코드.APIs의 비유니코드 버전은 코드 페이지 전환을 사용하여 표시되는 문자의 범위를 확장할 수 있다(그러나 콘솔 창에 TrueType 글꼴이 사용되어 사용 가능한 코드 범위가 확장된 경우에만 해당).UTF-8도 "코드 페이지 65001"[10]로 제공된다(전체 유니코드의[citation needed] UCS-2 서브셋에서만 표시).
윈도 10 2018년 10월 업데이트를 기준으로 윈도 콘솔은 완전한 유니코드를 지원한다.[11]
참고 항목
참조
- ^ Cinnamon, Kayla (May 6, 2019). "Introducing Windows Terminal". Windows Command Line Tools For Developers. Microsoft. Retrieved May 10, 2019.
- ^ Julio Sanchez; Maria P. Canton (2003), "VGA Fundamentals, Part II: DOS Graphics", The PC Graphics Handbook (for C++ Programmers) (Book), CRC Press, p. 125, ISBN 0849316782
- ^ a b "Some 16-bit DOS-based Programs and the Command Prompt will not run in full-screen mode in Windows Vista and in Windows 7". Support. Microsoft. 2011-09-23.
- ^ "Roadmap for Developing Drivers for the Windows 2000 Display Driver Model (XDDM)". Windows Dev Center - Hardware. Microsoft. 16 November 2013. Retrieved 16 December 2013.
XDDM and VGA drivers will not compile on Windows 8 and later versions
- ^ Tkachenko, Sergey (2014-11-24). "Open command prompt fullscreen in Windows 10". Winaero. Retrieved 2019-07-31.
- ^ "Console Modes". Windows Console documentation. Microsoft. Retrieved 13 October 2020 – via Microsoft Docs.
- ^ Microsoft Security Advisory(930181):Windows Client Server 런타임 하위 시스템에 영향을 미치는 취약성 코드 게시
- ^ Yosifovich, Pavel; Ionescu, Alex; Russinovich, Mark E.; Solomon, David A. (2017-05-15). Windows Internals, Part 1: System architecture, processes, threads, memory management, and more (7th ed.). Redmond, Washington: Microsoft Press. p. 67. ISBN 9780735684188.
- ^ "Console Reference". Microsoft. 2009. Retrieved 2010-01-01.
- ^ "Release Notes". docs.microsoft.com.
Console: Fix for no output text being displayed in codepage 65001 (utf8)
- ^ Turner, Rich (2018-11-15). "Windows Command-Line: Unicode and UTF-8 Output Text Buffer". Windows Command Line Tools For Developers. Microsoft. Retrieved 2019-06-14.