Función SetErrorMode (errhandlingapi.h)

Controla si el sistema controlará los tipos especificados de errores graves o si el proceso los controlará.

Sintaxis

UINT SetErrorMode(
  [in] UINT uMode
);

Parámetros

[in] uMode

Modo de error de proceso. Este parámetro puede ser uno o más de los siguientes valores.

Valor Significado
0
Use el valor predeterminado del sistema, que es mostrar todos los cuadros de diálogo de error.
SEM_FAILCRITICALERRORS
0x0001
El sistema no muestra el cuadro de mensaje critical-error-handler. En su lugar, el sistema envía el error al proceso de llamada.

El procedimiento recomendado es que todas las aplicaciones llamen a la función SetErrorMode para todo el proceso con el parámetro SEM_FAILCRITICALERRORS en el inicio. Esto es para evitar que los cuadros de diálogo del modo de error bloqueen la aplicación.

SEM_NOALIGNMENTFAULTEXCEPT
0x0004
El sistema corrige automáticamente los errores de alineación de memoria y los hace invisibles para la aplicación. Lo hace para el proceso de llamada y cualquier proceso descendiente. Esta característica solo es compatible con determinadas arquitecturas de procesador. Para obtener más información, vea la sección Comentarios.

Una vez establecido este valor para un proceso, se omiten los intentos posteriores de borrar el valor.

SEM_NOGPFAULTERRORBOX
0x0002
El sistema no muestra el cuadro de diálogo de Informe de errores de Windows.
SEM_NOOPENFILEERRORBOX
0x8000
La función OpenFile no muestra un cuadro de mensaje cuando no encuentra un archivo. En su lugar, el error se devuelve al autor de la llamada. Este modo de error invalida la marca OF_PROMPT .

Valor devuelto

El valor devuelto es el estado anterior de las marcas de bits del modo de error.

Comentarios

Cada proceso tiene un modo de error asociado que indica al sistema cómo va a responder la aplicación a errores graves. Un proceso secundario hereda el modo de error de su proceso primario. Para recuperar el modo de error de proceso, use la función GetErrorMode .

Dado que el modo de error está establecido para todo el proceso, debe asegurarse de que las aplicaciones multiproceso no establezcan marcas de modo de error diferentes. Si lo hace, puede provocar un control de errores incoherente.

El sistema no hace que los errores de alineación sean visibles para una aplicación en todas las arquitecturas de procesador. Por lo tanto, especificar SEM_NOALIGNMENTFAULTEXCEPT no es un error en estas arquitecturas, pero el sistema es libre de omitir silenciosamente la solicitud. Esto significa que las secuencias de código como las siguientes no siempre son válidas en equipos x86:

C++
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); 
fuOldErrorMode = SetErrorMode(0); 
ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);
Itanium: Una aplicación debe llamar explícitamente a SetErrorMode con SEM_NOALIGNMENTFAULTEXCEPT para que el sistema corrija automáticamente los errores de alineación. La configuración predeterminada es para que el sistema haga que los errores de alineación sean visibles para una aplicación.

Visual Studio 2005: Al declarar un puntero a una estructura que puede no tener datos alineados, puede usar la palabra clave __unaligned para indicar que el tipo debe leerse un byte a la vez. Para obtener más información, vea Alineación de datos de Windows.

Windows 7: Los autores de llamadas deben favorecer SetThreadErrorMode sobre SetErrorMode , ya que es menos perjudicial para el comportamiento normal del sistema.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado errhandlingapi.h (incluir Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Funciones de control de errores

Modo de error

GetErrorMode

SetThreadErrorMode