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,则小型转储文件中不包含任何异常信息。
[in] UserStreamParam
指向 MINIDUMP_USER_STREAM_INFORMATION 结构的指针。 如果此参数的值为 NULL,则小型转储文件中不包含用户定义的信息。
[in] CallbackParam
指向 MINIDUMP_CALLBACK_INFORMATION 结构的指针,该结构指定用于接收扩展的小型转储信息的回调例程。 如果此参数的值为 NULL,则不执行任何回调。
返回值
如果函数成功,则返回值为 TRUE;否则返回值为 FALSE。 若要检索扩展的错误信息,请调用 GetLastError。 请注意,最后一个错误将是 HRESULT 值。
如果取消操作,则最后一个错误代码为 HRESULT_FROM_WIN32(ERROR_CANCELLED)
。
注解
MiniDumpCallback 函数从 MiniDumpWriteDump 接收扩展的小型转储信息。 它还为调用方提供了一种确定写入小型转储文件的信息粒度的方法,因为回调函数可以筛选默认信息。
如果可能,应从单独的进程调用 MiniDumpWriteDump,而不是从要转储的目标进程中调用。 当目标进程已经不稳定时,尤其如此。 例如,如果它刚刚崩溃。 加载程序死锁是从目标进程内调用 MiniDumpWriteDump 的众多潜在副作用之一。 如果无法从单独的进程调用 MiniDumpWriteDump ,则建议有一个专用线程,其唯一目的是调用 MiniDumpWriteDump。 这有助于确保在调用 MiniDumpWriteDump 之前堆栈尚未耗尽。
MiniDumpWriteDump 可能不会为调用线程生成有效的堆栈跟踪。 若要解决此问题,必须在调用 MiniDumpWriteDump 之前捕获调用线程的状态,并将其用作 ExceptionParam 参数。 执行此操作的一种方法是在__try/__except块中强制异常,并使用 GetExceptionInformation 提供的EXCEPTION_POINTERS信息。 或者,可以从新的工作线程调用 函数,并从转储中筛选此工作线程。
所有 DbgHelp 函数(例如此函数)都是单线程的。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | minidumpapiset.h (包括 Dbghelp.h) |
Library | Dbghelp.lib |
DLL | Dbghelp.dll;Dbgcore.dll |
可再发行组件 | DbgHelp.dll 和 Dbgcore.dll |
另请参阅
MINIDUMP_EXCEPTION_INFORMATION