Partager via


Fonction MiniDumpWriteDump (minidumpapiset.h)

Écrit des informations minidump en mode utilisateur dans le fichier spécifié.

Syntaxe

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
);

Paramètres

[in] hProcess

Handle du processus pour lequel les informations doivent être générées.

Ce handle doit avoir un accès PROCESS_QUERY_INFORMATION et PROCESS_VM_READ au processus. Si les informations de gestion doivent être collectées , PROCESS_DUP_HANDLE accès est également requis. Pour plus d’informations, consultez Traiter les droits de sécurité et d’accès. L’appelant doit également être en mesure d’obtenir THREAD_ALL_ACCESS accès aux threads dans le processus. Pour plus d’informations, consultez Sécurité des threads et droits d’accès.

[in] ProcessId

Identificateur du processus pour lequel les informations doivent être générées.

[in] hFile

Handle du fichier dans lequel les informations doivent être écrites.

[in] DumpType

Type d’informations à générer. Ce paramètre peut être une ou plusieurs des valeurs de l’énumération MINIDUMP_TYPE .

[in] ExceptionParam

Pointeur vers une structure de MINIDUMP_EXCEPTION_INFORMATION décrivant l’exception du client qui a provoqué la génération du minidump. Si la valeur de ce paramètre est NULL, aucune information d’exception n’est incluse dans le fichier minidump.

[in] UserStreamParam

Pointeur vers une structure MINIDUMP_USER_STREAM_INFORMATION . Si la valeur de ce paramètre est NULL, aucune information définie par l’utilisateur n’est incluse dans le fichier minidump.

[in] CallbackParam

Pointeur vers une structure de MINIDUMP_CALLBACK_INFORMATION qui spécifie une routine de rappel qui doit recevoir des informations minidump étendues. Si la valeur de ce paramètre est NULL, aucun rappel n’est effectué.

Valeur retournée

Si la fonction réussit, la valeur de retour est TRUE ; sinon, la valeur renvoyée est FALSE. Pour récupérer des informations d’erreur étendues, appelez GetLastError. Notez que la dernière erreur sera une valeur HRESULT .

Si l’opération est annulée, le dernier code d’erreur est HRESULT_FROM_WIN32(ERROR_CANCELLED).

Remarques

La fonction MiniDumpCallback reçoit des informations minidump étendues de MiniDumpWriteDump. Il permet également à l’appelant de déterminer la granularité des informations écrites dans le fichier minidump, car la fonction de rappel peut filtrer les informations par défaut.

MiniDumpWriteDump doit être appelé à partir d’un processus distinct si possible, plutôt qu’à partir du processus cible en cours de vidage. Cela est particulièrement vrai lorsque le processus cible n’est déjà pas stable. Par exemple, s’il vient de se planter. Un blocage de chargeur est l’un des nombreux effets secondaires potentiels de l’appel de MiniDumpWriteDump à partir du processus cible. Si l’appel de MiniDumpWriteDump à partir d’un processus distinct n’est pas possible, il est conseillé d’avoir un thread dédié dont le seul but est d’appeler MiniDumpWriteDump. Cela permet de garantir que la pile n’est pas déjà épuisée avant l’appel à MiniDumpWriteDump.

MiniDumpWriteDump peut ne pas produire de trace de pile valide pour le thread appelant. Pour contourner ce problème, vous devez capturer l’état du thread appelant avant d’appeler MiniDumpWriteDump et l’utiliser comme paramètre ExceptionParam . Pour ce faire, vous pouvez forcer une exception à l’intérieur d’un bloc __try/__except et utiliser les informations EXCEPTION_POINTERS fournies par GetExceptionInformation. Vous pouvez également appeler la fonction à partir d’un nouveau thread de travail et filtrer ce thread de travail à partir du vidage.

Toutes les fonctions DbgHelp, telles que celle-ci, sont à thread unique. Par conséquent, les appels de plusieurs threads à cette fonction entraîneront probablement un comportement inattendu ou une altération de la mémoire. Pour éviter cela, vous devez synchroniser tous les appels simultanés de plusieurs threads vers cette fonction.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête minidumpapiset.h (inclure Dbghelp.h)
Bibliothèque Dbghelp.lib
DLL Dbghelp.dll ; Dbgcore.dll
Composant redistribuable DbgHelp.dll et Dbgcore.dll

Voir aussi

Fonctions DbgHelp

MINIDUMP_CALLBACK_INFORMATION

MINIDUMP_EXCEPTION_INFORMATION

MINIDUMP_USER_STREAM_INFORMATION

MiniDumpCallback

MiniDumpReadDumpStream