MiniDumpWriteDump 함수(minidumpapiset.h)

사용자 모드 미니덤프 정보를 지정된 파일에 씁니다.

구문

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

매개 변수

[in] hProcess

정보를 생성할 프로세스에 대한 핸들입니다.

이 핸들에는 프로세스에 대한 PROCESS_QUERY_INFORMATIONPROCESS_VM_READ 액세스 권한이 있어야 합니다. 핸들 정보를 수집하려면 PROCESS_DUP_HANDLE 액세스도 필요합니다. 자세한 내용은 프로세스 보안 및 액세스 권한을 참조하세요. 호출자는 프로세스의 스레드에 대한 THREAD_ALL_ACCESS 액세스를 가져올 수도 있어야 합니다. 자세한 내용은 스레드 보안 및 액세스 권한을 참조하세요.

[in] ProcessId

정보를 생성할 프로세스의 식별자입니다.

[in] hFile

정보를 쓸 파일에 대한 핸들입니다.

[in] DumpType

생성할 정보의 형식입니다. 이 매개 변수는 MINIDUMP_TYPE 열거형의 값 중 하나 이상일 수 있습니다.

[in] ExceptionParam

미니덤프가 생성되는 클라이언트 예외를 설명하는 MINIDUMP_EXCEPTION_INFORMATION 구조체에 대한 포인터입니다. 이 매개 변수의 값이 NULL이면 미니덤프 파일에 예외 정보가 포함되지 않습니다.

[in] UserStreamParam

MINIDUMP_USER_STREAM_INFORMATION 구조체에 대한 포인터입니다. 이 매개 변수의 값이 NULL이면 미니덤프 파일에 사용자 정의 정보가 포함되지 않습니다.

[in] CallbackParam

확장 미니덤프 정보를 수신하는 콜백 루틴을 지정하는 MINIDUMP_CALLBACK_INFORMATION 구조체에 대한 포인터입니다. 이 매개 변수의 값이 NULL이면 콜백이 수행되지 않습니다.

반환 값

함수가 성공하면 반환 값은 TRUE이고, 그렇지 않으면 반환 값이 FALSE입니다. 확장된 오류 정보를 검색하려면 GetLastError를 호출합니다. 마지막 오류는 HRESULT 값입니다.

작업이 취소된 경우 마지막 오류 코드는 입니다 HRESULT_FROM_WIN32(ERROR_CANCELLED).

설명

MiniDumpCallback 함수는 MiniDumpWriteDump에서 확장된 미니덤프 정보를 받습니다. 또한 콜백 함수가 기본 정보를 필터링할 수 있으므로 호출자가 미니덤프 파일에 기록된 정보의 세분성을 확인하는 방법을 제공합니다.

미니덤프WriteDump 는 덤프되는 대상 프로세스 내에서가 아니라 가능한 경우 별도의 프로세스에서 호출해야 합니다. 대상 프로세스가 아직 안정적이지 않은 경우 특히 그렇습니다. 예를 들어 방금 충돌한 경우입니다. 로더 교착 상태는 대상 프로세스 내에서 MiniDumpWriteDump 를 호출할 때 발생할 수 있는 여러 가지 부작용 중 하나입니다. 별도의 프로세스에서 MiniDumpWriteDump 를 호출할 수 없는 경우 MiniDumpWriteDump를 호출하는 전용 스레드를 사용하는 것이 좋습니다. 이렇게 하면 MiniDumpWriteDump를 호출하기 전에 스택이 아직 소진되지 않았는지 확인할 수 있습니다.

MiniDumpWriteDump 는 호출 스레드에 대한 유효한 스택 추적을 생성하지 않을 수 있습니다. 이 문제를 해결하려면 MiniDumpWriteDump 를 호출하기 전에 호출 스레드의 상태를 캡처하고 ExceptionParam 매개 변수로 사용해야 합니다. 이 작업을 수행하는 한 가지 방법은 __try/__except 블록 내에서 예외를 강제로 적용하고 GetExceptionInformation에서 제공하는 EXCEPTION_POINTERS 정보를 사용하는 것입니다. 또는 새 작업자 스레드에서 함수를 호출하고 덤프에서 이 작업자 스레드를 필터링할 수 있습니다.

이 함수와 같은 모든 DbgHelp 함수는 단일 스레드입니다. 따라서 둘 이상의 스레드에서 이 함수로 호출하면 예기치 않은 동작이나 메모리 손상이 발생할 수 있습니다. 이를 방지하려면 둘 이상의 스레드에서 이 함수로의 모든 동시 호출을 동기화해야 합니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 minidumpapiset.h(Dbghelp.h 포함)
라이브러리 Dbghelp.lib
DLL Dbghelp.dll; Dbgcore.dll
재배포 가능 파일 DbgHelp.dll 및 Dbgcore.dll

추가 정보

DbgHelp 함수

MINIDUMP_CALLBACK_INFORMATION

MINIDUMP_EXCEPTION_INFORMATION

MINIDUMP_USER_STREAM_INFORMATION

MiniDumpCallback

MiniDumpReadDumpStream