Funções de entrada do console de baixo nível
Importante
Este documento descreve a funcionalidade da plataforma do console que não faz mais parte do nosso roteiro de ecossistema. Não recomendamos o uso desse conteúdo em novos produtos, mas continuaremos a oferecer suporte aos usos existentes por tempo indeterminado. Nossa solução moderna preferida se concentra em sequências de terminais virtuais para máxima compatibilidade em cenários de multiplataforma. Você pode encontrar mais informações sobre essa decisão de design em nosso documento Console clássico versus terminal virtual.
Um buffer de funções de entrada de console de baixo nível contém registros de entrada que podem apresentar informações sobre eventos de teclado, mouse, redimensionamento de buffer, foco e menu. As funções de baixo nível oferecem acesso direto ao buffer de entrada, ao contrário das funções de alto nível que filtram e processam os dados do buffer de entrada e descartam tudo, exceto a entrada do teclado.
Existem cinco funções de baixo nível para acessar o buffer de entrada de um console:
- ReadConsoleInput
- PeekConsoleInput
- GetNumberOfConsoleInputEvents
- WriteConsoleInput
- FlushConsoleInputBuffer
As funções ReadConsoleInput, PeekConsoleInput e WriteConsoleInput usam a estrutura INPUT_RECORD para leitura e gravação em um buffer de entrada.
Veja a seguir as descrições das funções de entrada de console de baixo nível.
Função | Descrição |
---|---|
ReadConsoleInput | Lê e remove registros de entrada de um buffer de entrada. A função não retorna até que algum registro esteja disponível para leitura. Em seguida, todos os registros disponíveis são transferidos para o buffer do processo de chamada até que não existam mais registros disponíveis ou que o número especificado de registros tenha sido lido. Os registros não lidos ficam no buffer de entrada para a próxima operação de leitura. A função informa o número total de registros lidos. Para ver um exemplo que usa ReadConsoleInput, confira Ler eventos de buffer de entrada. |
PeekConsoleInput | Lê sem remover os registros de entrada pendentes em um buffer de entrada. Os registros ainda disponíveis são copiados para o buffer do processo de chamada, até o número especificado. Se não houver registros disponíveis, a função retornará imediatamente. A função informa o número total de registros lidos. |
GetNumberOfConsoleInputEvents | Determina o número de registros de entrada não lidos em um buffer de entrada. |
WriteConsoleInput | Coloca registros de entrada no buffer de entrada atrás dos eventos pendentes no buffer. O buffer de entrada cresce dinamicamente, se necessário, para armazenar o número de registros que forem gravados. Para usar essa função, o identificador de buffer de entrada especificado precisa ter direito de acesso GENERIC_WRITE. |
FlushConsoleInputBuffer | Descarta todos os eventos não lidos no buffer de entrada. Para usar essa função, o identificador de buffer de entrada especificado precisa ter direito de acesso GENERIC_WRITE. |
Uma conversa de processo do aplicativo pode executar uma operação de espera para aguardar que a entrada esteja disponível em um buffer de entrada. Para iniciar uma operação de espera, especifique o identificador para o buffer de entrada em uma chamada para uma das funções de espera. Essas funções retornam quando o estado de um ou mais objetos é sinalizado. O estado do identificador de entrada do console fica sinalizado quando há registros não lidos em seu buffer de entrada. O estado é restaurado para não sinalizado quando o buffer de entrada fica vazio. Na falta de entrada disponível, a conversa de chamada entra em um eficiente estado de espera, consumindo muito pouco tempo do processador enquanto aguarda a satisfação das condições da operação de espera.