winbase.h


GetLastError

La función GetLastError devuelve el valor del código del último error del hilo que la invoca. El código del último error se mantiene para cada hilo en una tabla. Varios hilos no sobrescriben los códigos de los últimos errores de los otros.

Sintaxis

DWORD GetLastError(VOID)

Parámetros

Esta función no tiene parámetros.

Valor de retorno

El valor de retorno es el del código del último error del hilo que invoca la función. Las funciones actualizan este valor mendiante una llamada a la función SetLastError. La sección Valor de retorno de cada referencia indica las condiciones bajo las que la función modifica el código del último error.

Observaciones

Se puede llamar a la función GetLastError inmediatamente después de que un valor de retorno indique que la función que devuelve datos correctos. Esto es así porque algunas funciones llaman a SetLastError(0) cuando tienen éxito, limpiando el código de error de la función que haya fallado más recientemente.

Muchas de las funciones del API de Win32 que asignan el valor del código de último error del hilo, lo hacen cuando fallan; sólo unas pocas lo hacen cuando tienen éxito. El fallo de una función se indica generalmente mediante un valor de retorno de código de error como FALSE, NULL, 0xFFFFFFFF o -1. Algunas funciones llaman a SetLastError bajo condiciones de éxito; esos casos se indican en la referencia de cada función.

Los códigos de error son valores de 32 bits (el bit 31 es el de mayor peso). El bit 29 se reserva para códigos de error definidos por la aplicación; ningún código de error del sistema tiene este bit activo. Si se define un código de error para una aplicación, hay que activar este bit a uno. Esto indica que el código de error ha sido definido por una aplicación, y asegura que el código de error no entra en conflicto con cualquier código de error definido por el sistema operativo.

Para obtener una cadena de error para códigos de error del sistema operativo, usar la función FormatMessage. Para una lista completa de códigos de error, ver el fichero de cabecera WINNT.H en el SDK de Win32.