34.2. "msvcrt" --- Rotinas úteis do tempo de execução do MS VC++
****************************************************************

======================================================================

Essas funções fornecem acesso a alguns recursos úteis nas plataformas
Windows. Alguns módulos de nível superior usam essas funções para
criar as implementações do Windows de seus serviços. Por exemplo, o
módulo "getpass" usa isso na implementação da função "getpass()".

Mais documentação sobre essas funções pode ser encontrada na
documentação da API da plataforma.

O módulo implementa as variantes normal e ampla de caracteres da API
de E/S do console. A API normal lida apenas com caracteres ASCII e é
de uso limitado para aplicativos internacionalizados. A API ampla de
caracteres deve ser usada sempre que possível.

Alterado na versão 3.3: As operações neste módulo agora levantam
"OSError" onde "IOError" foi levantado.


34.2.1. Operações com arquivos
==============================

msvcrt.locking(fd, mode, nbytes)

   Bloqueia parte de um arquivo com base no descritor de arquivo *fd*
   no tempo de execução C. Levanta "OSError" em falha. A região
   bloqueada do arquivo se estende da posição atual do arquivo para
   *nbytes* bytes e pode continuar além do final do arquivo. *mode*
   deve ser uma das constantes "LK_*" listadas abaixo. Várias regiões
   em um arquivo podem estar bloqueadas ao mesmo tempo, mas não podem
   se sobrepor. Regiões adjacentes não são mescladas; eles devem ser
   desbloqueados individualmente.

msvcrt.LK_LOCK
msvcrt.LK_RLCK

   Bloqueia os bytes especificados. Se os bytes não puderem ser
   bloqueados, o programa tentará imediatamente novamente após 1
   segundo. Se, após 10 tentativas, os bytes não puderem ser
   bloqueados, "OSError" será levantado.

msvcrt.LK_NBLCK
msvcrt.LK_NBRLCK

   Bloqueia os bytes especificados. Se os bytes não puderem ser
   bloqueados, "OSError" é levantado.

msvcrt.LK_UNLCK

   Desbloqueia os bytes especificados, que devem ter sido bloqueados
   anteriormente.

msvcrt.setmode(fd, flags)

   Defina o modo de conversão de final de linha para o descritor de
   arquivo *fd*. Para configurá-lo no modo de texto, *flags* deve ser
   "os.O_TEXT"; para binário, deve ser "os.O_BINARY".

msvcrt.open_osfhandle(handle, flags)

   Cria um descritor de arquivo em tempo de execução C a partir do
   identificador de arquivo *handle*. O parâmetro *flags* deve ser um
   OR bit a bit de "os.O_APPEND", "os.O_RDONLY" e "os.O_TEXT". O
   descritor de arquivo retornado pode ser usado como um parâmetro
   para "os.fdopen()" para criar um objeto de arquivo.

msvcrt.get_osfhandle(fd)

   Retorna o identificador de arquivo para o descritor de arquivo
   *fd*. Leva "OSError" se *fd* não for reconhecido.


34.2.2. E/S de console
======================

msvcrt.kbhit()

   Return true if a keypress is waiting to be read.

msvcrt.getch()

   Lê um pressionamento de tecla e retorna o caractere resultante como
   uma sequência de bytes. Nada é ecoado no console. Essa chamada será
   bloqueada se um pressionamento de tecla ainda não estiver
   disponível, mas não esperará que "Enter" seja pressionado. Se a
   tecla pressionada for uma tecla de função especial, ela retornará
   "\000'" ou "'\xe0'"; a próxima chamada retornará o código da chave.
   A tecla "Control-C" não pode ser lida com esta função.

msvcrt.getwch()

   Variante com caractere largo de "getch()", retornando um valor
   Unicode.

msvcrt.getche()

   Semelhante a "getch()", mas o pressionamento de tecla será repetido
   se representar um caractere imprimível.

msvcrt.getwche()

   Variante com caractere largo de "getche()", retornando um valor
   Unicode.

msvcrt.putch(char)

   Imprime a sequência de bytes *char* no console sem armazenar em
   buffer.

msvcrt.putwch(unicode_char)

   Variante com caractere largo de "putch()", retornando um valor
   Unicode.

msvcrt.ungetch(char)

   Faz com que a string de bytes *char* seja "empurrada" para o buffer
   do console; será o próximo caractere lido por "getch()" ou
   "getche()".

msvcrt.ungetwch(unicode_char)

   Variante com caractere largo de "ungetch()", retornando um valor
   Unicode.


34.2.3. Outras funções
======================

msvcrt.heapmin()

   Força o heap "malloc()" a ser limpado e retorna os blocos não
   utilizados ao sistema operacional. Em caso de falha, isso gera
   "OSError".
