Compartilhar via


Funções de entrada do console Low-Level

Importante

Este documento descreve a funcionalidade da plataforma de console que não faz mais parte do roteiro do nosso ecossistema. Não recomendamos usar esse conteúdo em novos produtos, mas continuaremos a dar suporte aos usos existentes para o futuro indefinido. Nossa solução moderna preferida se concentra em sequências de terminal virtual para a máxima compatibilidade em cenários de plataforma cruzada. Você pode encontrar mais informações sobre essa decisão de design em nosso console clássico versus documento de terminal virtual .

Um buffer de funções de entrada de console de baixo nível contém registros de entrada que podem incluir informações sobre eventos de teclado, mouse, redimensionamento de buffer, foco e menu. As funções de baixo nível fornecem 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, descartando todas, exceto a entrada do teclado.

Há cinco funções de baixo nível para acessar o buffer de entrada de um console:

As funções ReadConsoleInput, PeekConsoleInput e WriteConsoleInput usam a estrutura INPUT_RECORD para ler ou gravar em um buffer de entrada.

A seguir estão 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 pelo menos um 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 haja mais registros disponíveis ou o número especificado de registros tenha sido lido. Os registros não lidos permanecem no buffer de entrada para a próxima operação de leitura. A função relata o número total de registros que foram lidos. Para obter um exemplo que usa ReadConsoleInput, consulte Lendo eventos de buffer de entrada.
PeekConsoleInput Lê sem remover os registros de entrada pendentes em um buffer de entrada. Todos os registros disponíveis até o número especificado são copiados para o buffer do processo de chamada. Se nenhum registro estiver disponível, a função retornará imediatamente. A função relata o número total de registros que foram 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 de quaisquer registros pendentes no buffer. O buffer de entrada cresce dinamicamente, se necessário, para conter tantos registros quanto gravados. Para usar essa função, o identificador de buffer de entrada especificado deve ter o acesso GENERIC_WRITE correto.
FlushConsoleInputBuffer Descarta todos os eventos não lidos no buffer de entrada. Para usar essa função, o identificador de buffer de entrada especificado deve ter o acesso GENERIC_WRITE correto.

Um thread do processo de um aplicativo pode executar uma operação de espera para aguardar a entrada estar disponível em um buffer de entrada. Para iniciar uma operação de espera, especifique um identificador para o buffer de entrada em uma chamada para qualquer uma das funções de espera. Essas funções podem retornar quando o estado de um ou mais objetos é sinalizado. O estado de um identificador de entrada do console fica sinalizado quando há registros não lidos em seu buffer de entrada. O estado é redefinido para não sinalizado quando o buffer de entrada fica vazio. Se não houver nenhuma entrada disponível, o thread de chamada entrará em um estado de espera eficiente, consumindo muito pouco tempo de processador enquanto aguarda as condições da operação de espera serem atendidas.