Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
Este documento descreve a funcionalidade da plataforma de console que não faz mais parte do nosso roteiro de ecossistema. Não recomendamos o uso deste 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 multiplataforma. Você pode encontrar mais informações sobre essa decisão de design em nosso documento clássico de console versus 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 teclado, mouse, redimensionamento de buffer, foco e eventos de 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 tudo, exceto a entrada do teclado.
Há 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 ler ou gravar em um buffer de entrada.
A seguir estão as descrições das funções de entrada do 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 até que 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 informa 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 informa 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 os 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 manter tantos registros quantos forem gravados. Para usar essa função, o identificador de buffer de entrada especificado deve ter o 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 deve ter o direito de acesso GENERIC_WRITE. |
Um thread do processo de um 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 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 uma alça de entrada do console torna-se 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 entra em um estado de espera eficiente, consumindo muito pouco tempo do processador enquanto aguarda que as condições da operação de espera sejam satisfeitas.