blob: c4805c23352681cf37c91544cab441eb85b8ff88 [file] [log] [blame]
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-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
/* Guessed from http://msdn.microsoft.com/en-us/library/bb513623%28v=VS.85%29.aspx */
typedef enum _WER_REGISTER_FILE_TYPE {
WerFileTypeHeapdump,
WerFileTypeMicrodump,
WerFileTypeMinidump,
WerRegFileTypeOther,
WerRegFileTypeUserDocument
} WER_REGISTER_FILE_TYPE;
/* Guessed from http://msdn.microsoft.com/en-us/library/bb513622%28VS.85%29.aspx */
typedef enum _WER_DUMP_TYPE {
WerDumpTypeHeapDump,
WerDumpTypeMicroDump,
WerDumpTypeMiniDump,
} WER_DUMP_TYPE;
/* Guessed from http://msdn.microsoft.com/en-us/library/bb513627%28v=VS.85%29.aspx */
typedef enum _WER_REPORT_UI {
WerUIAdditionalDataDlgHeader,
WerUICloseDlgBody,
WerUICloseDlgButtonText,
WerUICloseDlgHeader,
WerUICloseText,
WerUIConsentDlgBody,
WerUIConsentDlgHeader,
WerUIIconFilePath,
WerUIOfflineSolutionCheckText,
WerUIOnlineSolutionCheckText
} WER_REPORT_UI;
/* Guessed from http://msdn.microsoft.com/en-us/library/bb513628%28v=VS.85%29.aspx */
typedef enum _WER_CONSENT {
WerConsentApproved,
WerConsentDenied,
WerConsentNotAsked
} WER_CONSENT;
/* Guessed from http://msdn.microsoft.com/en-us/library/bb513628%28v=VS.85%29.aspx */
typedef enum _WER_SUBMIT_RESULT {
WerDisabled,
WerDisabledQueue,
WerReportAsync,
WerReportCancelled,
WerReportDebug,
WerReportFailed,
WerReportQueued,
WerReportUploaded
} WER_SUBMIT_RESULT;
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
);
#ifdef __cplusplus
}
#endif
#endif /*(_WIN32_WINNT >= 0x0600)*/
#endif /*_INC_WERAPI*/