Código do último erro
Quando ocorre um erro, a maioria das funções do sistema retorna um código de erro, geralmente 0, NULL ou –1. Muitas funções do sistema também definem um código de erro adicional chamado código de último erro. Esse código de erro é mantido separadamente para cada thread em execução; Um erro em um thread não substitui o código do último erro em outro thread. Qualquer função pode chamar a função SetLastError ou SetLastErrorEx para definir o código de último erro para o thread atual. Essas funções destinam-se principalmente a bibliotecas de vínculo dinâmico (DLL), para que possam fornecer informações ao aplicativo de chamada. Observe que algumas funções chamam SetLastError ou SetLastErrorEx com 0 quando são bem-sucedidas, apagando o código de erro definido pela função com falha mais recente, enquanto outras não.
Um aplicativo pode recuperar o código de último erro usando a função GetLastError, o código de erro pode dizer mais sobre o que realmente ocorreu para fazer a função falhar. A documentação para funções do sistema indicará as condições sob as quais a função define o código de último erro.
O sistema define um conjunto de códigos de erro que podem ser definidos como códigos de último erro ou retornados por essas funções. Os códigos de erro são valores de 32 bits (o bit 31 é o bit mais significativo). O bit 29 é reservado para códigos de erro definidos pelo aplicativo; Nenhum código de erro do sistema tem esse bit definido. Se você definir códigos de erro para seu aplicativo, defina esse bit para indicar que o código de erro foi definido por um aplicativo e para garantir que os códigos de erro não entrem em conflito com nenhum código de erro definido pelo sistema. Para obter mais informações, consulte WinError.h e Códigos de erro do sistema.