Estoy tratando de utilizar MiniDumpWriteDump() de la API para volcar un proceso B estrellado de otro proceso A. Estoy haciendo esto porque MSDN lo dijo:¿Hay alguna forma de conocer el ID del hilo en otro proceso que arroja una excepción?
MiniDumpWriteDump debería llamarse de un proceso separado en todo caso posible, en lugar de dentro del proceso de destino que se está volcando.
El MiniDumpWriteDump() se define como este:
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
);
Especialmente, la ExceptionParam es de tipo PMINIDUMP_EXCEPTION_INFORMATION, que se define como a continuación:
typedef struct _MINIDUMP_EXCEPTION_INFORMATION {
DWORD ThreadId;
PEXCEPTION_POINTERS ExceptionPointers;
BOOL ClientPointers;
} MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION;
Ahora estoy preguntando cómo preparar los siguientes 2 parámetros:
ThreadId El identificador del hilo que lanza la excepción.
ExceptionPointers Un puntero a una estructura EXCEPTION_POINTERS especificando una descripción por ordenador independiente de la excepción y el contexto procesador en el momento de la excepción.
¿Cómo podría obtener el identificador de subproceso y los punteros de excepción en el proceso B mientras se ejecuta en el proceso A?
Gracias.
Me enfrento a un problema similar. No puedo pasar PEXCEPTION_POINTERS ExceptionPointers a otro proceso. (Si uso el concepto FileMapping, termino obteniendo un puntero nulo). Sírvase explicar cómo se decidió en este caso. –