Compartilhar via


Métodos de entrada e saída

Existem duas abordagens diferentes para a E/S do console e a escolha depende de quanta flexibilidade e controle o aplicativo precisa. A abordagem de alto nível permite E/S de fluxo de caracteres simples, mas limita o acesso aos buffers de entrada e tela do console. A abordagem de baixo nível exige que os desenvolvedores escrevam mais código e escolham entre mais tipos de funções, mas também oferece mais flexibilidade aos aplicativos.

Observação

A abordagem de baixo nível não é recomendada para o desenvolvimento novo e contínuo. Para aplicativos que precisam da funcionalidade de funções de E/S de console de baixo nível, incentivamos você a usar sequências de terminais virtuais e a explorar nossa documentação sobre funções clássicas versus terminal virtual e o roteiro do ecossistema.

Aplicativos podem usar as funções de E/S de arquivo, ReadFile e WriteFile, e as funções de console, ReadConsole e WriteConsole, para E/S de alto nível que fornece acesso indireto aos buffers de tela e de entrada do console. As funções de entrada de alto nível filtram e processam os dados no buffer de entrada do console para retornar a entrada como um fluxo de caracteres, descartando a entrada de redimensionamento do mouse e do buffer. Da mesma forma, as funções de saída de alto nível gravam um fluxo de caracteres que são exibidos no local atual do cursor em um buffer de tela. Aplicativos controlam a maneira como essas funções funcionam definindo os modos de E/S do console.

As funções de E/S de baixo nível oferecem acesso direto aos buffers de entrada e tela do console, permitindo que aplicativos acessem eventos de entrada de redimensionamento de mouse e buffer e informações estendidas para eventos de teclado. As funções de saída de baixo nível permitem que aplicativos leiam ou gravem em um número especificado de células de caracteres consecutivas em um buffer de tela, ou leiam ou gravem em blocos retangulares de células de caracteres em um local especificado em um buffer de tela. Os modos de entrada de um console afetam a entrada de baixo nível, possibilitando que o aplicativo determine se os eventos de redimensionamento de mouse e buffer foram colocados no buffer de entrada. Os modos de saída de um console não têm efeito na saída de baixo nível.

Os métodos de E/S de alto e baixo nível não são mutuamente exclusivos, de modo que aplicativos podem usar qualquer combinação dessas funções. Geralmente, no entanto, aplicativos usam uma ou outra abordagem, exclusivamente, e recomendamos focar em um paradigma específico para alcançar os melhores resultados.

Dica

O aplicativo ideal preparado para o futuro se concentrará nos métodos de alto nível e aumentará as necessidades adicionais com sequências de terminais virtuais por meio dos métodos de E/S de alto nível, quando necessário, o que evita completamente o uso de funções de E/S de baixo nível.

Os tópicos a seguir descrevem os modos de console e as funções de E/S de alto e baixo nível.