Функция MiniDumpWriteDump (minidumpapiset.h)

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

Синтаксис

BOOL MiniDumpWriteDump(
  [in] HANDLE                            hProcess,
  [in] DWORD                             ProcessId,
  [in] HANDLE                            hFile,
  [in] MINIDUMP_TYPE                     DumpType,
  [in] PMINIDUMP_EXCEPTION_INFORMATION   ExceptionParam,
  [in] PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
  [in] PMINIDUMP_CALLBACK_INFORMATION    CallbackParam
);

Параметры

[in] hProcess

Дескриптор процесса, для которого должны быть созданы сведения.

Этот дескриптор должен иметь PROCESS_QUERY_INFORMATION и PROCESS_VM_READ доступ к процессу. Если требуется собрать сведения о дескрипторов, то также требуется PROCESS_DUP_HANDLE доступ. Дополнительные сведения см. в разделе Управление правами на доступ и безопасность процесса. Вызывающий объект также должен иметь возможность получить THREAD_ALL_ACCESS доступ к потокам в процессе. Дополнительные сведения см. в разделе Безопасность потоков и права доступа.

[in] ProcessId

Идентификатор процесса, для которого должны быть созданы сведения.

[in] hFile

Дескриптор файла, в который должны быть записаны сведения.

[in] DumpType

Тип создаваемой информации. Этот параметр может быть одним или несколькими значениями из перечисления MINIDUMP_TYPE .

[in] ExceptionParam

Указатель на структуру MINIDUMP_EXCEPTION_INFORMATION , описывающую исключение клиента, которое привело к созданию минидампа. Если этот параметр имеет значение NULL, сведения об исключении не включаются в файл minidump.

[in] UserStreamParam

Указатель на структуру MINIDUMP_USER_STREAM_INFORMATION . Если этот параметр имеет значение NULL, в файл minidump не включаются пользовательские сведения.

[in] CallbackParam

Указатель на структуру MINIDUMP_CALLBACK_INFORMATION , задающую подпрограмму обратного вызова, которая получает расширенные сведения о минидампе. Если значение этого параметра равно NULL, обратные вызовы не выполняются.

Возвращаемое значение

Если функция выполнена успешно, возвращается значение TRUE; В противном случае возвращается значение FALSE. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError. Обратите внимание, что последней ошибкой будет значение HRESULT .

Если операция отменена, последний код ошибки — HRESULT_FROM_WIN32(ERROR_CANCELLED).

Комментарии

Функция MiniDumpCallback получает расширенные сведения о minidump от MiniDumpWriteDump. Он также позволяет вызывающему объекту определить степень детализации сведений, записываемых в файл minidump, так как функция обратного вызова может фильтровать сведения по умолчанию.

Метод MiniDumpWriteDump должен вызываться из отдельного процесса, если это возможно, а не из целевого процесса, на который создается дамп. Это особенно верно, если целевой процесс уже не является стабильным. Например, если он только что разбился. Взаимоблокировка загрузчика является одним из многих потенциальных побочных эффектов вызова MiniDumpWriteDump из целевого процесса. Если вызов MiniDumpWriteDump из отдельного процесса невозможен, рекомендуется использовать выделенный поток, единственной целью которого является вызов MiniDumpWriteDumpDump. Это поможет убедиться, что стек еще не исчерпан до вызова MiniDumpWriteDump.

MiniDumpWriteDump может не создавать допустимую трассировку стека для вызывающего потока. Чтобы обойти эту проблему, необходимо записать состояние вызывающего потока перед вызовом MiniDumpWriteDump и использовать его в качестве параметра ExceptionParam . Один из способов сделать это — принудительно создать исключение внутри блока __try/__except и использовать EXCEPTION_POINTERS сведения, предоставляемые GetExceptionInformation. Кроме того, можно вызвать функцию из нового рабочего потока и отфильтровать этот рабочий поток из дампа.

Все функции DbgHelp, такие как эта, являются однопоточными. Таким образом, вызовы из нескольких потоков к этой функции, скорее всего, приведут к непредвиденному поведению или повреждению памяти. Чтобы избежать этого, необходимо синхронизировать все параллельные вызовы из нескольких потоков в эту функцию.

Требования

Требование Значение
Целевая платформа Windows
Header minidumpapiset.h (включая Dbghelp.h)
Библиотека Dbghelp.lib
DLL Dbghelp.dll; Dbgcore.dll
Распространяемые компоненты DbgHelp.dll и Dbgcore.dll

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

Функции DbgHelp

MINIDUMP_CALLBACK_INFORMATION

MINIDUMP_EXCEPTION_INFORMATION

MINIDUMP_USER_STREAM_INFORMATION

MiniDumpCallback

MiniDumpReadDumpStream