summaryrefslogtreecommitdiff
path: root/src/vm/dwreport.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/dwreport.h')
-rw-r--r--src/vm/dwreport.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/vm/dwreport.h b/src/vm/dwreport.h
new file mode 100644
index 0000000000..44306689ea
--- /dev/null
+++ b/src/vm/dwreport.h
@@ -0,0 +1,105 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+//
+// FILE: dwreport.h
+//
+// This file contains declarations for functions used to report errors occuring
+// in a process running managed code.
+//
+
+//
+
+//
+// ============================================================================
+
+#ifndef __DWREPORT_H__
+#define __DWREPORT_H__
+
+// return values for DoFaultReport
+enum FaultReportResult
+{
+ FaultReportResultAbort,
+ FaultReportResultDebug,
+ FaultReportResultQuit
+};
+
+void* GetBucketParametersForManagedException(UINT_PTR ip, TypeOfReportedError tore, Thread * pThread, OBJECTREF * exception);
+void FreeBucketParametersForManagedException(void *pgmb);
+
+HRESULT GetBucketParametersForCurrentException(BucketParameters *pParams);
+
+//------------------------------------------------------------------------------
+// DoFaultReport
+//
+// Description
+//
+// Parameters
+// pExceptionInfo -- information about the exception that caused the error.
+// If the error is not the result of an exception, pass NULL for this
+// parameter
+// Returns
+// FaultReportResult -- enumeration indicating the
+// FaultReportResultAbort -- if Watson could not execute normally
+// FaultReportResultDebug -- if Watson executed normally, and the user
+// chose to debug the process
+// FaultReportResultQuit -- if Watson executed normally, and the user
+// chose to end the process (e.g. pressed "Send Error Report" or
+// "Don't Send").
+//
+//------------------------------------------------------------------------------
+FaultReportResult DoFaultReport( // Was Watson attempted, successful? Run debugger?
+ EXCEPTION_POINTERS *pExceptionInfo, // Information about the fault.
+ TypeOfReportedError tore); // What sort of error is reported.
+
+BOOL InitializeWatson(COINITIEE fFlags);
+BOOL InitializeWatsonVersionInfo(LPCSTR pVer);
+BOOL IsWatsonEnabled();
+BOOL RegisterOutOfProcessWatsonCallbacks();
+
+int DwGetAssemblyVersion( // Number of characters written.
+ __in_z LPCWSTR wszFilePath, // Path to the executable.
+ __inout_ecount(cchBuf) WCHAR *pBuf, // Put description here.
+ int cchBuf);
+
+HRESULT DwGetFileVersionInfo( // S_OK or error
+ __in_z LPCWSTR wszFilePath, // Path to the executable.
+ USHORT& major,
+ USHORT& minor,
+ USHORT& build,
+ USHORT& revision);
+
+BOOL ContainsUnicodeChars(__in_z LPCWSTR wsz);
+
+// Proxy parameters for Resetting Watson buckets
+struct ResetWatsonBucketsParams
+{
+ Thread * m_pThread;
+ EXCEPTION_RECORD * pExceptionRecord;
+};
+void ResetWatsonBucketsFavorWorker(void * pParam);
+
+extern LONG g_watsonAlreadyLaunched;
+
+#if !defined(FEATURE_UEF_CHAINMANAGER)
+extern HandleHolder g_hWatsonCompletionEvent;
+#endif // FEATURE_UEF_CHAINMANAGER
+
+//----------------------------------------------------------------------------
+// Passes data between DoFaultReport and DoFaultReportCallback
+//----------------------------------------------------------------------------
+typedef enum tagEFaultRepRetVal EFaultRepRetVal;
+struct FaultReportInfo
+{
+ BOOL /*in*/ m_fDoReportFault;
+ EXCEPTION_POINTERS /*in*/ *m_pExceptionInfo;
+ DWORD /*in*/ m_threadid;
+ FaultReportResult /*out*/ m_faultReportResult;
+ EFaultRepRetVal /*out*/ m_faultRepRetValResult;
+};
+
+VOID WINAPI DoFaultReportDoFavorCallback(LPVOID pFaultReportInfoAsVoid);
+
+ContractFailureKind GetContractFailureKind(OBJECTREF obj);
+
+#endif // __DWREPORT_H__