From 733f83a16540fa51ca122f2bc80067915618423b Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <[email protected]>
Date: Mon, 7 Aug 2023 01:26:12 +0530
Subject: [PATCH] headers: Add missing symbols in werapi.h

Required for crashpad project in chromium.

Signed-off-by: Biswapriyo Nath <[email protected]>
---
 mingw-w64-headers/include/werapi.h | 298 ++++++++++++++++++++++++++++-
 1 file changed, 296 insertions(+), 2 deletions(-)

diff --git a/mingw-w64-headers/include/werapi.h 
b/mingw-w64-headers/include/werapi.h
index 5c9ab47..baed994 100644
--- a/mingw-w64-headers/include/werapi.h
+++ b/mingw-w64-headers/include/werapi.h
@@ -11,12 +11,115 @@
 extern "C" {
 #endif
 
+typedef HANDLE HREPORT;
+
+#define WER_FAULT_REPORTING_FLAG_NOHEAP 1
+#define WER_FAULT_REPORTING_FLAG_QUEUE 2
+#define WER_FAULT_REPORTING_FLAG_DISABLE_THREAD_SUSPENSION 4
+#define WER_FAULT_REPORTING_FLAG_QUEUE_UPLOAD 8
+#define WER_FAULT_REPORTING_ALWAYS_SHOW_UI 16
+#define WER_FAULT_REPORTING_NO_UI 32
+#define WER_FAULT_REPORTING_FLAG_NO_HEAP_ON_QUEUE 64
+#define WER_FAULT_REPORTING_DISABLE_SNAPSHOT_CRASH 128
+#define WER_FAULT_REPORTING_DISABLE_SNAPSHOT_HANG 256
+#define WER_FAULT_REPORTING_CRITICAL 512
+#define WER_FAULT_REPORTING_DURABLE 1024
+#define WER_MAX_TOTAL_PARAM_LENGTH 1720
+#define WER_MAX_PREFERRED_MODULES 128
+#define WER_MAX_PREFERRED_MODULES_BUFFER 256
+
+#define WER_MAX_MEM_BLOCK_SIZE (64 * 1024)
+
+#define APPCRASH_EVENT L"APPCRASH"
+#define PACKAGED_APPCRASH_EVENT L"MoAppCrash"
+
+#define WER_P0 0
+#define WER_P1 1
+#define WER_P2 2
+#define WER_P3 3
+#define WER_P4 4
+#define WER_P5 5
+#define WER_P6 6
+#define WER_P7 7
+#define WER_P8 8
+#define WER_P9 9
+
+#define WER_E_INSUFFICIENT_BUFFER 
(HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER))
+#define WER_E_NOT_FOUND (HRESULT_FROM_WIN32(ERROR_NOT_FOUND))
+#define WER_E_LENGTH_EXCEEDED 
(HRESULT_FROM_WIN32(ERROR_PARAMETER_QUOTA_EXCEEDED))
+#define WER_E_INVALID_STATE (HRESULT_FROM_WIN32(ERROR_INVALID_STATE))
+#define WER_E_MISSING_DUMP (HRESULT_FROM_WIN32(ERROR_MISSING_SYSTEMFILE))
+#define WER_E_CABBING_FAILURE (HRESULT_FROM_WIN32(ERROR_GEN_FAILURE))
+
+#define WER_FILE_DELETE_WHEN_DONE 1
+#define WER_FILE_ANONYMOUS_DATA 2
+#define WER_FILE_COMPRESSED 4
+
+#define WER_SUBMIT_HONOR_RECOVERY 1
+#define WER_SUBMIT_HONOR_RESTART 2
+#define WER_SUBMIT_QUEUE 4
+#define WER_SUBMIT_SHOW_DEBUG 8
+#define WER_SUBMIT_ADD_REGISTERED_DATA 16
+#define WER_SUBMIT_OUTOFPROCESS 32
+#define WER_SUBMIT_NO_CLOSE_UI 64
+#define WER_SUBMIT_NO_QUEUE 128
+#define WER_SUBMIT_NO_ARCHIVE 256
+#define WER_SUBMIT_START_MINIMIZED 512
+#define WER_SUBMIT_OUTOFPROCESS_ASYNC 1024
+#define WER_SUBMIT_BYPASS_DATA_THROTTLING 2048
+#define WER_SUBMIT_ARCHIVE_PARAMETERS_ONLY 4096
+#define WER_SUBMIT_REPORT_MACHINE_ID 8192
+#define WER_SUBMIT_BYPASS_POWER_THROTTLING 16384
+#define WER_SUBMIT_BYPASS_NETWORK_COST_THROTTLING 32768
+#define WER_SUBMIT_DISCARD_IF_QUEUED WER_SUBMIT_NO_QUEUE
+
+#define WER_DUMP_MASK_START 1
+#define WER_DUMP_MASK_DUMPTYPE (WER_DUMP_MASK_START << 0)
+#define WER_DUMP_MASK_ONLY_THISTHREAD (WER_DUMP_MASK_START << 1)
+#define WER_DUMP_MASK_THREADFLAGS (WER_DUMP_MASK_START << 2)
+#define WER_DUMP_MASK_THREADFLAGS_EX (WER_DUMP_MASK_START << 3)
+#define WER_DUMP_MASK_OTHERTHREADFLAGS (WER_DUMP_MASK_START << 4)
+#define WER_DUMP_MASK_OTHERTHREADFLAGS_EX (WER_DUMP_MASK_START << 5)
+#define WER_DUMP_MASK_PREFERRED_MODULESFLAGS (WER_DUMP_MASK_START << 6)
+#define WER_DUMP_MASK_OTHER_MODULESFLAGS (WER_DUMP_MASK_START << 7)
+#define WER_DUMP_MASK_PREFERRED_MODULE_LIST (WER_DUMP_MASK_START << 8)
+
+#define WER_DUMP_NOHEAP_ONQUEUE 1
+#define WER_DUMP_AUXILIARY 2
+
+#define WER_MAX_REGISTERED_ENTRIES 512
+#define WER_MAX_REGISTERED_METADATA 8
+#define WER_MAX_REGISTERED_DUMPCOLLECTION 4
+
+#define WER_METADATA_KEY_MAX_LENGTH 64
+#define WER_METADATA_VALUE_MAX_LENGTH 128
+
+#define WER_MAX_SIGNATURE_NAME_LENGTH 128
+#define WER_MAX_EVENT_NAME_LENGTH 64
+#define WER_MAX_PARAM_LENGTH MAX_PATH
+#define WER_MAX_PARAM_COUNT 10
+#define WER_MAX_FRIENDLY_EVENT_NAME_LENGTH 128
+#define WER_MAX_APPLICATION_NAME_LENGTH 128
+#define WER_MAX_DESCRIPTION_LENGTH 512
+#define WER_MAX_BUCKET_ID_STRING_LENGTH MAX_PATH
+#define WER_MAX_LOCAL_DUMP_SUBPATH_LENGTH 64
+
+#define WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES 16
+
+#define WER_RUNTIME_EXCEPTION_EVENT_FUNCTION 
"OutOfProcessExceptionEventCallback"
+#define WER_RUNTIME_EXCEPTION_EVENT_SIGNATURE_FUNCTION 
"OutOfProcessExceptionEventSignatureCallback"
+#define WER_RUNTIME_EXCEPTION_DEBUGGER_LAUNCH 
"OutOfProcessExceptionEventDebuggerLaunchCallback"
+
 typedef enum _WER_FILE_TYPE {
   WerFileTypeMicrodump = 1,
   WerFileTypeMinidump,
   WerFileTypeHeapdump,
   WerFileTypeUserDocument,
   WerFileTypeOther,
+  WerFileTypeTriagedump,
+  WerFileTypeCustomDump,
+  WerFileTypeAuxiliaryDump,
+  WerFileTypeEtlTrace,
   WerFileTypeMax
 } WER_FILE_TYPE;
 
