Condividi tramite


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

Funzioni DbgHelp

MINIDUMP_CALLBACK_INFORMATION

MINIDUMP_EXCEPTION_INFORMATION

MINIDUMP_USER_STREAM_INFORMATION

MiniDumpCallback

MiniDumpReadDumpStream