Je suis en train d'utiliser MiniDumpWriteDump() API pour vider un processus écrasé B d'un autre processus R. Je fais cela parce que MSDN a dit:Existe-t-il un moyen de connaître l'ID de thread dans un autre processus qui déclenche une exception?
MiniDumpWriteDump devrait être appelé d'un processus distinct si tout possible, plutôt qu'à partir du processus cible en cours de vidage.
Le MiniDumpWriteDump() est définie comme ceci:
BOOL WINAPI 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
);
Surtout, le ExceptionParam est de type PMINIDUMP_EXCEPTION_INFORMATION, qui est défini comme suit:
typedef struct _MINIDUMP_EXCEPTION_INFORMATION {
DWORD ThreadId;
PEXCEPTION_POINTERS ExceptionPointers;
BOOL ClientPointers;
} MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION;
Maintenant, je me demande comment préparer les 2 paramètres suivants:
ThreadId Identificateur du thread lançant l'exception.
ExceptionPointers Un pointeur vers une structure EXCEPTION_POINTERS spécifiant une description d'ordinateur indépendant de l'exception et le contexte du processeur au moment de l'exception.
Comment puis-je obtenir l'identificateur de thread défaillant et les pointeurs d'exception dans le processus B pendant le processus A?
Merci.
Je suis confronté à un problème similaire. Je ne suis pas en mesure de passer PEXCEPTION_POINTERS ExceptionPointers à un autre processus. (Si j'utilise le concept FileMapping je finis par obtenir un pointeur nul). Veuillez préciser comment vous vous êtes fixé sur celui-ci. –