1 // Licensed under the Apache License, Version 2.0 2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 4 // All files in the project carrying such notice may not be copied, modified, or distributed 5 // except according to those terms. 6 use shared::basetsd::{UINT32, UINT_PTR}; 7 use shared::minwindef::{BOOL, BYTE, UINT, USHORT}; 8 use um::restrictederrorinfo::IRestrictedErrorInfo; 9 use um::unknwnbase::IUnknown; 10 use um::winnt::{HRESULT, PCWSTR, PVOID, VOID}; 11 use winrt::hstring::HSTRING; 12 ENUM!{enum RO_ERROR_REPORTING_FLAGS { 13 RO_ERROR_REPORTING_NONE = 0x00000000, 14 RO_ERROR_REPORTING_SUPPRESSEXCEPTIONS = 0x00000001, 15 RO_ERROR_REPORTING_FORCEEXCEPTIONS = 0x00000002, 16 RO_ERROR_REPORTING_USESETERRORINFO = 0x00000004, 17 RO_ERROR_REPORTING_SUPPRESSSETERRORINFO = 0x00000008, 18 }} 19 extern "system" { RoGetErrorReportingFlags( pflags: *mut UINT32, ) -> HRESULT20 pub fn RoGetErrorReportingFlags( 21 pflags: *mut UINT32, 22 ) -> HRESULT; RoSetErrorReportingFlags( flags: UINT32, ) -> HRESULT23 pub fn RoSetErrorReportingFlags( 24 flags: UINT32, 25 ) -> HRESULT; RoResolveRestrictedErrorInfoReference( reference: PCWSTR, ppRestrictedErrorInfo: *mut *mut IRestrictedErrorInfo , ) -> HRESULT26 pub fn RoResolveRestrictedErrorInfoReference( 27 reference: PCWSTR, 28 ppRestrictedErrorInfo: *mut *mut IRestrictedErrorInfo , 29 ) -> HRESULT; SetRestrictedErrorInfo( pRestrictedErrorInfo: *const IRestrictedErrorInfo, ) -> HRESULT30 pub fn SetRestrictedErrorInfo( 31 pRestrictedErrorInfo: *const IRestrictedErrorInfo, 32 ) -> HRESULT; GetRestrictedErrorInfo( ppRestrictedErrorInfo: *mut *mut IRestrictedErrorInfo, ) -> HRESULT33 pub fn GetRestrictedErrorInfo( 34 ppRestrictedErrorInfo: *mut *mut IRestrictedErrorInfo, 35 ) -> HRESULT; RoOriginateErrorW( error: HRESULT, cchMax: UINT, message: PCWSTR, ) -> BOOL36 pub fn RoOriginateErrorW( 37 error: HRESULT, 38 cchMax: UINT, 39 message: PCWSTR, 40 ) -> BOOL; RoOriginateError( error: HRESULT, message: HSTRING, ) -> BOOL41 pub fn RoOriginateError( 42 error: HRESULT, 43 message: HSTRING, 44 ) -> BOOL; RoTransformErrorW( oldError: HRESULT, newError: HRESULT, cchMax: UINT, message: PCWSTR, ) -> BOOL45 pub fn RoTransformErrorW( 46 oldError: HRESULT, 47 newError: HRESULT, 48 cchMax: UINT, 49 message: PCWSTR, 50 ) -> BOOL; RoTransformError( oldError: HRESULT, newError: HRESULT, message: HSTRING, ) -> BOOL51 pub fn RoTransformError( 52 oldError: HRESULT, 53 newError: HRESULT, 54 message: HSTRING, 55 ) -> BOOL; RoCaptureErrorContext( hr: HRESULT, ) -> HRESULT56 pub fn RoCaptureErrorContext( 57 hr: HRESULT, 58 ) -> HRESULT; RoFailFastWithErrorContext( hrError: HRESULT, )59 pub fn RoFailFastWithErrorContext( 60 hrError: HRESULT, 61 ); RoOriginateLanguageException( error: HRESULT, message: HSTRING, languageException: *const IUnknown, ) -> BOOL62 pub fn RoOriginateLanguageException( 63 error: HRESULT, 64 message: HSTRING, 65 languageException: *const IUnknown, 66 ) -> BOOL; RoClearError()67 pub fn RoClearError(); RoReportUnhandledError( pRestrictedErrorInfo: *const IRestrictedErrorInfo, ) -> HRESULT68 pub fn RoReportUnhandledError( 69 pRestrictedErrorInfo: *const IRestrictedErrorInfo, 70 ) -> HRESULT; 71 } 72 FN!{stdcall PINSPECT_MEMORY_CALLBACK( 73 *const VOID, 74 UINT_PTR, 75 UINT32, 76 *mut BYTE, 77 ) -> HRESULT} 78 extern "system" { RoInspectThreadErrorInfo( targetTebAddress: UINT_PTR, machine: USHORT, readMemoryCallback: PINSPECT_MEMORY_CALLBACK, context: PVOID, targetErrorInfoAddress: *mut UINT_PTR, ) -> HRESULT79 pub fn RoInspectThreadErrorInfo( 80 targetTebAddress: UINT_PTR, 81 machine: USHORT, 82 readMemoryCallback: PINSPECT_MEMORY_CALLBACK, 83 context: PVOID, 84 targetErrorInfoAddress: *mut UINT_PTR, 85 ) -> HRESULT; RoInspectCapturedStackBackTrace( targetErrorInfoAddress: UINT_PTR, machine: USHORT, readMemoryCallback: PINSPECT_MEMORY_CALLBACK, context: PVOID, frameCount: *mut UINT32, targetBackTraceAddress: *mut UINT_PTR, ) -> HRESULT86 pub fn RoInspectCapturedStackBackTrace( 87 targetErrorInfoAddress: UINT_PTR, 88 machine: USHORT, 89 readMemoryCallback: PINSPECT_MEMORY_CALLBACK, 90 context: PVOID, 91 frameCount: *mut UINT32, 92 targetBackTraceAddress: *mut UINT_PTR, 93 ) -> HRESULT; RoGetMatchingRestrictedErrorInfo( hrIn: HRESULT, ppRestrictedErrorInfo: *mut *mut IRestrictedErrorInfo, ) -> HRESULT94 pub fn RoGetMatchingRestrictedErrorInfo( 95 hrIn: HRESULT, 96 ppRestrictedErrorInfo: *mut *mut IRestrictedErrorInfo, 97 ) -> HRESULT; RoReportFailedDelegate( punkDelegate: *const IUnknown, pRestrictedErrorInfo: *const IRestrictedErrorInfo, ) -> HRESULT98 pub fn RoReportFailedDelegate( 99 punkDelegate: *const IUnknown, 100 pRestrictedErrorInfo: *const IRestrictedErrorInfo, 101 ) -> HRESULT; IsErrorPropagationEnabled() -> BOOL102 pub fn IsErrorPropagationEnabled() -> BOOL; 103 } 104