Konsola Windows — Windows Console

Konsola Windows
Okno konsoli systemu Windows działające w systemie Windows 10 20H2.png
Konsola Windows z cmd.exe w Windows 10 20H2
Inne nazwy Konsola Win32
Deweloper(zy) Microsoft
Magazyn github .com /microsoft /terminal /drzewo /main /src /host
Napisane w C++
System operacyjny Microsoft Windows
Platforma IA-32 , x86-64 , ARM64ARM
Rodzaj Emulator terminala
Licencja Licencja MIT
Stronie internetowej dokumenty .microsoft .com /en-us /windows /konsola /

Konsola Windows to infrastruktura dla aplikacji konsolowych w systemie Microsoft Windows . Wystąpienie konsoli systemu Windows ma bufor ekranu i bufor wejściowy . Pozwala aplikacjom konsolowym działać w oknie lub w sprzętowym trybie tekstowym (tak, aby zajmowały cały ekran). Użytkownik może przełączać się między nimi za pomocą kombinacji klawiszy Alt+ ↵ Enter. Tryb tekstowy jest niedostępny w systemie Windows Vista i nowszych. Jednak począwszy od systemu Windows 10 dostępny jest natywny tryb pełnoekranowy.

Wystąpienia konsoli systemu Windows są zwykle używane w przypadku aplikacji, które nie muszą wyświetlać obrazów, ale mogą używać kolorów. Przykłady obejmują cmd.exe , Windows PowerShell , Far Manager i Midnight Commander .

W 2019 roku infrastruktura Windows Console została udostępniona na licencji MIT wraz z Windows Terminal .

Tryby okna i pełnego ekranu

W systemie Windows aplikacja konsolowa może działać w dwóch trybach.

Jeden tryb umieszcza tekst w oknie i wykorzystuje renderowanie czcionek systemu operacyjnego . W tym trybie interakcja aplikacji z użytkownikiem jest kontrolowana przez system okienkowy. Jest to analogiczne do aplikacji X Window System , takich jak xterm .

Drugi to tryb pełnoekranowy. W systemie Windows XP i wcześniejszych konsola pełnoekranowa korzysta ze sprzętowego trybu tekstowego i przesyła czcionkę rastrową do karty wideo . Jest to analogiczne do tekstowej konsoli systemowej . Ten wczesny tryb pełnoekranowy obsługuje tylko tryby tekstowe zgodne z VGA, co daje maksymalną rozdzielczość znaków 80 kolumn na 28 wierszy. Ten tryb jest przestarzały w systemie Windows Vista . Można było obejść ten problem, instalując sterownik ekranu Windows XP; jednak Windows 8 i nowsze ich nie akceptują. Windows 10 ponownie oferuje tryb pełnoekranowy, ale ta implementacja wykorzystuje natywny podsystem renderowania systemu Windows zamiast trybu tekstowego. Może mieć tyle kolumn i wierszy, ile mieści się na ekranie.

Aplikacje można przełączać między dwoma trybami za pomocą kombinacji klawiszy Alt+ ↵ Enter.

Detale

Bufor wejściowy to kolejka, w której przechowywane są zdarzenia (z klawiatury , myszy itp.). Bufor wyjściowy to prostokątna siatka, w której przechowywane są znaki wraz z ich atrybutami. Okno konsoli może mieć kilka buforów wyjściowych, z których tylko jeden jest aktywny (tzn. wyświetlany) w danej chwili. Aplikacje mogą programowo komunikować się z konsolą Windows za pośrednictwem interfejsu API systemu Windows , który udostępnia zarówno funkcje wysokiego poziomu (takie jak ReadConsolei WriteConsole), jak i funkcje niskiego poziomu (np. ReadConsoleInputi WriteConsoleOutput).

Użytkownicy mogą zmieniać paletę kolorów lub czcionkę , zarówno na poziomie całego systemu, jak i na poziomie aplikacji. Jednak każda instancja samej aplikacji konsolowej nie może zmieniać swojej palety kolorów ani czcionki w locie.

