| 1 | /** | 
 
 
 
 
 | 2 | * This file has no copyright assigned and is placed in the Public Domain. | 
 
 
 
 
 | 3 | * This file is part of the mingw-w64 runtime package. | 
 
 
 
 
 | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
 
 
 
 
 | 5 | */ | 
 
 
 
 
 | 6 | #ifndef _INC_WERAPI | 
 
 
 
 
 | 7 | #define _INC_WERAPI | 
 
 
 
 
 | 8 | #if (_WIN32_WINNT >= 0x0600) | 
 
 
 
 
 | 9 |  | 
 
 
 
 
 | 10 | #ifdef __cplusplus | 
 
 
 
 
 | 11 | extern "C" { | 
 
 
 
 
 | 12 | #endif | 
 
 
 
 
 | 13 |  | 
 
 
 
 
 | 14 | typedef enum _WER_FILE_TYPE { | 
 
 
 
 
 | 15 | WerFileTypeMicrodump = 1, | 
 
 
 
 
 | 16 | WerFileTypeMinidump, | 
 
 
 
 
 | 17 | WerFileTypeHeapdump, | 
 
 
 
 
 | 18 | WerFileTypeUserDocument, | 
 
 
 
 
 | 19 | WerFileTypeOther, | 
 
 
 
 
 | 20 | WerFileTypeMax | 
 
 
 
 
 | 21 | } WER_FILE_TYPE; | 
 
 
 
 
 | 22 |  | 
 
 
 
 
 | 23 | typedef enum _WER_REGISTER_FILE_TYPE { | 
 
 
 
 
 | 24 | WerRegFileTypeUserDocument = 1, | 
 
 
 
 
 | 25 | WerRegFileTypeOther, | 
 
 
 
 
 | 26 | WerRegFileTypeMax | 
 
 
 
 
 | 27 | } WER_REGISTER_FILE_TYPE; | 
 
 
 
 
 | 28 |  | 
 
 
 
 
 | 29 | typedef enum _WER_DUMP_TYPE { | 
 
 
 
 
 | 30 | WerDumpTypeMicroDump = 1, | 
 
 
 
 
 | 31 | WerDumpTypeMiniDump, | 
 
 
 
 
 | 32 | WerDumpTypeHeapDump, | 
 
 
 
 
 | 33 | WerDumpTypeMax | 
 
 
 
 
 | 34 | } WER_DUMP_TYPE; | 
 
 
 
 
 | 35 |  | 
 
 
 
 
 | 36 | typedef enum _WER_REPORT_UI { | 
 
 
 
 
 | 37 | WerUIAdditionalDataDlgHeader = 1, | 
 
 
 
 
 | 38 | WerUIIconFilePath, | 
 
 
 
 
 | 39 | WerUIConsentDlgHeader, | 
 
 
 
 
 | 40 | WerUIConsentDlgBody, | 
 
 
 
 
 | 41 | WerUIOnlineSolutionCheckText, | 
 
 
 
 
 | 42 | WerUIOfflineSolutionCheckText, | 
 
 
 
 
 | 43 | WerUICloseText, | 
 
 
 
 
 | 44 | WerUICloseDlgHeader, | 
 
 
 
 
 | 45 | WerUICloseDlgBody, | 
 
 
 
 
 | 46 | WerUICloseDlgButtonText, | 
 
 
 
 
 | 47 | WerUICustomActionButtonText, | 
 
 
 
 
 | 48 | WerUIMax | 
 
 
 
 
 | 49 | } WER_REPORT_UI; | 
 
 
 
 
 | 50 |  | 
 
 
 
 
 | 51 | typedef enum _WER_CONSENT { | 
 
 
 
 
 | 52 | WerConsentNotAsked = 1, | 
 
 
 
 
 | 53 | WerConsentApproved, | 
 
 
 
 
 | 54 | WerConsentDenied, | 
 
 
 
 
 | 55 | WerConsentAlwaysPrompt, | 
 
 
 
 
 | 56 | WerConsentMax | 
 
 
 
 
 | 57 | } WER_CONSENT; | 
 
 
 
 
 | 58 |  | 
 
 
 
 
 | 59 | typedef enum _WER_SUBMIT_RESULT { | 
 
 
 
 
 | 60 | WerReportQueued = 1, | 
 
 
 
 
 | 61 | WerReportUploaded, | 
 
 
 
 
 | 62 | WerReportDebug, | 
 
 
 
 
 | 63 | WerReportFailed, | 
 
 
 
 
 | 64 | WerDisabled, | 
 
 
 
 
 | 65 | WerReportCancelled, | 
 
 
 
 
 | 66 | WerDisabledQueue, | 
 
 
 
 
 | 67 | WerReportAsync, | 
 
 
 
 
 | 68 | WerCustomAction | 
 
 
 
 
 | 69 | } WER_SUBMIT_RESULT; | 
 
 
 
 
 | 70 |  | 
 
 
 
 
 | 71 | typedef enum _WER_REPORT_TYPE { | 
 
 
 
 
 | 72 | WerReportNonCritical = 0, | 
 
 
 
 
 | 73 | WerReportCritical, | 
 
 
 
 
 | 74 | WerReportApplicationCrash, | 
 
 
 
 
 | 75 | WerReportApplicationHang, | 
 
 
 
 
 | 76 | WerReportKernel, | 
 
 
 
 
 | 77 | WerReportInvalid | 
 
 
 
 
 | 78 | } WER_REPORT_TYPE; | 
 
 
 
 
 | 79 |  | 
 
 
 
 
 | 80 | typedef struct _WER_DUMP_CUSTOM_OPTIONS { | 
 
 
 
 
 | 81 | DWORD dwSize; | 
 
 
 
 
 | 82 | DWORD dwMask; | 
 
 
 
 
 | 83 | DWORD dwDumpFlags; | 
 
 
 
 
 | 84 | WINBOOL bOnlyThisThread; | 
 
 
 
 
 | 85 | DWORD dwExceptionThreadFlags; | 
 
 
 
 
 | 86 | DWORD dwOtherThreadFlags; | 
 
 
 
 
 | 87 | DWORD dwExceptionThreadExFlags; | 
 
 
 
 
 | 88 | DWORD dwOtherThreadExFlags; | 
 
 
 
 
 | 89 | DWORD dwPreferredModuleFlags; | 
 
 
 
 
 | 90 | DWORD dwOtherModuleFlags; | 
 
 
 
 
 | 91 | WCHAR wzPreferredModuleList[WER_MAX_PREFERRED_MODULES_BUFFER]; | 
 
 
 
 
 | 92 | } WER_DUMP_CUSTOM_OPTIONS, *PWER_DUMP_CUSTOM_OPTIONS; | 
 
 
 
 
 | 93 |  | 
 
 
 
 
 | 94 | typedef struct _WER_EXCEPTION_INFORMATION { | 
 
 
 
 
 | 95 | PEXCEPTION_POINTERS pExceptionPointers; | 
 
 
 
 
 | 96 | WINBOOL             bClientPointers; | 
 
 
 
 
 | 97 | } WER_EXCEPTION_INFORMATION, *PWER_EXCEPTION_INFORMATION; | 
 
 
 
 
 | 98 |  | 
 
 
 
 
 | 99 | typedef struct _WER_REPORT_INFORMATION { | 
 
 
 
 
 | 100 | DWORD  dwSize; | 
 
 
 
 
 | 101 | HANDLE hProcess; | 
 
 
 
 
 | 102 | WCHAR  wzConsentKey[64]; | 
 
 
 
 
 | 103 | WCHAR  wzFriendlyEventName[128]; | 
 
 
 
 
 | 104 | WCHAR  wzApplicationName[128]; | 
 
 
 
 
 | 105 | WCHAR  wzApplicationPath[MAX_PATH]; | 
 
 
 
 
 | 106 | WCHAR  wzDescription[512]; | 
 
 
 
 
 | 107 | HWND   hwndParent; | 
 
 
 
 
 | 108 | } WER_REPORT_INFORMATION, *PWER_REPORT_INFORMATION; | 
 
 
 
 
 | 109 |  | 
 
 
 
 
 | 110 | HRESULT WINAPI WerAddExcludedApplication(PCWSTR pwzExeName,WINBOOL bAllUsers); | 
 
 
 
 
 | 111 | HRESULT WINAPI WerGetFlags(HANDLE hProcess,PDWORD pdwFlags); | 
 
 
 
 
 | 112 | HRESULT WINAPI WerRegisterFile(PCWSTR pwzFile,WER_REGISTER_FILE_TYPE regFileType,DWORD dwFlags); | 
 
 
 
 
 | 113 | HRESULT WINAPI WerRegisterMemoryBlock(PVOID pvAddress,DWORD dwSize); | 
 
 
 
 
 | 114 | HRESULT WINAPI WerRemoveExcludedApplication(PCWSTR pwzExeName,WINBOOL bAllUsers); | 
 
 
 
 
 | 115 | HRESULT WINAPI WerReportAddDump(HREPORT hReportHandle,HANDLE hProcess,HANDLE hThread,WER_DUMP_TYPE dumpType,PWER_EXCEPTION_INFORMATION pExceptionParam,PWER_DUMP_CUSTOM_OPTIONS pDumpCustomOptions,DWORD dwFlags); | 
 
 
 
 
 | 116 | HRESULT WINAPI WerReportAddFile(HREPORT hReportHandle,PCWSTR pwzPath,WER_FILE_TYPE repFileType,DWORD dwFileFlags); | 
 
 
 
 
 | 117 | HRESULT WINAPI WerReportCloseHandle(HREPORT hReportHandle); | 
 
 
 
 
 | 118 | HRESULT WINAPI WerReportCreate(PCWSTR pwzEventType,WER_REPORT_TYPE repType,PWER_REPORT_INFORMATION pReportInformation,HREPORT *phReportHandle); | 
 
 
 
 
 | 119 | HRESULT WINAPI WerReportHang(HWND hwndHungWindow,PCWSTR wszHungApplicationName); | 
 
 
 
 
 | 120 | HRESULT WINAPI WerReportSetParameter(HREPORT hReportHandle,DWORD dwparamID,PCWSTR pwzName,PCWSTR pwzValue); | 
 
 
 
 
 | 121 | HRESULT WINAPI WerReportSetUIOption(HREPORT hReportHandle,WER_REPORT_UI repUITypeID,PCWSTR pwzValue); | 
 
 
 
 
 | 122 | HRESULT WINAPI WerReportSubmit(HREPORT hReportHandle,WER_CONSENT consent,DWORD dwFlags,PWER_SUBMIT_RESULT pSubmitResult); | 
 
 
 
 
 | 123 | HRESULT WINAPI WerSetFlags(DWORD dwFlags); | 
 
 
 
 
 | 124 | HRESULT WINAPI WerUnregisterFile(PCWSTR pwzFilePath); | 
 
 
 
 
 | 125 | HRESULT WINAPI WerUnregisterMemoryBlock(PVOID pvAddress); | 
 
 
 
 
 | 126 |  | 
 
 
 
 
 | 127 | #if (_WIN32_WINNT >= 0x0601) | 
 
 
 
 
 | 128 | typedef struct _WER_RUNTIME_EXCEPTION_INFORMATION { | 
 
 
 
 
 | 129 | DWORD            dwSize; | 
 
 
 
 
 | 130 | HANDLE           hProcess; | 
 
 
 
 
 | 131 | HANDLE           hThread; | 
 
 
 
 
 | 132 | EXCEPTION_RECORD exceptionRecord; | 
 
 
 
 
 | 133 | CONTEXT          context; | 
 
 
 
 
 | 134 | PCWSTR           pwszReportId; | 
 
 
 
 
 | 135 | } WER_RUNTIME_EXCEPTION_INFORMATION, *PWER_RUNTIME_EXCEPTION_INFORMATION; | 
 
 
 
 
 | 136 |  | 
 
 
 
 
 | 137 | typedef HRESULT (WINAPI *PFN_WER_RUNTIME_EXCEPTION_EVENT)( | 
 
 
 
 
 | 138 | PVOID pContext, | 
 
 
 
 
 | 139 | const PWER_RUNTIME_EXCEPTION_INFORMATION pExceptionInformation, | 
 
 
 
 
 | 140 | WINBOOL *pbOwnershipClaimed, | 
 
 
 
 
 | 141 | PWSTR pwszEventName, | 
 
 
 
 
 | 142 | PDWORD pchSize, | 
 
 
 
 
 | 143 | PDWORD pdwSignatureCount | 
 
 
 
 
 | 144 | ); | 
 
 
 
 
 | 145 |  | 
 
 
 
 
 | 146 | typedef HRESULT (WINAPI *PFN_WER_RUNTIME_EXCEPTION_DEBUGGER_LAUNCH)( | 
 
 
 
 
 | 147 | PVOID pContext, | 
 
 
 
 
 | 148 | const PWER_RUNTIME_EXCEPTION_INFORMATION pExceptionInformation, | 
 
 
 
 
 | 149 | PBOOL pbIsCustomDebugger, | 
 
 
 
 
 | 150 | PWSTR pwszDebuggerLaunch, | 
 
 
 
 
 | 151 | PDWORD pchDebuggerLaunch, | 
 
 
 
 
 | 152 | PBOOL pbIsDebuggerAutolaunch | 
 
 
 
 
 | 153 | ); | 
 
 
 
 
 | 154 |  | 
 
 
 
 
 | 155 | typedef HRESULT (WINAPI *PFN_WER_RUNTIME_EXCEPTION_EVENT_SIGNATURE)( | 
 
 
 
 
 | 156 | PVOID pContext, | 
 
 
 
 
 | 157 | const PWER_RUNTIME_EXCEPTION_INFORMATION pExceptionInformation, | 
 
 
 
 
 | 158 | DWORD dwIndex, | 
 
 
 
 
 | 159 | PWSTR pwszName, | 
 
 
 
 
 | 160 | PDWORD pchName, | 
 
 
 
 
 | 161 | PWSTR pwszValue, | 
 
 
 
 
 | 162 | PDWORD pchValue | 
 
 
 
 
 | 163 | ); | 
 
 
 
 
 | 164 |  | 
 
 
 
 
 | 165 | HRESULT WINAPI WerRegisterRuntimeExceptionModule( | 
 
 
 
 
 | 166 | PCWSTR pwszOutOfProcessCallbackDll, | 
 
 
 
 
 | 167 | PVOID pContext | 
 
 
 
 
 | 168 | ); | 
 
 
 
 
 | 169 |  | 
 
 
 
 
 | 170 | HRESULT WINAPI WerUnregisterRuntimeExceptionModule( | 
 
 
 
 
 | 171 | PCWSTR pwszOutOfProcessCallbackDll, | 
 
 
 
 
 | 172 | PVOID pContext | 
 
 
 
 
 | 173 | ); | 
 
 
 
 
 | 174 |  | 
 
 
 
 
 | 175 | #endif /*(_WIN32_WINNT >= 0x0601)*/ | 
 
 
 
 
 | 176 |  | 
 
 
 
 
 | 177 | #ifdef __cplusplus | 
 
 
 
 
 | 178 | } | 
 
 
 
 
 | 179 | #endif | 
 
 
 
 
 | 180 | #endif /*(_WIN32_WINNT >= 0x0600)*/ | 
 
 
 
 
 | 181 | #endif /*_INC_WERAPI*/ |