Home | History | Annotate | Download | only in include
      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*/
    182