Поделиться через


структура 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

Структура STOWED_EXCEPTION_INFORMATION_HEADER , содержащая сведения для этой родительской структуры.

ResultCode

Тип: HRESULT

Код HRESULT для уложенного исключения.

ExceptionForm

Тип: DWORD

2-разрядное значение, определяющее форму исключения.

Значение Значение
STOWED_EXCEPTION_FORM_BINARY
0x01
Это значение указывает, что исключение имеет двоичную форму.
STOWED_EXCEPTION_FORM_TEXT
0x02
Это значение указывает, что исключение имеет вид text.

ThreadId

Тип: DWORD

30-разрядное значение, определяющее поток, вызвав которому исключение. При хранении значение смещается вправо на 2 бита. Чтобы преобразовать его обратно в допустимый идентификатор потока, сместите значение влево на 2. Пример:

DWORD ActualThreadId = (StowedException.ThreadId << 2);

(неименованная struct)

Члены этой вложенной структуры допустимы, только если для элемента ExceptionForm задано значение STOWED_EXCEPTION_FORM_BINARY.

ExceptionAddress

Тип: PVOID

Указатель, содержащий адрес исключения.

StackTraceWordSize

Тип: ULONG

Размер (в байтах) каждого слова в трассировке стека, на которое указывает элемент StackTrace . Это значение равно 4 для 32-разрядных платформ и 8 для 64-разрядных платформ.

StackTraceWords

Тип: ULONG

Количество слов в трассировке стека, на которое указывает элемент StackTrace . Количество слов равно количеству элементов в массиве.

StackTrace

Тип: PVOID

Указатель на блок памяти, содержащий трассировку стека.

(неименованная struct)

Элемент этой вложенной структуры действителен только в том случае, если для элемента ExceptionForm задано значение STOWED_EXCEPTION_FORM_TEXT.

Errortext

Тип: PWSTR

Указатель на строку, завершающуюся нулевым значением, которая содержит текст ошибки исключения.

NestedExceptionType

Тип: ULONG

32-разрядное значение, указывающее тип объекта, на который указывает элемент NestedException . Определите значение с помощью этого макроса определения типа переключения байтов, который предполагает наличие байтового байта:

#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 , то есть элементом Header , содержащим допустимый STOWED_EXCEPTION_INFORMATION_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 [только классические приложения]
Минимальная версия сервера
Windows Server 2012 R2 [только классические приложения]
Заголовок
Нет

См. также раздел

EXCEPTION_RECORD

STOWED_EXCEPTION_INFORMATION_HEADER