@@ -27,9 +130,11 @@ typedef enum _WER_REGISTER_FILE_TYPE {
 } WER_REGISTER_FILE_TYPE;
 
 typedef enum _WER_DUMP_TYPE {
-  WerDumpTypeMicroDump = 1,
+  WerDumpTypeNone = 0,
+  WerDumpTypeMicroDump,
   WerDumpTypeMiniDump,
   WerDumpTypeHeapDump,
+  WerDumpTypeTriageDump,
   WerDumpTypeMax
 } WER_DUMP_TYPE;
 
@@ -66,7 +171,15 @@ typedef enum _WER_SUBMIT_RESULT {
   WerDisabledQueue,
   WerReportAsync,
   WerCustomAction
-} WER_SUBMIT_RESULT;
+#if NTDDI_VERSION >= NTDDI_WIN8
+, WerThrottled = 10
+#endif
+#if NTDDI_VERSION >= NTDDI_WIN10
+, WerReportUploadedCab = 11
+, WerStorageLocationNotFound = 12
+#endif
+, WerSubmitResultMax
+} WER_SUBMIT_RESULT, *PWER_SUBMIT_RESULT;
 
 typedef enum _WER_REPORT_TYPE {
   WerReportNonCritical = 0,
@@ -91,6 +204,45 @@ typedef struct _WER_DUMP_CUSTOM_OPTIONS {
   WCHAR wzPreferredModuleList[WER_MAX_PREFERRED_MODULES_BUFFER];
 } WER_DUMP_CUSTOM_OPTIONS, *PWER_DUMP_CUSTOM_OPTIONS;
 
+typedef struct _WER_DUMP_CUSTOM_OPTIONS_V2 {
+  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];
+  DWORD dwPreferredModuleResetFlags;
+  DWORD dwOtherModuleResetFlags;
+} WER_DUMP_CUSTOM_OPTIONS_V2, *PWER_DUMP_CUSTOM_OPTIONS_V2;
+
+#if NTDDI_VERSION >= NTDDI_WINBLUE
+typedef struct _WER_DUMP_CUSTOM_OPTIONS_V3 {
+  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];
+  DWORD dwPreferredModuleResetFlags;
+  DWORD dwOtherModuleResetFlags;
+  PVOID pvDumpKey;
+  HANDLE hSnapshot;
+  DWORD dwThreadID;
+} WER_DUMP_CUSTOM_OPTIONS_V3, *PWER_DUMP_CUSTOM_OPTIONS_V3;
+
+typedef WER_DUMP_CUSTOM_OPTIONS_V3 const *PCWER_DUMP_CUSTOM_OPTIONS_V3;
+#endif
+
 typedef struct _WER_EXCEPTION_INFORMATION {
   PEXCEPTION_POINTERS pExceptionPointers;
   WINBOOL             bClientPointers;
@@ -107,6 +259,62 @@ typedef struct _WER_REPORT_INFORMATION {
   HWND   hwndParent;
 } WER_REPORT_INFORMATION, *PWER_REPORT_INFORMATION;
 
+#if NTDDI_VERSION >= NTDDI_WIN8
+typedef struct _WER_REPORT_INFORMATION_V3 {
+  DWORD dwSize;
+  HANDLE hProcess;
+  WCHAR wzConsentKey[64];
+  WCHAR wzFriendlyEventName[128];
+  WCHAR wzApplicationName[128];
+  WCHAR wzApplicationPath[MAX_PATH];
+  WCHAR wzDescription[512];
+  HWND hwndParent;
+  WCHAR wzNamespacePartner[64];
+  WCHAR wzNamespaceGroup[64];
+} WER_REPORT_INFORMATION_V3, *PWER_REPORT_INFORMATION_V3;
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WINBLUE
+typedef struct _WER_REPORT_INFORMATION_V4 {
+  DWORD dwSize;
+  HANDLE hProcess;
+  WCHAR wzConsentKey[64];
+  WCHAR wzFriendlyEventName[128];
+  WCHAR wzApplicationName[128];
+  WCHAR wzApplicationPath[MAX_PATH];
+  WCHAR wzDescription[512];
+  HWND hwndParent;
+  WCHAR wzNamespacePartner[64];
+  WCHAR wzNamespaceGroup[64];
+  BYTE rgbApplicationIdentity[16];
+  HANDLE hSnapshot;
+  HANDLE hDeleteFilesImpersonationToken;
+} WER_REPORT_INFORMATION_V4, *PWER_REPORT_INFORMATION_V4;
+
+typedef WER_REPORT_INFORMATION_V4 const *PCWER_REPORT_INFORMATION_V4;
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WIN10
+typedef struct _WER_REPORT_INFORMATION_V5 {
+  DWORD dwSize;
+  HANDLE hProcess;
+  WCHAR wzConsentKey[64];
+  WCHAR wzFriendlyEventName[128];
+  WCHAR wzApplicationName[128];
+  WCHAR wzApplicationPath[MAX_PATH];
+  WCHAR wzDescription[512];
+  HWND hwndParent;
+  WCHAR wzNamespacePartner[64];
+  WCHAR wzNamespaceGroup[64];
+  BYTE rgbApplicationIdentity[16];
+  HANDLE hSnapshot;
+  HANDLE hDeleteFilesImpersonationToken;
+  WER_SUBMIT_RESULT submitResultMax;
+} WER_REPORT_INFORMATION_V5, *PWER_REPORT_INFORMATION_V5;
+
+typedef WER_REPORT_INFORMATION_V5 const *PCWER_REPORT_INFORMATION_V5;
+#endif
+
 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);
