All pastes #950681 Raw Edit

Stuff

public cpp v1 · immutable
·published 2008-03-20 19:32 UTC
rendered paste body
class CCrashHandler{	PTOP_LEVEL_EXCEPTION_FILTER		m_pPrevious;public:	CCrashHandler(PTOP_LEVEL_EXCEPTION_FILTER pHandler = GenerateDump)	{		m_pPrevious = ::SetUnhandledExceptionFilter(pHandler);	}	~CCrashHandler(void)	{		::SetUnhandledExceptionFilter(m_pPrevious);	}private:	static LONG WINAPI GenerateDump(EXCEPTION_POINTERS* pExceptionPointers)	{		BOOL bMiniDumpSuccessful;		TCHAR szFileName[MAX_PATH] = {0}; 		HANDLE hDumpFile;		SYSTEMTIME stLocalTime;		MINIDUMP_EXCEPTION_INFORMATION ExpParam;		GetLocalTime( &stLocalTime );		StringCchPrintf( szFileName, MAX_PATH, _T("%04d%02d%02d-%02d%02d%02d-%ld-%ld-b%d.dmp"), 			stLocalTime.wYear, stLocalTime.wMonth, stLocalTime.wDay, 			stLocalTime.wHour, stLocalTime.wMinute, stLocalTime.wSecond, 			GetCurrentProcessId(), GetCurrentThreadId(), BUILD_NO);		hDumpFile = CreateFile(szFileName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0);		ExpParam.ThreadId = GetCurrentThreadId();		ExpParam.ExceptionPointers = pExceptionPointers;		ExpParam.ClientPointers = TRUE;		bMiniDumpSuccessful = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpWithIndirectlyReferencedMemory, &ExpParam, NULL, NULL);		FlushFileBuffers(hDumpFile);		CloseHandle(hDumpFile);		return EXCEPTION_EXECUTE_HANDLER;	}};CCrashHandler oCrashHandler;