EXCEPTION_RECORD 结构 (winnt.h)
描述异常。
语法
typedef struct _EXCEPTION_RECORD {
DWORD ExceptionCode;
DWORD ExceptionFlags;
struct _EXCEPTION_RECORD *ExceptionRecord;
PVOID ExceptionAddress;
DWORD NumberParameters;
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD;
成员
ExceptionCode
发生异常的原因。 这是硬件异常生成的代码,或在 RaiseException 函数中为软件生成的异常指定的代码。 下表描述了由于常见编程错误而可能发生的异常代码。
调试控制台进程时,可能会发生另一个异常代码。 它不会因为编程错误而出现。 当将 CTRL+C 输入到处理 CTRL+C 信号的控制台进程并正在调试时,会发生DBG_CONTROL_C异常代码。 此异常代码不应由应用程序处理。 它仅出于调试器的优势而引发,并且仅在将调试器附加到控制台进程时引发。
ExceptionFlags
此成员包含零个或多个异常标志。 下表描述了一些常见的异常标志。 下表中不存在的异常标志应被视为保留以供系统使用。
异常标志 | 含义 |
---|---|
|
存在此标志表示异常是不可持续的异常,而缺少此标志则表示该异常是一个连续的异常。 在不可持续异常后继续执行的任何尝试都会导致 EXCEPTION_NONCONTINUABLE_EXCEPTION 异常。 |
|
此标志保留供系统使用。 |
ExceptionRecord
指向关联的 EXCEPTION_RECORD 结构的指针。 异常记录可以链接在一起,以在发生嵌套异常时提供其他信息。
ExceptionAddress
发生异常的地址。
NumberParameters
与异常关联的参数数。 这是 ExceptionInformation 数组中定义的元素数。
ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
描述异常的其他参数的数组。 RaiseException 函数可以指定此参数数组。 对于大多数异常代码,数组元素是未定义的。 下表描述了定义了数组元素的异常代码。
注解
若要使调试器能够调试在 32 位 (与 64 位) 的不同体系结构上运行的目标,请使用此结构的显式形式之一。
typedef struct _EXCEPTION_RECORD32 {
DWORD ExceptionCode;
DWORD ExceptionFlags;
DWORD ExceptionRecord;
DWORD ExceptionAddress;
DWORD NumberParameters;
DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD32, *PEXCEPTION_RECORD32;
typedef struct _EXCEPTION_RECORD64 {
DWORD ExceptionCode;
DWORD ExceptionFlags;
DWORD64 ExceptionRecord;
DWORD64 ExceptionAddress;
DWORD NumberParameters;
DWORD __unusedAlignment;
DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD64, *PEXCEPTION_RECORD64;
要求
最低受支持的客户端 | Windows XP [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 |UWP 应用] |
标头 | winnt.h (包括 Windows.h) |