blob: 5c9ab47596a7c274c8b39c1230e015b06ecf7797 [file] [log] [blame]
/**
* 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*/