структура MINIDUMP_EXCEPTION (minidumpapiset.h)

Содержит сведения об исключении.

Синтаксис

typedef struct _MINIDUMP_EXCEPTION {
  ULONG32 ExceptionCode;
  ULONG32 ExceptionFlags;
  ULONG64 ExceptionRecord;
  ULONG64 ExceptionAddress;
  ULONG32 NumberParameters;
  ULONG32 __unusedAlignment;
  ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} MINIDUMP_EXCEPTION, *PMINIDUMP_EXCEPTION;

Члены

ExceptionCode

Причина возникновения исключения. Это код, созданный аппаратным исключением, или код, указанный в функции RaiseException для программного исключения. Ниже приведены коды исключений, которые могут возникнуть из-за распространенных ошибок программирования.

Значение Значение
EXCEPTION_ACCESS_VIOLATION
Поток пытался выполнить чтение или запись на виртуальный адрес, для которого у него нет соответствующего доступа.
EXCEPTION_ARRAY_BOUNDS_EXCEEDED
Поток пытался получить доступ к элементу массива, который выходит за рамки, а базовое оборудование поддерживает проверку границ.
EXCEPTION_BREAKPOINT
Обнаружена точка останова.
EXCEPTION_DATATYPE_MISALIGNMENT
Поток пытался считывать или записывать данные, которые неправильно настроены на оборудовании, которое не обеспечивает выравнивание. Например, 16-разрядные значения должны быть выровнены по 2-байтовой границе; 32-разрядные значения на 4-байтовых границах и т. д.
EXCEPTION_FLT_DENORMAL_OPERAND
Одним из операндов в операции с плавающей запятой является денормальный. Денормальное значение — это значение, которое слишком мало, чтобы представить его как стандартное значение с плавающей запятой.
EXCEPTION_FLT_DIVIDE_BY_ZERO
Поток попытался разделить значение с плавающей запятой на делитель с плавающей запятой, равный нулю.
EXCEPTION_FLT_INEXACT_RESULT
Результат операции с плавающей запятой не может быть представлен точно в виде дробной дроби.
EXCEPTION_FLT_INVALID_OPERATION
Это исключение представляет все исключения с плавающей запятой, не включенные в этот список.
EXCEPTION_FLT_OVERFLOW
Экспонента операции с плавающей запятой больше, чем допустимая величина для соответствующего типа.
EXCEPTION_FLT_STACK_CHECK
Стек переполнен или недополучен в результате операции с плавающей запятой.
EXCEPTION_FLT_UNDERFLOW
Экспонента операции с плавающей запятой меньше величины, разрешенной соответствующим типом.
EXCEPTION_ILLEGAL_INSTRUCTION
Поток пытался выполнить недопустимую инструкцию.
EXCEPTION_IN_PAGE_ERROR
Поток попытался получить доступ к странице, которая не присутствовала, и системе не удалось загрузить страницу. Например, это исключение может возникнуть при потере сетевого подключения при запуске программы по сети.
EXCEPTION_INT_DIVIDE_BY_ZERO
Поток попытался разделить целочисленное значение на целочисленный делитель, равный нулю.
EXCEPTION_INT_OVERFLOW
Результат целочисленной операции вызвал выполнение наиболее значительного бита результата.
EXCEPTION_INVALID_DISPOSITION
Обработчик исключений вернул диспетчеру исключений недопустимую ликвидацию. Программисты, использующие высокоуровневый язык, такой как C, никогда не должны столкнуться с этим исключением.
EXCEPTION_NONCONTINUABLE_EXCEPTION
Поток пытался продолжить выполнение после возникновения неразрывного исключения.
EXCEPTION_PRIV_INSTRUCTION
Поток пытался выполнить инструкцию, операция которой не разрешена в текущем режиме компьютера.
EXCEPTION_SINGLE_STEP
Ловушка трассировки или другой механизм с одной инструкцией сигнализирует о выполнении одной инструкции.
EXCEPTION_STACK_OVERFLOW
Поток использовал свой стек.
 

При отладке консольных процессов, скорее всего, возникнет другой код исключения. Это не возникает из-за ошибки программирования. Код исключения DBG_CONTROL_C возникает, когда клавиши CTRL+C являются входными данными в консольный процесс, обрабатывающий сигналы CTRL+C, и выполняется отладка. Этот код исключения не предназначен для обработки приложениями. Он вызывается только в интересах отладчика и вызывается только при присоединении отладчика к консольному процессу.

ExceptionFlags

Этот элемент может быть либо нулевым, указывающим на непрерывное исключение, либо EXCEPTION_NONCONTINUABLE, указывающим на непреобразуемое исключение. Любая попытка продолжить выполнение после неразрывного исключения вызывает исключение EXCEPTION_NONCONTINUABLE_EXCEPTION.

ExceptionRecord

Указатель на связанную структуру MINIDUMP_EXCEPTION . Записи исключений можно объединить в цепочку, чтобы предоставить дополнительные сведения при возникновении вложенных исключений.

ExceptionAddress

Адрес, по которому возникло исключение.

NumberParameters

Количество параметров, связанных с исключением. Это количество определенных элементов в массиве ExceptionInformation .

__unusedAlignment

Зарезервировано для выравнивания элементов кроссплатформенной структуры. Не задавайте.

ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]

Массив дополнительных аргументов, описывающих исключение. Функция RaiseException может указать этот массив аргументов. Для большинства кодов исключений элементы массива не определены. Для следующего кода исключения элементы массива определяются следующим образом.

Код исключения Значение
EXCEPTION_ACCESS_VIOLATION
Первый элемент массива содержит флаг чтения и записи, указывающий тип операции, вызвавшей нарушение доступа. Если это значение равно нулю, поток попытался прочитать недоступные данные. Если это значение равно 1, поток попытался выполнить запись на недоступный адрес.

Второй элемент массива задает виртуальный адрес недоступных данных.

Требования

Требование Значение
Заголовок minidumpapiset.h (включая DbgHelp.h)
Распространяемые компоненты DbgHelp.dll 5.1 или более поздней версии

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

MINIDUMP_EXCEPTION_STREAM

RaiseException