Указатель на структуру MINIDUMP_EXCEPTION_INFORMATION, описывающую исключение клиента, которое вызвало создание минидампа. Если значение этого параметра равно NULL, информация об исключении не включается в файл мини-дамп.
Несмотря на то, что параметр помечен __in
, а не __in_opt
, вы действительно можете передать значение NULL здесь. Чтобы получить эту информацию в первую очередь от целевого процесса, ваш процесс все равно должен был бы отлаживать ее.
Как и когда известно, что процесс A получает мини-дамп процесса B? Если A действительно отлаживает B, когда WaitForDebugEvent возвращается с EXCEPTION_DEBUG_EVENT, информация доступна в информационной структуре.
Если A не отлаживает B, то, возможно, B сообщает A через какой-то механизм IPC: «Эй, я рушусь, сделайте мини-дамп». В этом случае либо B может принять сам дамп, либо передать информацию об исключении через тот же механизм IPC в A. Опять же, это проблематично по тем же причинам, что вызвать MiniDumpWriteDump в процессе сбоя проблематично, если что-то взрывается, вещь то, что могло взорваться, может быть тем, что вам нужно, чтобы рассказать об этом А.
Другой механизм, который может заставить A принять дамп для B, - это A, установленный как отладчик JIT, в этом случае A будет отлаживать B, и вы можете использовать API отладки для получения информации об исключении.
Если A просто периодически принимает мини-дамп B, исключений не обязательно будет, поэтому в этом случае вы можете просто пропустить NULL.
Обратите внимание, что если вы собираетесь сделать что-то вроде
WaitForSingleObject(handleToProcessB, INFINITE);
MiniDumpWriteDump(handleToProcessB, ...)
что это не будет работать. ОС хранит очень мало вещей, в основном код завершения процесса, а не виртуальное адресное пространство и стеки, которые вам нужны для мини-дамп.