| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // #include <Windows.h>
- // #include <dbghelp.h>
- // #include <stdio.h>
- // #include <tchar.h>
- // static void dump_file(const TCHAR *path, EXCEPTION_POINTERS *exception)
- // {
- // HANDLE file = CreateFile(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- // MINIDUMP_EXCEPTION_INFORMATION dump;
- // dump.ExceptionPointers = exception;
- // dump.ThreadId = GetCurrentThreadId();
- // dump.ClientPointers = TRUE;
- // MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), file, MiniDumpWithFullMemory, &dump, NULL, NULL);
- // CloseHandle(file);
- // }
- // #if _MSC_VER >= 1300 // for VC 7.0
- // // from ATL 7.0 sources
- // #ifndef _delayimp_h
- // extern "C" IMAGE_DOS_HEADER __ImageBase;
- // #endif
- // #endif
- // static HMODULE get_current_module()
- // {
- // #if _MSC_VER < 1300 // earlier than .NET compiler (VC 6.0)
- // // Here's a trick that will get you the handle of the module
- // // you're running in without any a-priori knowledge:
- // // http://www.dotnet247.com/247reference/msgs/13/65259.aspx
- // MEMORY_BASIC_INFORMATION mbi;
- // static int dummy;
- // VirtualQuery(&dummy, &mbi, sizeof(mbi));
- // return reinterpret_cast<HMODULE>(mbi.AllocationBase);
- // #else // VC 7.0
- // // from ATL 7.0 sources
- // return reinterpret_cast<HMODULE>(&__ImageBase);
- // #endif
- // }
- // static long exception_handler(EXCEPTION_POINTERS *ep)
- // {
- // char dmp_path[MAX_PATH] = { 0 };
- // char temp_path[MAX_PATH] = { 0 };
- // //c://users//appdata//local//temp//recorder.dmp
- // if (GetTempPath(MAX_PATH, temp_path)) {
- // sprintf_s(dmp_path, MAX_PATH, "%srecorder.dmp", temp_path);
- // printf("%s\r\n", dmp_path);
- // }
- // dump_file(dmp_path, ep);
- // return EXCEPTION_EXECUTE_HANDLER;
- // }
- // bool APIENTRY DllMain(HMODULE hModule,
- // DWORD ul_reason_for_call,
- // LPVOID lpReserved
- // )
- // {
- // switch (ul_reason_for_call)
- // {
- // case DLL_PROCESS_ATTACH:
- // SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)exception_handler);
- // break;
- // case DLL_THREAD_ATTACH:
- // break;
- // case DLL_THREAD_DETACH:
- // case DLL_PROCESS_DETACH:
- // break;
- // }
- // return TRUE;
- // }
|