SetErrorMode

【勇芳软件工作室】汉化HomePreviousNext

SetErrorMode功能控制操作系统处理多种严重错误的方式。您可以指定操作系统将处理这些错误或应用程序将接收和处理它们。

UINT SetErrorMode(

UINT 【U模式】//指定错误处理属性的位标志集
); 

参数

【U模式】

一组指定系统错误处理属性的位标志。定义了以下错误模式位标志常量;您可以设置它们的任意组合:

行动
SEM_FAILCRITICALERRORS如果设置了此标志,则出现此错误时,操作系统不会显示关键错误处理程序消息框。相反,操作系统将错误发送到调用进程。
SEM_NOALIGNMENTFAULTEXCEPT如果设置此标志,操作系统将自动修复内存对齐错误,使其不可见。它为调用进程和任何后代进程执行此操作。

这个标志总是影响MIPS处理器。它对x86处理器没有影响。

如果注册表值\\ CurrentControlSet \\ Control \\ Session Manager:EnableAlignmentFaultExceptions设置为REG_DWORD 0x0,则此键对ALPHA处理器没有影响。那就是系统默认。如果注册表项设置为REG_DWORD 0x1,则SEM_NOALIGNMENTFAULTEXCEPT标志确实影响ALPHA处理器。

SEM_NOGPFAULTERRORBOX如果设置此标志,则出现此错误时,操作系统不会显示通用保护故障消??息框。该标志应【只要】通过调试通过适当的异常处理程序自身处理一般保护(GP)故障的应用程序来设置。
SEM_NOOPENFILEERRORBOX如果设置了此标志,则当找不到文件时,操作系统不会显示消息框。而是将错误返回给调用进程。

返回值

返回值是错误模式位标志的先前状态。

备注

子进程继承其父进程的错误模式。

此函数设置的错误模式属性的默认状态为OFF。

在某些非x86处理器上,对齐内存引用导致对齐错误异常。SEM_NOALIGNMENTFAULTEXCEPT标志允许您控制操作系统是否自动修复此类对齐错误,或使其对应用程序可见。

SEM_NOALIGNMENTFAULTEXCEPT标志始终影响MIPS处理器。它永远不会影响x86处理器。仅当注册表项\\ CurrentControlSet \\ Control \\ Session Manager:EnableAlignmentFaultExceptions设置为REG_DWORD 0x1时才会影响ALPHA处理器。该注册表项的默认设置为REG_DWORD 0x0。

在x86平台上,应用程序不需要执行任何操作系统自动修复未对齐的内存引用。操作系统不会使对齐错误对应用程序可见。

在MIPS平台上,应用程序必须显式调用SetErrorMode,设置SEM_NOALIGNMENTFAULTEXCEPT标志,使操作系统自动修复对齐错误。默认设置是使操作系统使对齐错误对应用程序可见。

在ALPHA平台上,除非上述注册表项设置为REG_DWORD 0x1,否则操作系统会自动修复对齐错误。当该注册表项设置为REG_DWORD 0x1时,操作系统使对齐错误对应用程序可见,然后应用程序必须调用SetErrorMode才能使操作系统自动修复对齐错误。

在x86系统上指定SEM_NOALIGNMENTFAULTEXCEPT标志不是错误,但Windows NT的实现可以自由地忽略并且不正确地保留该标志。这意味着以下代码序列在x86系统上并不总是有效:

SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT);

fuOldErrorMode = SetErrorMode(0);

ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);