//========= Copyright 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #include <windows.h> #include "tier0/minidump.h" #include "tools_minidump.h" static bool g_bToolsWriteFullMinidumps = false; static ToolsExceptionHandler g_pCustomExceptionHandler = false; // --------------------------------------------------------------------------------- // // Internal helpers. // --------------------------------------------------------------------------------- // static LONG __stdcall ToolsExceptionFilter( struct _EXCEPTION_POINTERS *ExceptionInfo ) { // Non VMPI workers write a minidump and show a crash dialog like normal. int iType = MiniDumpNormal; if ( g_bToolsWriteFullMinidumps ) iType = MiniDumpWithDataSegs | MiniDumpWithIndirectlyReferencedMemory; WriteMiniDumpUsingExceptionInfo( ExceptionInfo->ExceptionRecord->ExceptionCode, ExceptionInfo, (MINIDUMP_TYPE)iType ); return EXCEPTION_CONTINUE_SEARCH; } static LONG __stdcall ToolsExceptionFilter_Custom( struct _EXCEPTION_POINTERS *ExceptionInfo ) { // Run their custom handler. g_pCustomExceptionHandler( ExceptionInfo->ExceptionRecord->ExceptionCode ); return EXCEPTION_EXECUTE_HANDLER; // (never gets here anyway) } // --------------------------------------------------------------------------------- // // Interface functions. // --------------------------------------------------------------------------------- // void EnableFullMinidumps( bool bFull ) { g_bToolsWriteFullMinidumps = bFull; } void SetupDefaultToolsMinidumpHandler() { SetUnhandledExceptionFilter( ToolsExceptionFilter ); } void SetupToolsMinidumpHandler( ToolsExceptionHandler fn ) { g_pCustomExceptionHandler = fn; SetUnhandledExceptionFilter( ToolsExceptionFilter_Custom ); }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 5821 | Knut Wikstrom |
Added Valve Source code. This is NOT to be commited to other than new code from Valve. |