| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the mingw-w64 runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
| */ | |
| #ifndef _INC_WERAPI | |
| #define _INC_WERAPI | |
| #if (_WIN32_WINNT >= 0x0600) | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| typedef enum _WER_FILE_TYPE { | |
| WerFileTypeMicrodump = 1, | |
| WerFileTypeMinidump, | |
| WerFileTypeHeapdump, | |
| WerFileTypeUserDocument, | |
| WerFileTypeOther, | |
| WerFileTypeMax | |
| } WER_FILE_TYPE; | |
| typedef enum _WER_REGISTER_FILE_TYPE { | |
| WerRegFileTypeUserDocument = 1, | |
| WerRegFileTypeOther, | |
| WerRegFileTypeMax | |
| } WER_REGISTER_FILE_TYPE; | |
| typedef enum _WER_DUMP_TYPE { | |
| WerDumpTypeMicroDump = 1, | |
| WerDumpTypeMiniDump, | |
| WerDumpTypeHeapDump, | |
| WerDumpTypeMax | |
| } WER_DUMP_TYPE; | |
| typedef enum _WER_REPORT_UI { | |
| WerUIAdditionalDataDlgHeader = 1, | |
| WerUIIconFilePath, | |
| WerUIConsentDlgHeader, | |
| WerUIConsentDlgBody, | |
| WerUIOnlineSolutionCheckText, | |
| WerUIOfflineSolutionCheckText, | |
| WerUICloseText, | |
| WerUICloseDlgHeader, | |
| WerUICloseDlgBody, | |
| WerUICloseDlgButtonText, | |
| WerUICustomActionButtonText, | |
| WerUIMax | |
| } WER_REPORT_UI; | |
| typedef enum _WER_CONSENT { | |
| WerConsentNotAsked = 1, | |
| WerConsentApproved, | |
| WerConsentDenied, | |
| WerConsentAlwaysPrompt, | |
| WerConsentMax | |
| } WER_CONSENT; | |
| typedef enum _WER_SUBMIT_RESULT { | |
| WerReportQueued = 1, | |
| WerReportUploaded, | |
| WerReportDebug, | |
| WerReportFailed, | |
| WerDisabled, | |
| WerReportCancelled, | |
| WerDisabledQueue, | |
| WerReportAsync, | |
| WerCustomAction | |
| } WER_SUBMIT_RESULT; | |
| typedef enum _WER_REPORT_TYPE { | |
| WerReportNonCritical = 0, | |
| WerReportCritical, | |
| WerReportApplicationCrash, | |
| WerReportApplicationHang, | |
| WerReportKernel, | |
| WerReportInvalid | |
| } WER_REPORT_TYPE; | |
| typedef struct _WER_DUMP_CUSTOM_OPTIONS { | |
| DWORD dwSize; | |
| DWORD dwMask; | |
| DWORD dwDumpFlags; | |
| WINBOOL bOnlyThisThread; | |
| DWORD dwExceptionThreadFlags; | |
| DWORD dwOtherThreadFlags; | |
| DWORD dwExceptionThreadExFlags; | |
| DWORD dwOtherThreadExFlags; | |
| DWORD dwPreferredModuleFlags; | |
| DWORD dwOtherModuleFlags; | |
| WCHAR wzPreferredModuleList[WER_MAX_PREFERRED_MODULES_BUFFER]; | |
| } WER_DUMP_CUSTOM_OPTIONS, *PWER_DUMP_CUSTOM_OPTIONS; | |
| typedef struct _WER_EXCEPTION_INFORMATION { | |
| PEXCEPTION_POINTERS pExceptionPointers; | |
| WINBOOL bClientPointers; | |
| } WER_EXCEPTION_INFORMATION, *PWER_EXCEPTION_INFORMATION; | |
| typedef struct _WER_REPORT_INFORMATION { | |
| DWORD dwSize; | |
| HANDLE hProcess; | |
| WCHAR wzConsentKey[64]; | |
| WCHAR wzFriendlyEventName[128]; | |
| WCHAR wzApplicationName[128]; | |
| WCHAR wzApplicationPath[MAX_PATH]; | |
| WCHAR wzDescription[512]; | |
| HWND hwndParent; | |
| } WER_REPORT_INFORMATION, *PWER_REPORT_INFORMATION; | |
| HRESULT WINAPI WerAddExcludedApplication(PCWSTR pwzExeName,WINBOOL bAllUsers); | |
| HRESULT WINAPI WerGetFlags(HANDLE hProcess,PDWORD pdwFlags); | |
| HRESULT WINAPI WerRegisterFile(PCWSTR pwzFile,WER_REGISTER_FILE_TYPE regFileType,DWORD dwFlags); | |
| HRESULT WINAPI WerRegisterMemoryBlock(PVOID pvAddress,DWORD dwSize); | |
| HRESULT WINAPI WerRemoveExcludedApplication(PCWSTR pwzExeName,WINBOOL bAllUsers); | |
| HRESULT WINAPI WerReportAddDump(HREPORT hReportHandle,HANDLE hProcess,HANDLE hThread,WER_DUMP_TYPE dumpType,PWER_EXCEPTION_INFORMATION pExceptionParam,PWER_DUMP_CUSTOM_OPTIONS pDumpCustomOptions,DWORD dwFlags); | |
| HRESULT WINAPI WerReportAddFile(HREPORT hReportHandle,PCWSTR pwzPath,WER_FILE_TYPE repFileType,DWORD dwFileFlags); | |
| HRESULT WINAPI WerReportCloseHandle(HREPORT hReportHandle); | |
| HRESULT WINAPI WerReportCreate(PCWSTR pwzEventType,WER_REPORT_TYPE repType,PWER_REPORT_INFORMATION pReportInformation,HREPORT *phReportHandle); | |
| HRESULT WINAPI WerReportHang(HWND hwndHungWindow,PCWSTR wszHungApplicationName); | |
| HRESULT WINAPI WerReportSetParameter(HREPORT hReportHandle,DWORD dwparamID,PCWSTR pwzName,PCWSTR pwzValue); | |
| HRESULT WINAPI WerReportSetUIOption(HREPORT hReportHandle,WER_REPORT_UI repUITypeID,PCWSTR pwzValue); | |
| HRESULT WINAPI WerReportSubmit(HREPORT hReportHandle,WER_CONSENT consent,DWORD dwFlags,PWER_SUBMIT_RESULT pSubmitResult); | |
| HRESULT WINAPI WerSetFlags(DWORD dwFlags); | |
| HRESULT WINAPI WerUnregisterFile(PCWSTR pwzFilePath); | |
| HRESULT WINAPI WerUnregisterMemoryBlock(PVOID pvAddress); | |
| #if (_WIN32_WINNT >= 0x0601) | |
| typedef struct _WER_RUNTIME_EXCEPTION_INFORMATION { | |
| DWORD dwSize; | |
| HANDLE hProcess; | |
| HANDLE hThread; | |
| EXCEPTION_RECORD exceptionRecord; | |
| CONTEXT context; | |
| PCWSTR pwszReportId; | |
| } WER_RUNTIME_EXCEPTION_INFORMATION, *PWER_RUNTIME_EXCEPTION_INFORMATION; | |
| typedef HRESULT (WINAPI *PFN_WER_RUNTIME_EXCEPTION_EVENT)( | |
| PVOID pContext, | |
| const PWER_RUNTIME_EXCEPTION_INFORMATION pExceptionInformation, | |
| WINBOOL *pbOwnershipClaimed, | |
| PWSTR pwszEventName, | |
| PDWORD pchSize, | |
| PDWORD pdwSignatureCount | |
| ); | |
| typedef HRESULT (WINAPI *PFN_WER_RUNTIME_EXCEPTION_DEBUGGER_LAUNCH)( | |
| PVOID pContext, | |
| const PWER_RUNTIME_EXCEPTION_INFORMATION pExceptionInformation, | |
| PBOOL pbIsCustomDebugger, | |
| PWSTR pwszDebuggerLaunch, | |
| PDWORD pchDebuggerLaunch, | |
| PBOOL pbIsDebuggerAutolaunch | |
| ); | |
| typedef HRESULT (WINAPI *PFN_WER_RUNTIME_EXCEPTION_EVENT_SIGNATURE)( | |
| PVOID pContext, | |
| const PWER_RUNTIME_EXCEPTION_INFORMATION pExceptionInformation, | |
| DWORD dwIndex, | |
| PWSTR pwszName, | |
| PDWORD pchName, | |
| PWSTR pwszValue, | |
| PDWORD pchValue | |
| ); | |
| HRESULT WINAPI WerRegisterRuntimeExceptionModule( | |
| PCWSTR pwszOutOfProcessCallbackDll, | |
| PVOID pContext | |
| ); | |
| HRESULT WINAPI WerUnregisterRuntimeExceptionModule( | |
| PCWSTR pwszOutOfProcessCallbackDll, | |
| PVOID pContext | |
| ); | |
| #endif /*(_WIN32_WINNT >= 0x0601)*/ | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /*(_WIN32_WINNT >= 0x0600)*/ | |
| #endif /*_INC_WERAPI*/ |