Share via


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

DbgHelp-Funktionen

MINIDUMP_CALLBACK_INFORMATION

MINIDUMP_EXCEPTION_INFORMATION

MINIDUMP_USER_STREAM_INFORMATION

MiniDumpCallback

MiniDumpReadDumpStream