| /** |
| * 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*/ |