Console do Windows - Windows Console

Console do Windows
Uma janela de console do Windows em execução no Windows 10 20H2.png
Um console do Windows com cmd.exe no Windows 10 20H2
Outros nomes Console Win32
Desenvolvedor (s) Microsoft
Repositório github .com / microsoft / terminal / tree / main / src / host
Escrito em C ++
Sistema operacional Microsoft Windows
Plataforma IA-32 , x86-64 , ARM64
Modelo Emulador de terminal
Licença Licença MIT
Local na rede Internet docs .microsoft .com / en-us / windows / console /

O Console do Windows é a infraestrutura para aplicativos de console no Microsoft Windows . Uma instância de um Console do Windows possui um buffer de tela e um buffer de entrada . Ele permite que aplicativos de console sejam executados dentro de uma janela ou em modo de texto de hardware (de modo a ocupar a tela inteira). O usuário pode alternar entre os dois usando a combinação de teclas Alt+ ↵ Enter. O modo de texto não está disponível no Windows Vista e posterior. A partir do Windows 10 , no entanto, um modo de tela inteira nativo está disponível.

As instâncias do Console do Windows são normalmente usadas para aplicativos que não precisam exibir imagens, mas podem usar cores. Os exemplos incluem cmd.exe , Windows PowerShell , Far Manager e Midnight Commander .

Em 2019, a infraestrutura do Console do Windows foi liberada sob a licença MIT , juntamente com o Terminal do Windows .

Modos de janela e tela inteira

No Windows, um aplicativo de console pode ser executado em dois modos.

Um modo coloca o texto em uma janela e usa a renderização de fontes de um sistema operacional . Nesse modo, a interação de um aplicativo com o usuário é controlada pelo sistema de janelas. Isso é análogo aos aplicativos do X Window System , como o xterm .

O segundo é o modo de tela inteira. No Windows XP e anteriores, o console de tela inteira usa um modo de texto de hardware e carrega uma fonte rasterizada para o adaptador de vídeo . Isso é análogo a um console de sistema de texto . Este modo de tela inteira inicial só oferece suporte a modos de texto compatíveis com VGA, dando a ele uma resolução máxima de caracteres de 80 colunas por 28 linhas. Este modo foi preterido no Windows Vista . Era possível contornar esse problema instalando um driver de vídeo do Windows XP; no entanto, o Windows 8 e posterior não os aceitam. O Windows 10 apresenta um modo de tela inteira mais uma vez, mas esta implementação usa o subsistema de renderização nativo do Windows, em vez do modo de texto. Ele pode ter quantas colunas e linhas couberem na tela.

Os aplicativos podem ser configurados para alternar entre os dois modos usando a combinação de teclas Alt+ ↵ Enter.

Detalhes

O buffer de entrada é uma fila onde os eventos são armazenados (do teclado , mouse etc.). O buffer de saída é uma grade retangular onde os caracteres são armazenados, junto com seus atributos. Uma janela de console pode ter vários buffers de saída, apenas um dos quais está ativo (ou seja, exibido) por um determinado momento. Os aplicativos podem interagir programaticamente com o Console do Windows por meio da API do Windows , que expõe funções de alto nível (como ReadConsolee WriteConsole) e funções de baixo nível (por exemplo, ReadConsoleInpute WriteConsoleOutput).

Os usuários podem alterar a paleta de cores ou a fonte , tanto no nível do sistema quanto no nível do aplicativo. Cada instância de um aplicativo de console, no entanto, não pode alterar sua paleta de cores ou fonte imediatamente.

Os aplicativos do Console do Windows são diferentes dos aplicativos do MS-DOS , embora no Windows (especialmente no Windows 9x ), eles possam não ser diferentes. Os aplicativos do console do Windows têm acesso a toda a API do Windows e não podem ser executados no MS-DOS ou em sistemas operacionais compatíveis. Os aplicativos DOS, no entanto, não podem acessar a API do Windows e só podem ser executados em versões de 32 bits do Windows com a ajuda da máquina virtual DOS (VDM).

Implementações

Antes do Windows 95 , não havia suporte nativo para consoles. Como o Windows 3.1 e anteriores são meramente uma interface gráfica para o MS-DOS, a maioria dos programas de texto executados nas versões anteriores do Windows eram, na verdade, programas do MS-DOS executados em uma janela. Para simplificar a tarefa de portar aplicativos para o Windows, as primeiras versões do Visual C ++ são fornecidas com QuickWin , uma biblioteca que implementa a funcionalidade básica do console dentro de uma janela normal. Uma biblioteca semelhante para Borland C ++ foi chamada EasyWin .

Windows 9x

Command.com em execução em um console do Windows no Windows 95

O suporte do Windows 9x é relativamente pobre em comparação com o Windows NT , porque a janela do console é executada na máquina DOS virtual do sistema e, portanto, a entrada do teclado para um aplicativo de console Win32 teve que ser direcionada a ela por conagent.exe em execução em uma VM DOS que também é usada para aplicações reais do DOS conectando a interrupção do teclado. conagent.exeem seguida, chama Vcond (que é um VxD ). Vcond então tinha que passar a entrada do teclado para a VM do sistema e, finalmente, para o aplicativo de console Win32. Além do desempenho, outro problema com essa implementação é que as unidades locais para uma VM DOS não são visíveis para um aplicativo de console Win32. Isso pode causar confusão.

No Windows 9x, o buffer de tela espelha a estrutura do buffer de texto VGA , com dois bytes por célula de caractere: um byte para código de caractere, um byte para atributos (o caractere deve estar no conjunto de caracteres OEM , o atributo é com fundo de alta intensidade / sem piscar). Isso acelera consideravelmente a operação se o modo de texto VGA real for usado.

Windows NT e Windows CE

Cmd.exe em execução no Windows CE 3.0

Tradicionalmente, o Client / Server Runtime Subsystem (CSRSS) tem sido responsável por gerenciar janelas de console na família de sistemas operacionais Windows NT . No Windows 7 , o CSRSS gera um conhost.exepara cada janela do console, para gerenciá-lo. No Windows 8 e posterior, os aplicativos de console geram seus conhost.exeprocessos diretamente. Essa mudança tem implicações de segurança e usabilidade. Enquanto o CSRSS é executado em um contexto de segurança altamente privilegiado, cada um conhost.exeé executado no mesmo contexto de segurança que o aplicativo de console. Além disso, no Windows 7, essa alteração permitiu que as janelas do console tivessem os recursos do tema Aero Glass .

No Windows NT e Windows CE , o buffer de tela usa quatro bytes por célula de caractere: dois bytes para código de caractere, dois bytes para atributos. O caractere é então codificado em um subconjunto de 16 bits do Unicode ( UCS-2 ). Para compatibilidade com versões anteriores, as APIs do console existem em duas versões: Unicode e não Unicode. As versões não Unicode de APIs podem usar a alternância de página de código para estender o intervalo de caracteres exibidos (mas apenas se as fontes TrueType forem usadas para a janela do console, estendendo assim o intervalo de códigos disponíveis). Até mesmo UTF-8 está disponível como "página de código 65001" (exibindo apenas do subconjunto UCS-2 de Unicode completo).

A partir da atualização do Windows 10 de outubro de 2018, o Console do Windows tem suporte total a Unicode.

Veja também

Referências

links externos