476 lines
16 KiB
C
476 lines
16 KiB
C
/**
|
|
* 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*/
|