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) |
程式庫 | Dbghelp.lib |
Dll | Dbghelp.dll;Dbgcore.dll |
可轉散發套件 | DbgHelp.dll 和 Dbgcore.dll |
另請參閱
MINIDUMP_EXCEPTION_INFORMATION