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 列挙の 1 つ以上の値を指定できます。
[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 を呼び出すことによる多くの潜在的な副作用の 1 つです。 別のプロセスから MiniDumpWriteDump を呼び出せない場合は、 MiniDumpWriteDump を呼び出すことのみを目的とする専用スレッドを用意することをお勧めします。 これは、 MiniDumpWriteDump の呼び出しの前にスタックがまだ使い果たされていないことを確認するのに役立ちます。
MiniDumpWriteDump は、呼び出し元スレッドの有効なスタック トレースを生成できない場合があります。 この問題を回避するには、 MiniDumpWriteDump を呼び出す前に呼び出し元スレッドの状態をキャプチャし、 ExceptionParam パラメーターとして使用する必要があります。 これを行う方法の 1 つは、__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