Funzione MiniDumpWriteDump (minidumpapiset.h)
Scrive le informazioni di minidump in modalità utente nel file specificato.
Sintassi
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
);
Parametri
[in] hProcess
Handle per il processo per il quale devono essere generate le informazioni.
Questo handle deve avere PROCESS_QUERY_INFORMATION e PROCESS_VM_READ l'accesso al processo. Se è necessario raccogliere informazioni sull'handle, è necessario anche PROCESS_DUP_HANDLE l'accesso. Per altre informazioni, vedere Sicurezza dei processi e diritti di accesso. Il chiamante deve anche essere in grado di ottenere THREAD_ALL_ACCESS l'accesso ai thread nel processo. Per altre informazioni, vedere Thread Security and Access Rights.For more information, see Thread Security and Access Rights.
[in] ProcessId
Identificatore del processo per il quale devono essere generate le informazioni.
[in] hFile
Handle per il file in cui devono essere scritte le informazioni.
[in] DumpType
Tipo di informazioni da generare. Questo parametro può essere uno o più dei valori dell'enumerazione MINIDUMP_TYPE .
[in] ExceptionParam
Puntatore a una struttura MINIDUMP_EXCEPTION_INFORMATION che descrive l'eccezione client che ha causato la generazione del minidump. Se il valore di questo parametro è NULL, nel file minidump non vengono incluse informazioni sulle eccezioni.
[in] UserStreamParam
Puntatore a una struttura MINIDUMP_USER_STREAM_INFORMATION . Se il valore di questo parametro è NULL, nel file minidump non vengono incluse informazioni definite dall'utente.
[in] CallbackParam
Puntatore a una struttura MINIDUMP_CALLBACK_INFORMATION che specifica una routine di callback che deve ricevere informazioni di minidump estese. Se il valore di questo parametro è NULL, non vengono eseguiti callback.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è TRUE; in caso contrario, il valore restituito è FALSE. Per recuperare informazioni sull'errore estese, chiamare GetLastError. Si noti che l'ultimo errore sarà un valore HRESULT .
Se l'operazione viene annullata, l'ultimo codice di errore è HRESULT_FROM_WIN32(ERROR_CANCELLED)
.
Commenti
La funzione MiniDumpCallback riceve informazioni minidump estese da MiniDumpWriteDump. Consente inoltre al chiamante di determinare la granularità delle informazioni scritte nel file minidump, in quanto la funzione di callback può filtrare le informazioni predefinite.
MiniDumpWriteDump deve essere chiamato da un processo separato, se possibile, anziché dall'interno del processo di destinazione di cui viene eseguito il dump. Ciò è particolarmente vero quando il processo di destinazione non è già stabile. Ad esempio, se si è appena verificato un arresto anomalo. Un deadlock del caricatore è uno dei molti potenziali effetti collaterali della chiamata di MiniDumpWriteDump dall'interno del processo di destinazione. Se non è possibile chiamare MiniDumpWriteDump da un processo separato, è consigliabile avere un thread dedicato il cui unico scopo è chiamare MiniDumpWriteDump. Ciò consente di garantire che lo stack non sia già esaurito prima della chiamata a MiniDumpWriteDump.
MiniDumpWriteDump potrebbe non produrre un'analisi dello stack valida per il thread chiamante. Per risolvere questo problema, è necessario acquisire lo stato del thread chiamante prima di chiamare MiniDumpWriteDump e usarlo come parametro ExceptionParam . Un modo per eseguire questa operazione consiste nel forzare un'eccezione all'interno di un blocco __try/__except e usare le informazioni EXCEPTION_POINTERS fornite da GetExceptionInformation. In alternativa, è possibile chiamare la funzione da un nuovo thread di lavoro e filtrare questo thread di lavoro dal dump.
Tutte le funzioni DbgHelp, ad esempio questa, sono a thread singolo. Di conseguenza, le chiamate da più thread a questa funzione genereranno un comportamento imprevisto o un danneggiamento della memoria. Per evitare questo problema, è necessario sincronizzare tutte le chiamate simultanee da più thread a questa funzione.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | minidumpapiset.h (include Dbghelp.h) |
Libreria | Dbghelp.lib |
DLL | Dbghelp.dll; Dbgcore.dll |
Componente ridistribuibile | DbgHelp.dll e Dbgcore.dll |
Vedi anche
MINIDUMP_EXCEPTION_INFORMATION