1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
|
/**
* 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 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;
typedef enum _WER_REGISTER_FILE_TYPE {
WerRegFileTypeUserDocument = 1,
WerRegFileTypeOther,
WerRegFileTypeMax
} WER_REGISTER_FILE_TYPE;
typedef enum _WER_DUMP_TYPE {
WerDumpTypeNone = 0,
WerDumpTypeMicroDump,
WerDumpTypeMiniDump,
WerDumpTypeHeapDump,
WerDumpTypeTriageDump,
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
#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,
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_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;
} 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;
#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);
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);
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 {
DWORD dwSize;
HANDLE hProcess;
HANDLE hThread;
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)(
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)*/
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
#endif /*(_WIN32_WINNT >= 0x0600)*/
#endif /*_INC_WERAPI*/
|