1
1978
Unregistered / Unconfirmed
GUEST, unregistred user!
The SetErrorMode function controls how the operating system handles several types of serious errors. You can specify that the
operating system will handle these errors or that the application will receive and handle them.
UINT SetErrorMode(
UINT uMode // set of bit flags that specify error-handling properties
);
Parameters
uMode
A set of bit flags that specify system error-handling properties. The following error mode bit flag constants are defined;
you can set any combination of them:
Value Action
SEM_FAILCRITICALERRORS If this flag is set, the operating systemdo
es not display the critical-error-handler message box
when such an error occurs. Instead, the operating system sends the error to the calling process.
SEM_NOALIGNMENTFAULTEXCEPT If this flag is set, the operating system automatically fixes memory alignment faults and makes
them invisible to the application. Itdo
es this for the calling process and any descendant processes. This flag always
affects MIPS processors. It has no effect on x86 processors.If the registry value /CurrentControlSet/Control/Session
Manager:EnableAlignmentFaultExceptions is set to REG_DWORD 0x0, this key has no effect on ALPHA processors. That is the
system default. If the registry key is set to REG_DWORD 0x1, the SEM_NOALIGNMENTFAULTEXCEPT flagdo
es affect ALPHA processors.
SEM_NOGPFAULTERRORBOX If this flag is set, the operating systemdo
es not display the general-protection-fault message box
when such an error occurs. This flag should only be set by debugging applications that handle general protection (GP) faults
themselves via an appropriate exception handler.
SEM_NOOPENFILEERRORBOX If this flag is set, the operating systemdo
es not display a message box when it fails to find a a file.
Instead, the error is returned to the calling process.
Return Values
The return value is the previous state of the error-mode bit flags.
Remarks
A child process inherits the error mode of its parent process.
The default state for the error mode properties set by this function is OFF.
On some non-x86 processors misaligned memory references cause an alignment fault exception. The SEM_NOALIGNMENTFAULTEXCEPT flag
lets you control whether the operating system automatically fixes such alignment faults, or makes them visible to an application.
The SEM_NOALIGNMENTFAULTEXCEPT flag always affects MIPS processors. It never affects x86 processors. It affects ALPHA processors
only if the registry key /CurrentControlSet/Control/Session Manager:EnableAlignmentFaultExceptions is set to REG_DWORD 0x1. The
default setting for that registry key is REG_DWORD 0x0.
On an x86 platform, an applicationdo
esn't need todo
anything to have the operating system automatically fix misaligned memory
references. The operating systemdo
es not make alignment faults visible to an application.
On a MIPS platform, an application must explicitly call SetErrorMode, setting the SEM_NOALIGNMENTFAULTEXCEPT flag, to have the
operating system automatically fix alignment faults. The default setting is for the operating system to make alignment faults
visible to an application.
On an ALPHA platform, the operating system automatically fixes alignment faults, unless the aforementioned registry key is set
to REG_DWORD 0x1. When that registry key is set to REG_DWORD 0x1, the operating system makes alignment faults visible to an
application, and an application must then
call SetErrorMode to have the operating system automatically fix alignment faults.
Specifying the SEM_NOALIGNMENTFAULTEXCEPT flag on x86 systems is not an error, but implementations of Windows NT are free to
silently ignore and not properly preserve the flag. This means that code sequences such as the following are not always valid
on x86 systems:
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT);
fuOldErrorMode = SetErrorMode(0);
ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);
operating system will handle these errors or that the application will receive and handle them.
UINT SetErrorMode(
UINT uMode // set of bit flags that specify error-handling properties
);
Parameters
uMode
A set of bit flags that specify system error-handling properties. The following error mode bit flag constants are defined;
you can set any combination of them:
Value Action
SEM_FAILCRITICALERRORS If this flag is set, the operating systemdo
es not display the critical-error-handler message box
when such an error occurs. Instead, the operating system sends the error to the calling process.
SEM_NOALIGNMENTFAULTEXCEPT If this flag is set, the operating system automatically fixes memory alignment faults and makes
them invisible to the application. Itdo
es this for the calling process and any descendant processes. This flag always
affects MIPS processors. It has no effect on x86 processors.If the registry value /CurrentControlSet/Control/Session
Manager:EnableAlignmentFaultExceptions is set to REG_DWORD 0x0, this key has no effect on ALPHA processors. That is the
system default. If the registry key is set to REG_DWORD 0x1, the SEM_NOALIGNMENTFAULTEXCEPT flagdo
es affect ALPHA processors.
SEM_NOGPFAULTERRORBOX If this flag is set, the operating systemdo
es not display the general-protection-fault message box
when such an error occurs. This flag should only be set by debugging applications that handle general protection (GP) faults
themselves via an appropriate exception handler.
SEM_NOOPENFILEERRORBOX If this flag is set, the operating systemdo
es not display a message box when it fails to find a a file.
Instead, the error is returned to the calling process.
Return Values
The return value is the previous state of the error-mode bit flags.
Remarks
A child process inherits the error mode of its parent process.
The default state for the error mode properties set by this function is OFF.
On some non-x86 processors misaligned memory references cause an alignment fault exception. The SEM_NOALIGNMENTFAULTEXCEPT flag
lets you control whether the operating system automatically fixes such alignment faults, or makes them visible to an application.
The SEM_NOALIGNMENTFAULTEXCEPT flag always affects MIPS processors. It never affects x86 processors. It affects ALPHA processors
only if the registry key /CurrentControlSet/Control/Session Manager:EnableAlignmentFaultExceptions is set to REG_DWORD 0x1. The
default setting for that registry key is REG_DWORD 0x0.
On an x86 platform, an applicationdo
esn't need todo
anything to have the operating system automatically fix misaligned memory
references. The operating systemdo
es not make alignment faults visible to an application.
On a MIPS platform, an application must explicitly call SetErrorMode, setting the SEM_NOALIGNMENTFAULTEXCEPT flag, to have the
operating system automatically fix alignment faults. The default setting is for the operating system to make alignment faults
visible to an application.
On an ALPHA platform, the operating system automatically fixes alignment faults, unless the aforementioned registry key is set
to REG_DWORD 0x1. When that registry key is set to REG_DWORD 0x1, the operating system makes alignment faults visible to an
application, and an application must then
call SetErrorMode to have the operating system automatically fix alignment faults.
Specifying the SEM_NOALIGNMENTFAULTEXCEPT flag on x86 systems is not an error, but implementations of Windows NT are free to
silently ignore and not properly preserve the flag. This means that code sequences such as the following are not always valid
on x86 systems:
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT);
fuOldErrorMode = SetErrorMode(0);
ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);