summaryrefslogtreecommitdiff
path: root/external/vpc/public/tier0/minidump.h
diff options
context:
space:
mode:
Diffstat (limited to 'external/vpc/public/tier0/minidump.h')
-rw-r--r--external/vpc/public/tier0/minidump.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/external/vpc/public/tier0/minidump.h b/external/vpc/public/tier0/minidump.h
new file mode 100644
index 0000000..8f4b7b0
--- /dev/null
+++ b/external/vpc/public/tier0/minidump.h
@@ -0,0 +1,82 @@
+//========= Copyright � 1996-2005, Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef MINIDUMP_H
+#define MINIDUMP_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "tier0/platform.h"
+
+// writes out a minidump of the current stack trace with a unique filename
+PLATFORM_INTERFACE void WriteMiniDump();
+
+typedef void (*FnWMain)( int , tchar *[] );
+
+#ifdef IS_WINDOWS_PC
+
+// calls the passed in function pointer and catches any exceptions/crashes thrown by it, and writes a minidump
+// use from wmain() to protect the whole program
+
+PLATFORM_INTERFACE void CatchAndWriteMiniDump( FnWMain pfn, int argc, tchar *argv[] );
+
+// The ExceptionInfo_t struct is a typeless data struct
+// which is OS-dependent and should never be used by external code.
+// Just pass it back into MinidumpSetUnhandledExceptionFunction
+struct ExceptionInfo_t;
+
+
+// Replaces the current function pointer with the one passed in.
+// Returns the previously-set function.
+// The function is called internally by WriteMiniDump() and CatchAndWriteMiniDump()
+// The default is the built-in function that uses DbgHlp.dll's MiniDumpWriteDump function
+typedef void (*FnMiniDump)( unsigned int uStructuredExceptionCode, ExceptionInfo_t * pExceptionInfo );
+PLATFORM_INTERFACE FnMiniDump SetMiniDumpFunction( FnMiniDump pfn );
+
+// Use this to write a minidump explicitly.
+// Some of the tools choose to catch the minidump themselves instead of using CatchAndWriteMinidump
+// so they can show their own dialog.
+//
+// ptchMinidumpFileNameBuffer if not-NULL should be a writable tchar buffer of length at
+// least _MAX_PATH and on return will contain the name of the minidump file written.
+// If ptchMinidumpFileNameBuffer is NULL the name of the minidump file written will not
+// be available after the function returns.
+//
+
+
+// NOTE: Matches windows.h
+enum MinidumpType_t
+{
+ MINIDUMP_Normal = 0x00000000,
+ MINIDUMP_WithDataSegs = 0x00000001,
+ MINIDUMP_WithFullMemory = 0x00000002,
+ MINIDUMP_WithHandleData = 0x00000004,
+ MINIDUMP_FilterMemory = 0x00000008,
+ MINIDUMP_ScanMemory = 0x00000010,
+ MINIDUMP_WithUnloadedModules = 0x00000020,
+ MINIDUMP_WithIndirectlyReferencedMemory = 0x00000040,
+ MINIDUMP_FilterModulePaths = 0x00000080,
+ MINIDUMP_WithProcessThreadData = 0x00000100,
+ MINIDUMP_WithPrivateReadWriteMemory = 0x00000200,
+ MINIDUMP_WithoutOptionalData = 0x00000400,
+ MINIDUMP_WithFullMemoryInfo = 0x00000800,
+ MINIDUMP_WithThreadInfo = 0x00001000,
+ MINIDUMP_WithCodeSegs = 0x00002000
+};
+
+PLATFORM_INTERFACE bool WriteMiniDumpUsingExceptionInfo(
+ unsigned int uStructuredExceptionCode,
+ ExceptionInfo_t *pExceptionInfo,
+ uint32 nMinidumpTypeFlags, // OR-ed together MinidumpType_t flags
+ tchar *ptchMinidumpFileNameBuffer = NULL
+ );
+
+PLATFORM_INTERFACE void MinidumpSetUnhandledExceptionFunction( FnMiniDump pfn );
+
+#endif
+
+#endif // MINIDUMP_H