Aplikacje konsoli systemu Windows różnią się od aplikacji systemu MS-DOS , chociaż w systemie Windows (szczególnie w systemie Windows 9x ) mogą wyglądać inaczej. Aplikacje konsoli systemu Windows mają dostęp do całego interfejsu API systemu Windows i nie działają w systemie MS-DOS ani w zgodnych systemach operacyjnych. Aplikacje DOS nie mają jednak dostępu do interfejsu API systemu Windows i mogą działać tylko w 32-bitowych wersjach systemu Windows za pomocą maszyny wirtualnej DOS (VDM).

Realizacje

Przed Windows 95 nie ma natywnej obsługi konsol. Ponieważ Windows 3.1 i wcześniejsze są jedynie graficznym interfejsem dla MS-DOS, większość programów tekstowych, które działały we wcześniejszych wersjach Windows, były w rzeczywistości programami MS-DOS działającymi w oknie. Aby uprościć zadanie przenoszenia aplikacji do systemu Windows, wczesne wersje Visual C++ są dostarczane z biblioteką QuickWin , która implementuje podstawowe funkcje konsoli w zwykłym oknie. Podobna biblioteka dla Borland C++ nazywała się EasyWin .

Windows 9x

Command.com działa w konsoli Windows na Windows 95

Obsługa systemu Windows 9x jest stosunkowo słaba w porównaniu do systemu Windows NT , ponieważ okno konsoli działa w systemowej wirtualnej maszynie DOS, więc dane wejściowe z klawiatury do aplikacji konsoli Win32 musiały być do niego kierowane przez conagent.exe działający na maszynie wirtualnej DOS, która jest również używana dla prawdziwych aplikacji DOS przez podpięcie przerwania klawiatury. conagent.exenastępnie wywołuje Vcond (który jest VxD ). Vcond musiał następnie przekazać dane wejściowe z klawiatury do maszyny wirtualnej systemu, a następnie do aplikacji konsoli Win32. Oprócz wydajności, innym problemem związanym z tą implementacją jest to, że dyski, które są lokalne dla maszyny wirtualnej DOS, nie są widoczne dla aplikacji konsoli Win32. Może to spowodować zamieszanie.

W systemie Windows 9x bufor ekranu odzwierciedla strukturę bufora tekstowego VGA , z dwoma bajtami na komórkę znakową: jeden bajt na kod znaku, jeden bajt na atrybuty (znak musi być w zestawie znaków OEM , atrybut ma tło o wysokiej intensywności /nie miga). To znacznie przyspiesza działanie, jeśli używany jest rzeczywisty tryb tekstowy VGA.

Windows NT i Windows CE

Tradycyjnie za zarządzanie oknami konsoli w systemach operacyjnych z rodziny Windows NT odpowiadał podsystem wykonawczy klienta/serwera (CSRSS) . W systemie Windows 7 CSRSS odradza się po jednym dla każdego okna konsoli, aby nim zarządzać. W systemie Windows 8 i nowszych aplikacje konsolowe bezpośrednio odradzają swoje procesy. Ta zmiana ma wpływ zarówno na bezpieczeństwo, jak i użyteczność. Chociaż CSRSS działa w wysoce uprzywilejowanym kontekście zabezpieczeń, każdy działa w tym samym kontekście zabezpieczeń, co aplikacja konsoli. Ponadto w systemie Windows 7 ta zmiana umożliwiła oknom konsoli korzystanie z funkcji motywu Aero Glass . conhost.execonhost.execonhost.exe

W systemach Windows NT i Windows CE bufor ekranu używa czterech bajtów na komórkę znakową: dwa bajty na kod znakowy, dwa bajty na atrybuty. Znak jest następnie kodowany w 16-bitowym podzbiorze Unicode ( UCS-2 ). Aby zapewnić zgodność z poprzednimi wersjami, interfejsy API konsoli istnieją w dwóch wersjach: Unicode i innych niż Unicode. Wersje interfejsów API inne niż Unicode mogą używać przełączania stron kodowych w celu rozszerzenia zakresu wyświetlanych znaków (ale tylko wtedy, gdy w oknie konsoli są używane czcionki TrueType , co rozszerza zakres dostępnych kodów). Nawet UTF-8 jest dostępny jako „strona kodowa 65001” (wyświetlany tylko z podzbioru UCS-2 pełnego Unicode).

Od aktualizacji systemu Windows 10 października 2018 r. Konsola systemu Windows ma pełną obsługę Unicode.

Zobacz też

Bibliografia

Linki zewnętrzne