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_INFORMATIONPROCESS_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

另请参阅

DbgHelp 函数

MINIDUMP_CALLBACK_INFORMATION

MINIDUMP_EXCEPTION_INFORMATION

MINIDUMP_USER_STREAM_INFORMATION

MiniDumpCallback

MiniDumpReadDumpStream