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 #ifdef __cplusplus 128 } 129 #endif 130 #endif /*(_WIN32_WINNT >= 0x0600)*/ 131 #endif /*_INC_WERAPI*/ 132