werapi.h (16146B) - Raw
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 HANDLE HREPORT; 15 16 #define WER_FAULT_REPORTING_FLAG_NOHEAP 1 17 #define WER_FAULT_REPORTING_FLAG_QUEUE 2 18 #define WER_FAULT_REPORTING_FLAG_DISABLE_THREAD_SUSPENSION 4 19 #define WER_FAULT_REPORTING_FLAG_QUEUE_UPLOAD 8 20 #define WER_FAULT_REPORTING_ALWAYS_SHOW_UI 16 21 #define WER_FAULT_REPORTING_NO_UI 32 22 #define WER_FAULT_REPORTING_FLAG_NO_HEAP_ON_QUEUE 64 23 #define WER_FAULT_REPORTING_DISABLE_SNAPSHOT_CRASH 128 24 #define WER_FAULT_REPORTING_DISABLE_SNAPSHOT_HANG 256 25 #define WER_FAULT_REPORTING_CRITICAL 512 26 #define WER_FAULT_REPORTING_DURABLE 1024 27 #define WER_MAX_TOTAL_PARAM_LENGTH 1720 28 #define WER_MAX_PREFERRED_MODULES 128 29 #define WER_MAX_PREFERRED_MODULES_BUFFER 256 30 31 #define WER_MAX_MEM_BLOCK_SIZE (64 * 1024) 32 33 #define APPCRASH_EVENT L"APPCRASH" 34 #define PACKAGED_APPCRASH_EVENT L"MoAppCrash" 35 36 #define WER_P0 0 37 #define WER_P1 1 38 #define WER_P2 2 39 #define WER_P3 3 40 #define WER_P4 4 41 #define WER_P5 5 42 #define WER_P6 6 43 #define WER_P7 7 44 #define WER_P8 8 45 #define WER_P9 9 46 47 #define WER_E_INSUFFICIENT_BUFFER (HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)) 48 #define WER_E_NOT_FOUND (HRESULT_FROM_WIN32(ERROR_NOT_FOUND)) 49 #define WER_E_LENGTH_EXCEEDED (HRESULT_FROM_WIN32(ERROR_PARAMETER_QUOTA_EXCEEDED)) 50 #define WER_E_INVALID_STATE (HRESULT_FROM_WIN32(ERROR_INVALID_STATE)) 51 #define WER_E_MISSING_DUMP (HRESULT_FROM_WIN32(ERROR_MISSING_SYSTEMFILE)) 52 #define WER_E_CABBING_FAILURE (HRESULT_FROM_WIN32(ERROR_GEN_FAILURE)) 53 54 #define WER_FILE_DELETE_WHEN_DONE 1 55 #define WER_FILE_ANONYMOUS_DATA 2 56 #define WER_FILE_COMPRESSED 4 57 58 #define WER_SUBMIT_HONOR_RECOVERY 1 59 #define WER_SUBMIT_HONOR_RESTART 2 60 #define WER_SUBMIT_QUEUE 4 61 #define WER_SUBMIT_SHOW_DEBUG 8 62 #define WER_SUBMIT_ADD_REGISTERED_DATA 16 63 #define WER_SUBMIT_OUTOFPROCESS 32 64 #define WER_SUBMIT_NO_CLOSE_UI 64 65 #define WER_SUBMIT_NO_QUEUE 128 66 #define WER_SUBMIT_NO_ARCHIVE 256 67 #define WER_SUBMIT_START_MINIMIZED 512 68 #define WER_SUBMIT_OUTOFPROCESS_ASYNC 1024 69 #define WER_SUBMIT_BYPASS_DATA_THROTTLING 2048 70 #define WER_SUBMIT_ARCHIVE_PARAMETERS_ONLY 4096 71 #define WER_SUBMIT_REPORT_MACHINE_ID 8192 72 #define WER_SUBMIT_BYPASS_POWER_THROTTLING 16384 73 #define WER_SUBMIT_BYPASS_NETWORK_COST_THROTTLING 32768 74 #define WER_SUBMIT_DISCARD_IF_QUEUED WER_SUBMIT_NO_QUEUE 75 76 #define WER_DUMP_MASK_START 1 77 #define WER_DUMP_MASK_DUMPTYPE (WER_DUMP_MASK_START << 0) 78 #define WER_DUMP_MASK_ONLY_THISTHREAD (WER_DUMP_MASK_START << 1) 79 #define WER_DUMP_MASK_THREADFLAGS (WER_DUMP_MASK_START << 2) 80 #define WER_DUMP_MASK_THREADFLAGS_EX (WER_DUMP_MASK_START << 3) 81 #define WER_DUMP_MASK_OTHERTHREADFLAGS (WER_DUMP_MASK_START << 4) 82 #define WER_DUMP_MASK_OTHERTHREADFLAGS_EX (WER_DUMP_MASK_START << 5) 83 #define WER_DUMP_MASK_PREFERRED_MODULESFLAGS (WER_DUMP_MASK_START << 6) 84 #define WER_DUMP_MASK_OTHER_MODULESFLAGS (WER_DUMP_MASK_START << 7) 85 #define WER_DUMP_MASK_PREFERRED_MODULE_LIST (WER_DUMP_MASK_START << 8) 86 87 #define WER_DUMP_NOHEAP_ONQUEUE 1 88 #define WER_DUMP_AUXILIARY 2 89 90 #define WER_MAX_REGISTERED_ENTRIES 512 91 #define WER_MAX_REGISTERED_METADATA 8 92 #define WER_MAX_REGISTERED_DUMPCOLLECTION 4 93 94 #define WER_METADATA_KEY_MAX_LENGTH 64 95 #define WER_METADATA_VALUE_MAX_LENGTH 128 96 97 #define WER_MAX_SIGNATURE_NAME_LENGTH 128 98 #define WER_MAX_EVENT_NAME_LENGTH 64 99 #define WER_MAX_PARAM_LENGTH MAX_PATH 100 #define WER_MAX_PARAM_COUNT 10 101 #define WER_MAX_FRIENDLY_EVENT_NAME_LENGTH 128 102 #define WER_MAX_APPLICATION_NAME_LENGTH 128 103 #define WER_MAX_DESCRIPTION_LENGTH 512 104 #define WER_MAX_BUCKET_ID_STRING_LENGTH MAX_PATH 105 #define WER_MAX_LOCAL_DUMP_SUBPATH_LENGTH 64 106 107 #define WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES 16 108 109 #define WER_RUNTIME_EXCEPTION_EVENT_FUNCTION "OutOfProcessExceptionEventCallback" 110 #define WER_RUNTIME_EXCEPTION_EVENT_SIGNATURE_FUNCTION "OutOfProcessExceptionEventSignatureCallback" 111 #define WER_RUNTIME_EXCEPTION_DEBUGGER_LAUNCH "OutOfProcessExceptionEventDebuggerLaunchCallback" 112 113 typedef enum _WER_FILE_TYPE { 114 WerFileTypeMicrodump = 1, 115 WerFileTypeMinidump, 116 WerFileTypeHeapdump, 117 WerFileTypeUserDocument, 118 WerFileTypeOther, 119 WerFileTypeTriagedump, 120 WerFileTypeCustomDump, 121 WerFileTypeAuxiliaryDump, 122 WerFileTypeEtlTrace, 123 WerFileTypeMax 124 } WER_FILE_TYPE; 125 126 typedef enum _WER_REGISTER_FILE_TYPE { 127 WerRegFileTypeUserDocument = 1, 128 WerRegFileTypeOther, 129 WerRegFileTypeMax 130 } WER_REGISTER_FILE_TYPE; 131 132 typedef enum _WER_DUMP_TYPE { 133 WerDumpTypeNone = 0, 134 WerDumpTypeMicroDump, 135 WerDumpTypeMiniDump, 136 WerDumpTypeHeapDump, 137 WerDumpTypeTriageDump, 138 WerDumpTypeMax 139 } WER_DUMP_TYPE; 140 141 typedef enum _WER_REPORT_UI { 142 WerUIAdditionalDataDlgHeader = 1, 143 WerUIIconFilePath, 144 WerUIConsentDlgHeader, 145 WerUIConsentDlgBody, 146 WerUIOnlineSolutionCheckText, 147 WerUIOfflineSolutionCheckText, 148 WerUICloseText, 149 WerUICloseDlgHeader, 150 WerUICloseDlgBody, 151 WerUICloseDlgButtonText, 152 WerUICustomActionButtonText, 153 WerUIMax 154 } WER_REPORT_UI; 155 156 typedef enum _WER_CONSENT { 157 WerConsentNotAsked = 1, 158 WerConsentApproved, 159 WerConsentDenied, 160 WerConsentAlwaysPrompt, 161 WerConsentMax 162 } WER_CONSENT; 163 164 typedef enum _WER_SUBMIT_RESULT { 165 WerReportQueued = 1, 166 WerReportUploaded, 167 WerReportDebug, 168 WerReportFailed, 169 WerDisabled, 170 WerReportCancelled, 171 WerDisabledQueue, 172 WerReportAsync, 173 WerCustomAction 174 #if NTDDI_VERSION >= NTDDI_WIN8 175 , WerThrottled = 10 176 #endif 177 #if NTDDI_VERSION >= NTDDI_WIN10 178 , WerReportUploadedCab = 11 179 , WerStorageLocationNotFound = 12 180 #endif 181 , WerSubmitResultMax 182 } WER_SUBMIT_RESULT, *PWER_SUBMIT_RESULT; 183 184 typedef enum _WER_REPORT_TYPE { 185 WerReportNonCritical = 0, 186 WerReportCritical, 187 WerReportApplicationCrash, 188 WerReportApplicationHang, 189 WerReportKernel, 190 WerReportInvalid 191 } WER_REPORT_TYPE; 192 193 typedef struct _WER_DUMP_CUSTOM_OPTIONS { 194 DWORD dwSize; 195 DWORD dwMask; 196 DWORD dwDumpFlags; 197 WINBOOL bOnlyThisThread; 198 DWORD dwExceptionThreadFlags; 199 DWORD dwOtherThreadFlags; 200 DWORD dwExceptionThreadExFlags; 201 DWORD dwOtherThreadExFlags; 202 DWORD dwPreferredModuleFlags; 203 DWORD dwOtherModuleFlags; 204 WCHAR wzPreferredModuleList[WER_MAX_PREFERRED_MODULES_BUFFER]; 205 } WER_DUMP_CUSTOM_OPTIONS, *PWER_DUMP_CUSTOM_OPTIONS; 206 207 typedef struct _WER_DUMP_CUSTOM_OPTIONS_V2 { 208 DWORD dwSize; 209 DWORD dwMask; 210 DWORD dwDumpFlags; 211 WINBOOL bOnlyThisThread; 212 DWORD dwExceptionThreadFlags; 213 DWORD dwOtherThreadFlags; 214 DWORD dwExceptionThreadExFlags; 215 DWORD dwOtherThreadExFlags; 216 DWORD dwPreferredModuleFlags; 217 DWORD dwOtherModuleFlags; 218 WCHAR wzPreferredModuleList[WER_MAX_PREFERRED_MODULES_BUFFER]; 219 DWORD dwPreferredModuleResetFlags; 220 DWORD dwOtherModuleResetFlags; 221 } WER_DUMP_CUSTOM_OPTIONS_V2, *PWER_DUMP_CUSTOM_OPTIONS_V2; 222 223 #if NTDDI_VERSION >= NTDDI_WINBLUE 224 typedef struct _WER_DUMP_CUSTOM_OPTIONS_V3 { 225 DWORD dwSize; 226 DWORD dwMask; 227 DWORD dwDumpFlags; 228 WINBOOL bOnlyThisThread; 229 DWORD dwExceptionThreadFlags; 230 DWORD dwOtherThreadFlags; 231 DWORD dwExceptionThreadExFlags; 232 DWORD dwOtherThreadExFlags; 233 DWORD dwPreferredModuleFlags; 234 DWORD dwOtherModuleFlags; 235 WCHAR wzPreferredModuleList[WER_MAX_PREFERRED_MODULES_BUFFER]; 236 DWORD dwPreferredModuleResetFlags; 237 DWORD dwOtherModuleResetFlags; 238 PVOID pvDumpKey; 239 HANDLE hSnapshot; 240 DWORD dwThreadID; 241 } WER_DUMP_CUSTOM_OPTIONS_V3, *PWER_DUMP_CUSTOM_OPTIONS_V3; 242 243 typedef WER_DUMP_CUSTOM_OPTIONS_V3 const *PCWER_DUMP_CUSTOM_OPTIONS_V3; 244 #endif 245 246 typedef struct _WER_EXCEPTION_INFORMATION { 247 PEXCEPTION_POINTERS pExceptionPointers; 248 WINBOOL bClientPointers; 249 } WER_EXCEPTION_INFORMATION, *PWER_EXCEPTION_INFORMATION; 250 251 typedef struct _WER_REPORT_INFORMATION { 252 DWORD dwSize; 253 HANDLE hProcess; 254 WCHAR wzConsentKey[64]; 255 WCHAR wzFriendlyEventName[128]; 256 WCHAR wzApplicationName[128]; 257 WCHAR wzApplicationPath[MAX_PATH]; 258 WCHAR wzDescription[512]; 259 HWND hwndParent; 260 } WER_REPORT_INFORMATION, *PWER_REPORT_INFORMATION; 261 262 #if NTDDI_VERSION >= NTDDI_WIN8 263 typedef struct _WER_REPORT_INFORMATION_V3 { 264 DWORD dwSize; 265 HANDLE hProcess; 266 WCHAR wzConsentKey[64]; 267 WCHAR wzFriendlyEventName[128]; 268 WCHAR wzApplicationName[128]; 269 WCHAR wzApplicationPath[MAX_PATH]; 270 WCHAR wzDescription[512]; 271 HWND hwndParent; 272 WCHAR wzNamespacePartner[64]; 273 WCHAR wzNamespaceGroup[64]; 274 } WER_REPORT_INFORMATION_V3, *PWER_REPORT_INFORMATION_V3; 275 #endif 276 277 #if NTDDI_VERSION >= NTDDI_WINBLUE 278 typedef struct _WER_REPORT_INFORMATION_V4 { 279 DWORD dwSize; 280 HANDLE hProcess; 281 WCHAR wzConsentKey[64]; 282 WCHAR wzFriendlyEventName[128]; 283 WCHAR wzApplicationName[128]; 284 WCHAR wzApplicationPath[MAX_PATH]; 285 WCHAR wzDescription[512]; 286 HWND hwndParent; 287 WCHAR wzNamespacePartner[64]; 288 WCHAR wzNamespaceGroup[64]; 289 BYTE rgbApplicationIdentity[16]; 290 HANDLE hSnapshot; 291 HANDLE hDeleteFilesImpersonationToken; 292 } WER_REPORT_INFORMATION_V4, *PWER_REPORT_INFORMATION_V4; 293 294 typedef WER_REPORT_INFORMATION_V4 const *PCWER_REPORT_INFORMATION_V4; 295 #endif 296 297 #if NTDDI_VERSION >= NTDDI_WIN10 298 typedef struct _WER_REPORT_INFORMATION_V5 { 299 DWORD dwSize; 300 HANDLE hProcess; 301 WCHAR wzConsentKey[64]; 302 WCHAR wzFriendlyEventName[128]; 303 WCHAR wzApplicationName[128]; 304 WCHAR wzApplicationPath[MAX_PATH]; 305 WCHAR wzDescription[512]; 306 HWND hwndParent; 307 WCHAR wzNamespacePartner[64]; 308 WCHAR wzNamespaceGroup[64]; 309 BYTE rgbApplicationIdentity[16]; 310 HANDLE hSnapshot; 311 HANDLE hDeleteFilesImpersonationToken; 312 WER_SUBMIT_RESULT submitResultMax; 313 } WER_REPORT_INFORMATION_V5, *PWER_REPORT_INFORMATION_V5; 314 315 typedef WER_REPORT_INFORMATION_V5 const *PCWER_REPORT_INFORMATION_V5; 316 #endif 317 318 HRESULT WINAPI WerAddExcludedApplication(PCWSTR pwzExeName,WINBOOL bAllUsers); 319 HRESULT WINAPI WerGetFlags(HANDLE hProcess,PDWORD pdwFlags); 320 HRESULT WINAPI WerRegisterFile(PCWSTR pwzFile,WER_REGISTER_FILE_TYPE regFileType,DWORD dwFlags); 321 HRESULT WINAPI WerRegisterMemoryBlock(PVOID pvAddress,DWORD dwSize); 322 HRESULT WINAPI WerRemoveExcludedApplication(PCWSTR pwzExeName,WINBOOL bAllUsers); 323 HRESULT WINAPI WerReportAddDump(HREPORT hReportHandle,HANDLE hProcess,HANDLE hThread,WER_DUMP_TYPE dumpType,PWER_EXCEPTION_INFORMATION pExceptionParam,PWER_DUMP_CUSTOM_OPTIONS pDumpCustomOptions,DWORD dwFlags); 324 HRESULT WINAPI WerReportAddFile(HREPORT hReportHandle,PCWSTR pwzPath,WER_FILE_TYPE repFileType,DWORD dwFileFlags); 325 HRESULT WINAPI WerReportCloseHandle(HREPORT hReportHandle); 326 HRESULT WINAPI WerReportCreate(PCWSTR pwzEventType,WER_REPORT_TYPE repType,PWER_REPORT_INFORMATION pReportInformation,HREPORT *phReportHandle); 327 HRESULT WINAPI WerReportHang(HWND hwndHungWindow,PCWSTR wszHungApplicationName); 328 HRESULT WINAPI WerReportSetParameter(HREPORT hReportHandle,DWORD dwparamID,PCWSTR pwzName,PCWSTR pwzValue); 329 HRESULT WINAPI WerReportSetUIOption(HREPORT hReportHandle,WER_REPORT_UI repUITypeID,PCWSTR pwzValue); 330 HRESULT WINAPI WerReportSubmit(HREPORT hReportHandle,WER_CONSENT consent,DWORD dwFlags,PWER_SUBMIT_RESULT pSubmitResult); 331 HRESULT WINAPI WerSetFlags(DWORD dwFlags); 332 HRESULT WINAPI WerUnregisterFile(PCWSTR pwzFilePath); 333 HRESULT WINAPI WerUnregisterMemoryBlock(PVOID pvAddress); 334 HRESULT WINAPI WerRegisterExcludedMemoryBlock(const void* address, DWORD size); 335 HRESULT WINAPI WerUnregisterExcludedMemoryBlock(const void* address); 336 HRESULT WINAPI WerRegisterCustomMetadata(PCWSTR key, PCWSTR value); 337 HRESULT WINAPI WerUnregisterCustomMetadata(PCWSTR key); 338 HRESULT WINAPI WerRegisterAdditionalProcess(DWORD processId, DWORD captureExtraInfoForThreadId); 339 HRESULT WINAPI WerUnregisterAdditionalProcess(DWORD processId); 340 HRESULT WINAPI WerRegisterAppLocalDump(PCWSTR localAppDataRelativePath); 341 HRESULT WINAPI WerUnregisterAppLocalDump(void); 342 HRESULT WINAPI WerSetMaxProcessHoldMilliseconds(DWORD dwMilliseconds); 343 344 #if (_WIN32_WINNT >= 0x0601) 345 typedef struct _WER_RUNTIME_EXCEPTION_INFORMATION { 346 DWORD dwSize; 347 HANDLE hProcess; 348 HANDLE hThread; 349 EXCEPTION_RECORD exceptionRecord; 350 CONTEXT context; 351 PCWSTR pwszReportId; 352 WINBOOL bIsFatal; 353 DWORD dwReserved; 354 } WER_RUNTIME_EXCEPTION_INFORMATION, *PWER_RUNTIME_EXCEPTION_INFORMATION; 355 356 typedef HRESULT (WINAPI *PFN_WER_RUNTIME_EXCEPTION_EVENT)( 357 PVOID pContext, 358 const PWER_RUNTIME_EXCEPTION_INFORMATION pExceptionInformation, 359 WINBOOL *pbOwnershipClaimed, 360 PWSTR pwszEventName, 361 PDWORD pchSize, 362 PDWORD pdwSignatureCount 363 ); 364 365 typedef HRESULT (WINAPI *PFN_WER_RUNTIME_EXCEPTION_DEBUGGER_LAUNCH)( 366 PVOID pContext, 367 const PWER_RUNTIME_EXCEPTION_INFORMATION pExceptionInformation, 368 PBOOL pbIsCustomDebugger, 369 PWSTR pwszDebuggerLaunch, 370 PDWORD pchDebuggerLaunch, 371 PBOOL pbIsDebuggerAutolaunch 372 ); 373 374 typedef HRESULT (WINAPI *PFN_WER_RUNTIME_EXCEPTION_EVENT_SIGNATURE)( 375 PVOID pContext, 376 const PWER_RUNTIME_EXCEPTION_INFORMATION pExceptionInformation, 377 DWORD dwIndex, 378 PWSTR pwszName, 379 PDWORD pchName, 380 PWSTR pwszValue, 381 PDWORD pchValue 382 ); 383 384 HRESULT WINAPI WerRegisterRuntimeExceptionModule( 385 PCWSTR pwszOutOfProcessCallbackDll, 386 PVOID pContext 387 ); 388 389 HRESULT WINAPI WerUnregisterRuntimeExceptionModule( 390 PCWSTR pwszOutOfProcessCallbackDll, 391 PVOID pContext 392 ); 393 394 #endif /*(_WIN32_WINNT >= 0x0601)*/ 395 396 typedef enum _REPORT_STORE_TYPES { 397 E_STORE_USER_ARCHIVE = 0, 398 E_STORE_USER_QUEUE, 399 E_STORE_MACHINE_ARCHIVE, 400 E_STORE_MACHINE_QUEUE, 401 E_STORE_INVALID 402 } REPORT_STORE_TYPES; 403 404 typedef PVOID HREPORTSTORE, *PHREPORTSTORE; 405 406 typedef struct _WER_REPORT_PARAMETER { 407 WCHAR Name[WER_MAX_SIGNATURE_NAME_LENGTH + 1]; 408 WCHAR Value[WER_MAX_PARAM_LENGTH]; 409 }WER_REPORT_PARAMETER, PWER_REPORT_PARAMETER; 410 411 typedef struct _WER_REPORT_SIGNATURE { 412 WCHAR EventName[WER_MAX_EVENT_NAME_LENGTH + 1]; 413 WER_REPORT_PARAMETER Parameters[WER_MAX_PARAM_COUNT]; 414 } WER_REPORT_SIGNATURE, *PWER_REPORT_SIGNATURE; 415 416 typedef struct _WER_REPORT_METADATA_V1 { 417 WER_REPORT_SIGNATURE Signature; 418 GUID BucketId; 419 GUID ReportId; 420 FILETIME CreationTime; 421 ULONGLONG SizeInBytes; 422 } WER_REPORT_METADATA_V1, *PWER_REPORT_METADATA_V1; 423 424 typedef struct _WER_REPORT_METADATA_V2 { 425 WER_REPORT_SIGNATURE Signature; 426 GUID BucketId; 427 GUID ReportId; 428 FILETIME CreationTime; 429 ULONGLONG SizeInBytes; 430 WCHAR CabId[MAX_PATH]; 431 DWORD ReportStatus; 432 GUID ReportIntegratorId; 433 DWORD NumberOfFiles; 434 DWORD SizeOfFileNames; 435 WCHAR *FileNames; 436 } WER_REPORT_METADATA_V2, *PWER_REPORT_METADATA_V2; 437 438 typedef struct _WER_REPORT_METADATA_V3 { 439 WER_REPORT_SIGNATURE Signature; 440 GUID BucketId; 441 GUID ReportId; 442 FILETIME CreationTime; 443 ULONGLONG SizeInBytes; 444 WCHAR CabId[MAX_PATH]; 445 DWORD ReportStatus; 446 GUID ReportIntegratorId; 447 DWORD NumberOfFiles; 448 DWORD SizeOfFileNames; 449 WCHAR *FileNames; 450 WCHAR FriendlyEventName[WER_MAX_FRIENDLY_EVENT_NAME_LENGTH]; 451 WCHAR ApplicationName[WER_MAX_APPLICATION_NAME_LENGTH]; 452 WCHAR ApplicationPath[MAX_PATH]; 453 WCHAR Description[WER_MAX_DESCRIPTION_LENGTH]; 454 WCHAR BucketIdString[WER_MAX_BUCKET_ID_STRING_LENGTH]; 455 ULONGLONG LegacyBucketId; 456 } WER_REPORT_METADATA_V3, *PWER_REPORT_METADATA_V3; 457 458 HRESULT WINAPI WerStoreOpen(REPORT_STORE_TYPES repStoreType, PHREPORTSTORE phReportStore); 459 VOID WINAPI WerStoreClose(HREPORTSTORE hReportStore); 460 HRESULT WINAPI WerStoreGetFirstReportKey(HREPORTSTORE hReportStore, PCWSTR *ppszReportKey); 461 HRESULT WINAPI WerStoreGetNextReportKey(HREPORTSTORE hReportStore, PCWSTR *ppszReportKey); 462 HRESULT WINAPI WerStoreQueryReportMetadataV1(HREPORTSTORE hReportStore, PCWSTR pszReportKey, PWER_REPORT_METADATA_V1 pReportMetadata); 463 HRESULT WINAPI WerStoreQueryReportMetadataV2(HREPORTSTORE hReportStore, PCWSTR pszReportKey, PWER_REPORT_METADATA_V2 pReportMetadata); 464 HRESULT WINAPI WerStoreQueryReportMetadataV3(HREPORTSTORE hReportStore, PCWSTR pszReportKey, PWER_REPORT_METADATA_V3 pReportMetadata); 465 VOID WINAPI WerFreeString(PCWSTR pwszStr); 466 HRESULT WINAPI WerStorePurge(void); 467 HRESULT WINAPI WerStoreGetReportCount(HREPORTSTORE hReportStore, DWORD *pdwReportCount); 468 HRESULT WINAPI WerStoreGetSizeOnDisk(HREPORTSTORE hReportStore, ULONGLONG *pqwSizeInBytes); 469 HRESULT WINAPI WerStoreUploadReport(HREPORTSTORE hReportStore, PCWSTR pszReportKey, DWORD dwFlags, PWER_SUBMIT_RESULT pSubmitResult); 470 471 #ifdef __cplusplus 472 } 473 #endif 474 #endif /*(_WIN32_WINNT >= 0x0600)*/ 475 #endif /*_INC_WERAPI*/