MiniDumpWriteDump-Funktion (minidumpapiset.h)
Schreibt Benutzermodus-Minidumpinformationen in die angegebene Datei.
Syntax
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
);
Parameter
[in] hProcess
Ein Handle für den Prozess, für den die Informationen generiert werden sollen.
Dieses Handle muss PROCESS_QUERY_INFORMATION und PROCESS_VM_READ Zugriff auf den Prozess haben. Wenn Handle-Informationen erfasst werden sollen, ist auch PROCESS_DUP_HANDLE Zugriff erforderlich. Weitere Informationen finden Sie unter Prozesssicherheit und Zugriffsrechte. Der Aufrufer muss auch in der Lage sein, THREAD_ALL_ACCESS Zugriff auf die Threads im Prozess zu erhalten. Weitere Informationen finden Sie unter Threadsicherheit und Zugriffsrechte.
[in] ProcessId
Der Bezeichner des Prozesses, für den die Informationen generiert werden sollen.
[in] hFile
Ein Handle für die Datei, in die die Informationen geschrieben werden sollen.
[in] DumpType
Der Typ der zu generierenden Informationen. Bei diesem Parameter kann es sich um einen oder mehrere Werte aus der MINIDUMP_TYPE-Enumeration handeln.
[in] ExceptionParam
Ein Zeiger auf eine MINIDUMP_EXCEPTION_INFORMATION Struktur, die die Client-Ausnahme beschreibt, die das Generieren des Minidumps verursacht hat. Wenn der Wert dieses Parameters NULL ist, sind in der minidump-Datei keine Ausnahmeinformationen enthalten.
[in] UserStreamParam
Ein Zeiger auf eine MINIDUMP_USER_STREAM_INFORMATION-Struktur . Wenn der Wert dieses Parameters NULL ist, sind keine benutzerdefinierten Informationen in der minidump-Datei enthalten.
[in] CallbackParam
Ein Zeiger auf eine MINIDUMP_CALLBACK_INFORMATION-Struktur , die eine Rückrufroutine angibt, die erweiterte Minidumpinformationen empfangen soll. Wenn der Wert dieses Parameters NULL ist, werden keine Rückrufe ausgeführt.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE. andernfalls ist der Rückgabewert FALSE. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen abzurufen. Beachten Sie, dass der letzte Fehler ein HRESULT-Wert ist.
Wenn der Vorgang abgebrochen wird, lautet HRESULT_FROM_WIN32(ERROR_CANCELLED)
der letzte Fehlercode .
Hinweise
Die MiniDumpCallback-Funktion empfängt erweiterte Minidump-Informationen von MiniDumpWriteDump. Es bietet auch eine Möglichkeit für den Aufrufer, die Granularität der in die Minidumpdatei geschriebenen Informationen zu bestimmen, da die Rückruffunktion die Standardinformationen filtern kann.
MiniDumpWriteDump sollte nach Möglichkeit von einem separaten Prozess aufgerufen werden und nicht innerhalb des Zielprozesses, der abgedumpt wird. Dies gilt insbesondere, wenn der Zielprozess bereits nicht stabil ist. Beispielsweise, wenn es gerade abgestürzt ist. Ein Ladevorgangs-Deadlock ist eine von vielen möglichen Nebenwirkungen des Aufrufens von MiniDumpWriteDump aus dem Zielprozess. Wenn das Aufrufen von MiniDumpWriteDump aus einem separaten Prozess nicht möglich ist, empfiehlt es sich, einen dedizierten Thread zu verwenden, dessen einziger Zweck darin besteht , MiniDumpWriteDump aufzurufen. Dadurch kann sichergestellt werden, dass der Stapel vor dem Aufruf von MiniDumpWriteDump nicht bereits erschöpft ist.
MiniDumpWriteDump erzeugt möglicherweise keine gültige Stapelablaufverfolgung für den aufrufenden Thread. Um dieses Problem zu umgehen, müssen Sie den Status des aufrufenden Threads erfassen, bevor Sie MiniDumpWriteDump aufrufen, und ihn als ExceptionParam-Parameter verwenden. Eine Möglichkeit besteht darin, eine Ausnahme innerhalb eines __try/__except blocks zu erzwingen und die von GetExceptionInformation bereitgestellten EXCEPTION_POINTERS Informationen zu verwenden. Alternativ können Sie die Funktion aus einem neuen Workerthread aufrufen und diesen Workerthread aus dem Dump filtern.
Alle DbgHelp-Funktionen, z. B. diese, sind single threaded. Daher führen an diese Funktion gerichtete Aufrufe mehrerer Threads wahrscheinlich zu unerwartetem Verhalten oder einer Beschädigung des Speichers. Um dies zu vermeiden, müssen Sie alle an diese Funktion gerichteten gleichzeitigen Aufrufe mehrerer Threads synchronisieren.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | minidumpapiset.h (einschließlich Dbghelp.h) |
Bibliothek | Dbghelp.lib |
DLL | Dbghelp.dll; Dbgcore.dll |
Verteilbare Komponente | DbgHelp.dll und Dbgcore.dll |
Weitere Informationen
MINIDUMP_EXCEPTION_INFORMATION