1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 #ifndef _ERRHANDLING_H_
6 #define _ERRHANDLING_H_
7 
8 #include <apiset.h>
9 #include <apisetcconv.h>
10 #include <minwindef.h>
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || defined(WINSTORECOMPAT)
17 typedef LONG (WINAPI *PTOP_LEVEL_EXCEPTION_FILTER) (struct _EXCEPTION_POINTERS *ExceptionInfo);
18 typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
19     WINBASEAPI UINT WINAPI SetErrorMode (UINT uMode);
20     WINBASEAPI LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter (LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter);
21     WINBASEAPI LONG WINAPI UnhandledExceptionFilter (struct _EXCEPTION_POINTERS *ExceptionInfo);
22 #endif
23 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
24     WINBASEAPI PVOID WINAPI AddVectoredExceptionHandler (ULONG First, PVECTORED_EXCEPTION_HANDLER Handler);
25   WINBASEAPI ULONG WINAPI RemoveVectoredExceptionHandler (PVOID Handle);
26   WINBASEAPI PVOID WINAPI AddVectoredContinueHandler (ULONG First, PVECTORED_EXCEPTION_HANDLER Handler);
27   WINBASEAPI ULONG WINAPI RemoveVectoredContinueHandler (PVOID Handle);
28 #if _WIN32_WINNT >= 0x0600
29   WINBASEAPI UINT WINAPI GetErrorMode (VOID);
30 #endif
31 
32 #if !defined (RC_INVOKED) && defined (WINBASE_DECLARE_RESTORE_LAST_ERROR)
33   WINBASEAPI VOID WINAPI RestoreLastError (DWORD dwErrCode);
34 
35   typedef VOID (WINAPI *PRESTORE_LAST_ERROR) (DWORD);
36 
37 #define RESTORE_LAST_ERROR_NAME_A "RestoreLastError"
38 #define RESTORE_LAST_ERROR_NAME_W L"RestoreLastError"
39 #define RESTORE_LAST_ERROR_NAME TEXT ("RestoreLastError")
40 #endif
41 
42 #endif
43 
44 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
45   WINBASEAPI VOID WINAPI RaiseException (DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, CONST ULONG_PTR *lpArguments);
46   WINBASEAPI DWORD WINAPI GetLastError (VOID);
47   WINBASEAPI VOID WINAPI SetLastError (DWORD dwErrCode);
48 #endif
49 
50 #ifdef __cplusplus
51 }
52 #endif
53 #endif
54