mirror of
https://github.com/OpenDriver2/REDRIVER2.git
synced 2024-11-24 19:32:50 +01:00
30 lines
1.1 KiB
C++
30 lines
1.1 KiB
C++
|
#ifdef _WINDOWS
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include <Dbghelp.h>
|
||
|
#include <tchar.h>
|
||
|
|
||
|
typedef BOOL(WINAPI *MINIDUMPWRITEDUMP)(HANDLE hProcess, DWORD dwPid, HANDLE hFile, MINIDUMP_TYPE DumpType, CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
|
||
|
|
||
|
void CreateMiniDump(struct _EXCEPTION_POINTERS* exceptionInfo)
|
||
|
{
|
||
|
HMODULE mhLib = LoadLibrary(_T("dbghelp.dll"));
|
||
|
MINIDUMPWRITEDUMP pDump = (MINIDUMPWRITEDUMP)::GetProcAddress(mhLib, "MiniDumpWriteDump");
|
||
|
HANDLE hFile = CreateFile(_T("CORE.DMP"), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||
|
|
||
|
_MINIDUMP_EXCEPTION_INFORMATION ExInfo;
|
||
|
ExInfo.ThreadId = GetCurrentThreadId();
|
||
|
ExInfo.ExceptionPointers = exceptionInfo;
|
||
|
ExInfo.ClientPointers = FALSE;
|
||
|
|
||
|
pDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL);
|
||
|
CloseHandle(hFile);
|
||
|
}
|
||
|
|
||
|
LONG WINAPI unhandled_handler(struct _EXCEPTION_POINTERS* exceptionInfo)
|
||
|
{
|
||
|
CreateMiniDump(exceptionInfo);
|
||
|
return EXCEPTION_CONTINUE_SEARCH;
|
||
|
}
|
||
|
|
||
|
#endif
|