STOWED_EXCEPTION_INFORMATION_V2 구조체
보관된 예외 정보를 포함합니다.
구문
typedef struct _STOWED_EXCEPTION_INFORMATION_V2 {
STOWED_EXCEPTION_INFORMATION_HEADER Header;
HRESULT ResultCode;
struct {
DWORD ExceptionForm :2;
DWORD ThreadId :30;
};
union {
struct {
PVOID ExceptionAddress;
ULONG StackTraceWordSize;
ULONG StackTraceWords;
PVOID StackTrace;
};
struct {
PWSTR ErrorText;
};
};
ULONG NestedExceptionType;
PVOID NestedException;
} STOWED_EXCEPTION_INFORMATION_V2, *PSTOWED_EXCEPTION_INFORMATION_V2;
멤버
-
머리글
-
이 부모 구조에 대한 정보를 포함하는 STOWED_EXCEPTION_INFORMATION_HEADER 구조체입니다.
-
ResultCode
-
형식: HRESULT
-
보관된 예외에 대한 HRESULT 코드입니다.
-
ExceptionForm
-
형식: DWORD
-
예외의 형식을 식별하는 2비트 값입니다.
값 의미 - STOWED_EXCEPTION_FORM_BINARY
- 0x01
이 값은 예외의 형식이 이진임을 나타냅니다. - STOWED_EXCEPTION_FORM_TEXT
- 0x02
이 값은 예외의 형식이 텍스트임을 나타냅니다. -
ThreadId
-
형식: DWORD
-
예외를 발생시킨 스레드를 식별하는 30비트 값입니다. 값은 저장될 때 오른쪽으로 2비트씩 이동합니다. 다시 유효한 스레드 ID로 변환하려면 값을 왼쪽으로 2씩 이동합니다. 예:
DWORD ActualThreadId = (StowedException.ThreadId << 2);
-
(명명되지 않은 구조체)
-
이 중첩된 구조체의 멤버는 ExceptionForm 멤버가 STOWED_EXCEPTION_FORM_BINARY 설정된 경우에만 유효합니다.
-
ExceptionAddress
-
형식: PVOID
-
예외 주소를 포함하는 포인터입니다.
-
StackTraceWordSize
-
형식: ULONG
-
StackTrace 멤버가 가리키는 스택 추적의 각 단어 크기(바이트)입니다. 이 값은 32비트 플랫폼의 경우 4로, 64비트 플랫폼의 경우 8로 설정됩니다.
-
StackTraceWords
-
형식: ULONG
-
StackTrace 멤버가 가리키는 스택 추적의 단어 수입니다. 단어 수는 배열의 요소 수와 같습니다.
-
StackTrace
-
형식: PVOID
-
스택 추적을 포함하는 메모리 블록에 대한 포인터입니다.
-
-
(명명되지 않은 구조체)
-
이 중첩된 구조체의 멤버는 ExceptionForm 멤버가 STOWED_EXCEPTION_FORM_TEXT 설정된 경우에만 유효합니다.
-
ErrorText
-
형식: PWSTR
-
예외의 오류 텍스트를 포함하는 null로 끝나는 문자열에 대한 포인터입니다.
-
-
NestedExceptionType
-
형식: ULONG
-
NestedException 멤버가 가리키는 개체의 형식을 지정하는 32비트 값입니다. little-endian을 가정하는 이 바이트 스왑 형식 정의 매크로를 사용하여 값을 정의합니다.
#define STOWED_EXCEPTION_NESTED_TYPE(t) ((((((ULONG)(t)) >> 24) & 0xFF) << 0) | \ (((((ULONG)(t)) >> 16) & 0xFF) << 8) | \ (((((ULONG)(t)) >> 8) & 0xFF) << 16) | \ (((((ULONG)(t)) >> 0) & 0xFF) << 24))
다음은 몇 가지 일반적인 형식 정의입니다.
값 의미 - STOWED_EXCEPTION_NESTED_TYPE_NONE
- (0x00000000)
이 값은 중첩된 예외 개체가 없음을 지정합니다. - STOWED_EXCEPTION_NESTED_TYPE_WIN32
- STOWED_EXCEPTION_NESTED_TYPE('W32E')
이 값은 NestedException 멤버가 EXCEPTION_RECORD 개체를 가리키도록 지정합니다. - STOWED_EXCEPTION_NESTED_TYPE_STOWED
- STOWED_EXCEPTION_NESTED_TYPE('STOW')
이 값은 NestedException 멤버가 다른 보관된 예외 개체를 가리키도록 지정합니다. 다른 허용 예외 개체는 STOWED_EXCEPTION_INFORMATION_V2 개체 또는 유효한 Header 멤버가 있는 다른 버전, 즉 유효한 STOWED_EXCEPTION_INFORMATION_HEADER 포함하는 Header 멤버일 수 있습니다. - STOWED_EXCEPTION_NESTED_TYPE_CLR
- STOWED_EXCEPTION_NESTED_TYPE('CLR1')
이 값은 NestedException 멤버가 'CLR1' 예외 개체를 가리키도록 지정합니다. - STOWED_EXCEPTION_NESTED_TYPE_LEO
- STOWED_EXCEPTION_NESTED_TYPE('LEO1')
이 값은 NestedException 멤버가 언어 예외 개체를 가리키도록 지정합니다. -
NestedException
-
형식: PVOID
-
중첩된 예외 형식에 대한 포인터입니다. 개체의 형식은 NestedExceptionType 멤버로 표시됩니다.
설명
STOWED_EXCEPTION_INFORMATION_V2 및 STOWED_EXCEPTION_INFORMATION_HEADER 현재 공개적으로 사용할 수 있는 헤더에 정의되어 있지 않으므로 사용하기 전에 소스 코드에서 정의해야 합니다.
STOWED_EXCEPTION_INFORMATION_V1 구조체는 NestedExceptionType 및 NestedException 멤버를 포함하지 않는다는 점을 제외하고 이 구조체와 동일합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows 8.1 [데스크톱 앱만 해당] |
지원되는 최소 서버 |
R2 Windows Server 2012 [데스크톱 앱만 해당] |
헤더 |
|