Функция 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 |
См. также раздел
MINIDUMP_EXCEPTION_INFORMATION