Compartir a través de


Función SetErrorMode (errhandlingapi.h)

Controla si el sistema o el proceso controlan los tipos de error graves especificados.

Sintaxis

UINT SetErrorMode(
  [in] UINT uMode
);

Parámetros

[in] uMode

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

Valor Significado
0
Use el valor predeterminado del sistema, que muestra 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 de todo el proceso con un parámetro de SEM_FAILCRITICALERRORS en el inicio. Esto es para evitar que los diálogos del modo de error bloquee 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 los procesos descendientes. 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 invoca informes de errores de Windows. Para deshabilitar la interfaz de usuario de Informe de errores de Windows, llame a WerSetFlags con la marca WER_FAULT_REPORTING_NO_UI.
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.

Observaciones

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 cada vez. Para obtener más información, consulte alineación de datos de Windows.

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

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [aplicaciones de escritorio | Aplicaciones para UWP]
servidor mínimo admitido Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP]
de la plataforma de destino de Windows
encabezado de errhandlingapi.h (incluya Windows.h)
biblioteca de Kernel32.lib
DLL de Kernel32.dll

Consulte también

funciones de control de errores

modo de error

GetErrorMode

SetThreadErrorMode