@@ -123,6 +331,15 @@ HRESULT WINAPI WerReportSubmit(HREPORT 
hReportHandle,WER_CONSENT consent,DWORD d
 HRESULT WINAPI WerSetFlags(DWORD dwFlags);
 HRESULT WINAPI WerUnregisterFile(PCWSTR pwzFilePath);
 HRESULT WINAPI WerUnregisterMemoryBlock(PVOID pvAddress);
+HRESULT WINAPI WerRegisterExcludedMemoryBlock(const void* address, DWORD size);
+HRESULT WINAPI WerUnregisterExcludedMemoryBlock(const void* address);
+HRESULT WINAPI WerRegisterCustomMetadata(PCWSTR key, PCWSTR value);
+HRESULT WINAPI WerUnregisterCustomMetadata(PCWSTR key);
+HRESULT WINAPI WerRegisterAdditionalProcess(DWORD processId, DWORD 
captureExtraInfoForThreadId);
+HRESULT WINAPI WerUnregisterAdditionalProcess(DWORD processId);
+HRESULT WINAPI WerRegisterAppLocalDump(PCWSTR localAppDataRelativePath);
+HRESULT WINAPI WerUnregisterAppLocalDump(void);
+HRESULT WINAPI WerSetMaxProcessHoldMilliseconds(DWORD dwMilliseconds);
 
 #if (_WIN32_WINNT >= 0x0601)
 typedef struct _WER_RUNTIME_EXCEPTION_INFORMATION {
@@ -132,6 +349,8 @@ typedef struct _WER_RUNTIME_EXCEPTION_INFORMATION {
   EXCEPTION_RECORD exceptionRecord;
   CONTEXT          context;
   PCWSTR           pwszReportId;
+  WINBOOL          bIsFatal;
+  DWORD            dwReserved;
 } WER_RUNTIME_EXCEPTION_INFORMATION, *PWER_RUNTIME_EXCEPTION_INFORMATION;
 
 typedef HRESULT (WINAPI *PFN_WER_RUNTIME_EXCEPTION_EVENT)(
@@ -174,6 +393,81 @@ HRESULT WINAPI WerUnregisterRuntimeExceptionModule(
 
 #endif /*(_WIN32_WINNT >= 0x0601)*/
 
+typedef enum _REPORT_STORE_TYPES {
+  E_STORE_USER_ARCHIVE = 0,
+  E_STORE_USER_QUEUE,
+  E_STORE_MACHINE_ARCHIVE,
+  E_STORE_MACHINE_QUEUE,
+  E_STORE_INVALID
+} REPORT_STORE_TYPES;
+
+typedef PVOID HREPORTSTORE, *PHREPORTSTORE;
+
+typedef struct _WER_REPORT_PARAMETER {
+  WCHAR Name[WER_MAX_SIGNATURE_NAME_LENGTH + 1];
+  WCHAR Value[WER_MAX_PARAM_LENGTH];
+}WER_REPORT_PARAMETER, PWER_REPORT_PARAMETER;
+
+typedef struct _WER_REPORT_SIGNATURE {
+  WCHAR EventName[WER_MAX_EVENT_NAME_LENGTH + 1];
+  WER_REPORT_PARAMETER Parameters[WER_MAX_PARAM_COUNT];
+} WER_REPORT_SIGNATURE, *PWER_REPORT_SIGNATURE;
+
+typedef struct _WER_REPORT_METADATA_V1 {
+  WER_REPORT_SIGNATURE Signature;
+  GUID BucketId;
+  GUID ReportId;
+  FILETIME CreationTime;
+  ULONGLONG SizeInBytes;
+} WER_REPORT_METADATA_V1, *PWER_REPORT_METADATA_V1;
+
+typedef struct _WER_REPORT_METADATA_V2 {
+  WER_REPORT_SIGNATURE Signature;
+  GUID BucketId;
+  GUID ReportId;
+  FILETIME CreationTime;
+  ULONGLONG SizeInBytes;
+  WCHAR CabId[MAX_PATH];
+  DWORD ReportStatus;
+  GUID ReportIntegratorId;
+  DWORD NumberOfFiles;
+  DWORD SizeOfFileNames;
+  WCHAR *FileNames;
+} WER_REPORT_METADATA_V2, *PWER_REPORT_METADATA_V2;
+
+typedef struct _WER_REPORT_METADATA_V3 {
+  WER_REPORT_SIGNATURE Signature;
+  GUID BucketId;
+  GUID ReportId;
+  FILETIME CreationTime;
+  ULONGLONG SizeInBytes;
+  WCHAR CabId[MAX_PATH];
+  DWORD ReportStatus;
+  GUID ReportIntegratorId;
+  DWORD NumberOfFiles;
+  DWORD SizeOfFileNames;
+  WCHAR *FileNames;
+  WCHAR FriendlyEventName[WER_MAX_FRIENDLY_EVENT_NAME_LENGTH];
+  WCHAR ApplicationName[WER_MAX_APPLICATION_NAME_LENGTH];
+  WCHAR ApplicationPath[MAX_PATH];
+  WCHAR Description[WER_MAX_DESCRIPTION_LENGTH];
+  WCHAR BucketIdString[WER_MAX_BUCKET_ID_STRING_LENGTH];
+  ULONGLONG LegacyBucketId;
+} WER_REPORT_METADATA_V3, *PWER_REPORT_METADATA_V3;
+
+HRESULT WINAPI WerStoreOpen(REPORT_STORE_TYPES repStoreType, PHREPORTSTORE 
phReportStore);
+VOID WINAPI WerStoreClose(HREPORTSTORE hReportStore);
+HRESULT WINAPI WerStoreGetFirstReportKey(HREPORTSTORE hReportStore, PCWSTR 
*ppszReportKey);
+HRESULT WINAPI WerStoreGetNextReportKey(HREPORTSTORE hReportStore, PCWSTR 
*ppszReportKey);
+HRESULT WINAPI WerStoreQueryReportMetadataV1(HREPORTSTORE hReportStore, PCWSTR 
pszReportKey, PWER_REPORT_METADATA_V1 pReportMetadata);
+HRESULT WINAPI WerStoreQueryReportMetadataV2(HREPORTSTORE hReportStore, PCWSTR 
pszReportKey, PWER_REPORT_METADATA_V2 pReportMetadata);
+HRESULT WINAPI WerStoreQueryReportMetadataV3(HREPORTSTORE hReportStore, PCWSTR 
pszReportKey, PWER_REPORT_METADATA_V3 pReportMetadata);
+VOID WINAPI WerFreeString(PCWSTR pwszStr);
+HRESULT WINAPI WerStorePurge(void);
+HRESULT WINAPI WerStoreGetReportCount(HREPORTSTORE hReportStore, DWORD 
*pdwReportCount);
+HRESULT WINAPI WerStoreGetSizeOnDisk(HREPORTSTORE hReportStore, ULONGLONG 
*pqwSizeInBytes);
+HRESULT WINAPI WerStoreUploadReport(HREPORTSTORE hReportStore, PCWSTR 
pszReportKey, DWORD dwFlags, PWER_SUBMIT_RESULT pSubmitResult);
+
 #ifdef __cplusplus
 }
 #endif
-- 
2.41.0

_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to