master
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
11extern "C" {
12#endif
13
14typedef 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
113typedef 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
126typedef enum _WER_REGISTER_FILE_TYPE {
127 WerRegFileTypeUserDocument = 1,
128 WerRegFileTypeOther,
129 WerRegFileTypeMax
130} WER_REGISTER_FILE_TYPE;
131
132typedef enum _WER_DUMP_TYPE {
133 WerDumpTypeNone = 0,
134 WerDumpTypeMicroDump,
135 WerDumpTypeMiniDump,
136 WerDumpTypeHeapDump,
137 WerDumpTypeTriageDump,
138 WerDumpTypeMax
139} WER_DUMP_TYPE;
140
141typedef 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
156typedef enum _WER_CONSENT {
157 WerConsentNotAsked = 1,
158 WerConsentApproved,
159 WerConsentDenied,
160 WerConsentAlwaysPrompt,
161 WerConsentMax
162} WER_CONSENT;
163
164typedef 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
184typedef enum _WER_REPORT_TYPE {
185 WerReportNonCritical = 0,
186 WerReportCritical,
187 WerReportApplicationCrash,
188 WerReportApplicationHang,
189 WerReportKernel,
190 WerReportInvalid
191} WER_REPORT_TYPE;
192
193typedef 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
207typedef 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
224typedef 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
243typedef WER_DUMP_CUSTOM_OPTIONS_V3 const *PCWER_DUMP_CUSTOM_OPTIONS_V3;
244#endif
245
246typedef struct _WER_EXCEPTION_INFORMATION {
247 PEXCEPTION_POINTERS pExceptionPointers;
248 WINBOOL bClientPointers;
249} WER_EXCEPTION_INFORMATION, *PWER_EXCEPTION_INFORMATION;
250
251typedef 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
263typedef 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
278typedef 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
294typedef WER_REPORT_INFORMATION_V4 const *PCWER_REPORT_INFORMATION_V4;
295#endif
296
297#if NTDDI_VERSION >= NTDDI_WIN10
298typedef 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
315typedef WER_REPORT_INFORMATION_V5 const *PCWER_REPORT_INFORMATION_V5;
316#endif
317
318HRESULT WINAPI WerAddExcludedApplication(PCWSTR pwzExeName,WINBOOL bAllUsers);
319HRESULT WINAPI WerGetFlags(HANDLE hProcess,PDWORD pdwFlags);
320HRESULT WINAPI WerRegisterFile(PCWSTR pwzFile,WER_REGISTER_FILE_TYPE regFileType,DWORD dwFlags);
321HRESULT WINAPI WerRegisterMemoryBlock(PVOID pvAddress,DWORD dwSize);
322HRESULT WINAPI WerRemoveExcludedApplication(PCWSTR pwzExeName,WINBOOL bAllUsers);
323HRESULT WINAPI WerReportAddDump(HREPORT hReportHandle,HANDLE hProcess,HANDLE hThread,WER_DUMP_TYPE dumpType,PWER_EXCEPTION_INFORMATION pExceptionParam,PWER_DUMP_CUSTOM_OPTIONS pDumpCustomOptions,DWORD dwFlags);
324HRESULT WINAPI WerReportAddFile(HREPORT hReportHandle,PCWSTR pwzPath,WER_FILE_TYPE repFileType,DWORD dwFileFlags);
325HRESULT WINAPI WerReportCloseHandle(HREPORT hReportHandle);
326HRESULT WINAPI WerReportCreate(PCWSTR pwzEventType,WER_REPORT_TYPE repType,PWER_REPORT_INFORMATION pReportInformation,HREPORT *phReportHandle);
327HRESULT WINAPI WerReportHang(HWND hwndHungWindow,PCWSTR wszHungApplicationName);
328HRESULT WINAPI WerReportSetParameter(HREPORT hReportHandle,DWORD dwparamID,PCWSTR pwzName,PCWSTR pwzValue);
329HRESULT WINAPI WerReportSetUIOption(HREPORT hReportHandle,WER_REPORT_UI repUITypeID,PCWSTR pwzValue);
330HRESULT WINAPI WerReportSubmit(HREPORT hReportHandle,WER_CONSENT consent,DWORD dwFlags,PWER_SUBMIT_RESULT pSubmitResult);
331HRESULT WINAPI WerSetFlags(DWORD dwFlags);
332HRESULT WINAPI WerUnregisterFile(PCWSTR pwzFilePath);
333HRESULT WINAPI WerUnregisterMemoryBlock(PVOID pvAddress);
334HRESULT WINAPI WerRegisterExcludedMemoryBlock(const void* address, DWORD size);
335HRESULT WINAPI WerUnregisterExcludedMemoryBlock(const void* address);
336HRESULT WINAPI WerRegisterCustomMetadata(PCWSTR key, PCWSTR value);
337HRESULT WINAPI WerUnregisterCustomMetadata(PCWSTR key);
338HRESULT WINAPI WerRegisterAdditionalProcess(DWORD processId, DWORD captureExtraInfoForThreadId);
339HRESULT WINAPI WerUnregisterAdditionalProcess(DWORD processId);
340HRESULT WINAPI WerRegisterAppLocalDump(PCWSTR localAppDataRelativePath);
341HRESULT WINAPI WerUnregisterAppLocalDump(void);
342HRESULT WINAPI WerSetMaxProcessHoldMilliseconds(DWORD dwMilliseconds);
343
344#if (_WIN32_WINNT >= 0x0601)
345typedef 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
356typedef 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
365typedef 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
374typedef 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
384HRESULT WINAPI WerRegisterRuntimeExceptionModule(
385 PCWSTR pwszOutOfProcessCallbackDll,
386 PVOID pContext
387);
388
389HRESULT WINAPI WerUnregisterRuntimeExceptionModule(
390 PCWSTR pwszOutOfProcessCallbackDll,
391 PVOID pContext
392);
393
394#endif /*(_WIN32_WINNT >= 0x0601)*/
395
396typedef 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
404typedef PVOID HREPORTSTORE, *PHREPORTSTORE;
405
406typedef 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
411typedef 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
416typedef 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
424typedef 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
438typedef 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
458HRESULT WINAPI WerStoreOpen(REPORT_STORE_TYPES repStoreType, PHREPORTSTORE phReportStore);
459VOID WINAPI WerStoreClose(HREPORTSTORE hReportStore);
460HRESULT WINAPI WerStoreGetFirstReportKey(HREPORTSTORE hReportStore, PCWSTR *ppszReportKey);
461HRESULT WINAPI WerStoreGetNextReportKey(HREPORTSTORE hReportStore, PCWSTR *ppszReportKey);
462HRESULT WINAPI WerStoreQueryReportMetadataV1(HREPORTSTORE hReportStore, PCWSTR pszReportKey, PWER_REPORT_METADATA_V1 pReportMetadata);
463HRESULT WINAPI WerStoreQueryReportMetadataV2(HREPORTSTORE hReportStore, PCWSTR pszReportKey, PWER_REPORT_METADATA_V2 pReportMetadata);
464HRESULT WINAPI WerStoreQueryReportMetadataV3(HREPORTSTORE hReportStore, PCWSTR pszReportKey, PWER_REPORT_METADATA_V3 pReportMetadata);
465VOID WINAPI WerFreeString(PCWSTR pwszStr);
466HRESULT WINAPI WerStorePurge(void);
467HRESULT WINAPI WerStoreGetReportCount(HREPORTSTORE hReportStore, DWORD *pdwReportCount);
468HRESULT WINAPI WerStoreGetSizeOnDisk(HREPORTSTORE hReportStore, ULONGLONG *pqwSizeInBytes);
469HRESULT 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*/