summaryrefslogtreecommitdiff
path: root/src/inc/mscoruef.idl
diff options
context:
space:
mode:
authorJiyoung Yun <jy910.yun@samsung.com>2016-11-23 10:09:09 (GMT)
committerJiyoung Yun <jy910.yun@samsung.com>2016-11-23 10:09:09 (GMT)
commit4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (patch)
tree98110734c91668dfdbb126fcc0e15ddbd93738ca /src/inc/mscoruef.idl
parentfa45f57ed55137c75ac870356a1b8f76c84b229c (diff)
downloadcoreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.zip
coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.gz
coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.bz2
Imported Upstream version 1.1.0upstream/1.1.0
Diffstat (limited to 'src/inc/mscoruef.idl')
-rw-r--r--src/inc/mscoruef.idl117
1 files changed, 117 insertions, 0 deletions
diff --git a/src/inc/mscoruef.idl b/src/inc/mscoruef.idl
new file mode 100644
index 0000000..4ed554f
--- /dev/null
+++ b/src/inc/mscoruef.idl
@@ -0,0 +1,117 @@
+// 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.
+//
+
+//
+/**************************************************************************************
+ ** **
+ ** Mscoruef.idl - interface definitions for internal UEF chain management. **
+ ** **
+ **************************************************************************************/
+
+//
+// Interface descriptions
+//
+import "unknwn.idl";
+
+cpp_quote("#ifdef FEATURE_UEF_CHAINMANAGER")
+
+// IID IUEFManager : uuid(F4D25DF3-E9B3-439c-8B2B-C814E36F9404)
+cpp_quote("EXTERN_GUID(IID_IUEFManager, 0xf4d25df3, 0xe9b3, 0x439c, 0x8b, 0x2b, 0xc8, 0x14, 0xe3, 0x6f, 0x94, 0x4);")
+
+// IID IWatsonSxSManager :uuid(A269593A-51E2-46bf-B914-8DCC5C39B5A5)
+cpp_quote("EXTERN_GUID(IID_IWatsonSxSManager, 0xa269593a, 0x51e2, 0x46bf, 0xb9, 0x14, 0x8d, 0xcc, 0x5c, 0x39, 0xb5, 0xa5);")
+
+cpp_quote("#ifdef __midl")
+
+#define EXCEPTION_MAXIMUM_PARAMETERS 15
+
+typedef struct _EXCEPTION_RECORD {
+ DWORD ExceptionCode;
+ DWORD ExceptionFlags;
+ struct _EXCEPTION_RECORD *ExceptionRecord;
+ PVOID ExceptionAddress;
+ DWORD NumberParameters;
+ ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+} EXCEPTION_RECORD, *PEXCEPTION_RECORD;
+
+typedef struct _EXCEPTION_POINTERS {
+ PEXCEPTION_RECORD ExceptionRecord;
+ PVOID ContextRecord; // not using PCONTEXT here to avoid pulling extra definitions into this file
+} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS, *LPEXCEPTION_POINTERS;
+
+typedef LONG (__stdcall *PTOP_LEVEL_EXCEPTION_FILTER)(
+ struct _EXCEPTION_POINTERS * pExceptionPointers);
+
+typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
+
+cpp_quote("#endif // __midl")
+
+typedef BOOL (__stdcall * IsExceptionFromManagedCodeFnPtr)(EXCEPTION_RECORD * pExceptionRecord);
+
+//*****************************************************************************
+// Interface for Watson SxS management to the VM.
+//*****************************************************************************
+[
+ uuid(A269593A-51E2-46bf-B914-8DCC5C39B5A5),
+ helpstring("CLR Watson SxS Management Interface"),
+ pointer_default(unique),
+ local
+]
+interface IWatsonSxSManager : IUnknown
+{
+ // Used to register an exception claiming callback
+ BOOL RegisterExceptionClaimingCallback(
+ [in] IsExceptionFromManagedCodeFnPtr pCallback);
+
+ // Used to unregister an exception claiming callback
+ BOOL UnregisterExceptionClaimingCallback(
+ [in] IsExceptionFromManagedCodeFnPtr pCallback);
+
+ // Used to determine if the exception pointed by pExceptionRecord was thrown by a registered runtime
+ BOOL IsExceptionClaimed(
+ [in] EXCEPTION_RECORD * pExceptionRecord);
+
+ // Used to check if Watson has been triggered
+ BOOL HasWatsonBeenTriggered(void);
+
+ // Used to bestow the permission to report Watson to only one of its callers
+ BOOL IsCurrentRuntimeAllowedToReportWatson(void);
+
+ // Used to wait for the Watson SxS completion event
+ BOOL WaitForWatsonSxSCompletionEvent(void);
+
+ // Used to signal Watson SxS completion event
+ BOOL SignalWatsonSxSCompletionEvent(void);
+};
+
+//*****************************************************************************
+// Interface for UEF chain management to the VM.
+//*****************************************************************************
+[
+ uuid(F4D25DF3-E9B3-439c-8B2B-C814E36F9404),
+ helpstring("CLR UEF Chain Management Interface"),
+ pointer_default(unique),
+ local
+]
+interface IUEFManager : IUnknown
+{
+ // Used to register the function to be invoked upon unhandled exception
+ // notification from the OS
+ BOOL AddUnhandledExceptionFilter(
+ [in] LPTOP_LEVEL_EXCEPTION_FILTER uefCallbackFunc,
+ [in] BOOL firstHandler);
+
+ // Used to unregister a previously registered UEF callback
+ BOOL RemoveUnhandledExceptionFilter(
+ [in] LPTOP_LEVEL_EXCEPTION_FILTER uefCallbackFunc);
+
+ // Used to explicitly invoke the registered UEF callbacks
+ LONG InvokeUEFCallbacks(LPEXCEPTION_POINTERS pExceptionInfo);
+
+ // Used to return the WatsonSxSManager singleton instance
+ IWatsonSxSManager * GetWastonSxSManagerInstance(void);
+};
+
+cpp_quote("#endif // FEATURE_UEF_CHAINMANAGER")