1 // Copyright © 2015, Peter Atashian 2 // Licensed under the MIT License <LICENSE.md> 3 //! Common Language Runtime Debugging Symbol Reader/Writer/Binder Interfaces 4 DEFINE_GUID!(CorSym_LanguageType_C, 0x63a08714, 0xfc37, 0x11d2, 5 0x90, 0x4c, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1); 6 DEFINE_GUID!(CorSym_LanguageType_CPlusPlus, 0x3a12d0b7, 0xc26c, 0x11d0, 7 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2); 8 DEFINE_GUID!(CorSym_LanguageType_CSharp, 0x3f5162f8, 0x07c6, 0x11d3, 9 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1); 10 DEFINE_GUID!(CorSym_LanguageType_Basic, 0x3a12d0b8, 0xc26c, 0x11d0, 11 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2); 12 DEFINE_GUID!(CorSym_LanguageType_Java, 0x3a12d0b4, 0xc26c, 0x11d0, 13 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2); 14 DEFINE_GUID!(CorSym_LanguageType_Cobol, 0xaf046cd1, 0xd0e1, 0x11d2, 15 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc); 16 DEFINE_GUID!(CorSym_LanguageType_Pascal, 0xaf046cd2, 0xd0e1, 0x11d2, 17 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc); 18 DEFINE_GUID!(CorSym_LanguageType_ILAssembly, 0xaf046cd3, 0xd0e1, 0x11d2, 19 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc); 20 DEFINE_GUID!(CorSym_LanguageType_JScript, 0x3a12d0b6, 0xc26c, 0x11d0, 21 0xb4, 0x42, 0x00, 0xa0, 0x24, 0x4a, 0x1d, 0xd2); 22 DEFINE_GUID!(CorSym_LanguageType_SMC, 0xd9b9f7b, 0x6611, 0x11d3, 23 0xbd, 0x2a, 0x0, 0x0, 0xf8, 0x8, 0x49, 0xbd); 24 DEFINE_GUID!(CorSym_LanguageType_MCPlusPlus, 0x4b35fde8, 0x07c6, 0x11d3, 25 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1); 26 DEFINE_GUID!(CorSym_LanguageVendor_Microsoft, 0x994b45c4, 0xe6e9, 0x11d2, 27 0x90, 0x3f, 0x00, 0xc0, 0x4f, 0xa3, 0x02, 0xa1); 28 DEFINE_GUID!(CorSym_DocumentType_Text, 0x5a869d0b, 0x6611, 0x11d3, 29 0xbd, 0x2a, 0x0, 0x0, 0xf8, 0x8, 0x49, 0xbd); 30 DEFINE_GUID!(CorSym_DocumentType_MC, 0xeb40cb65, 0x3c1f, 0x4352, 31 0x9d, 0x7b, 0xba, 0xf, 0xc4, 0x7a, 0x9d, 0x77); 32 DEFINE_GUID!(CorSym_SourceHash_MD5, 0x406ea660, 0x64cf, 0x4c82, 33 0xb6, 0xf0, 0x42, 0xd4, 0x81, 0x72, 0xa7, 0x99); 34 DEFINE_GUID!(CorSym_SourceHash_SHA1, 0xff1816ec, 0xaa5e, 0x4d10, 35 0x87, 0xf7, 0x6f, 0x49, 0x63, 0x83, 0x34, 0x60); 36 ENUM!{enum CorSymAddrKind { 37 ADDR_IL_OFFSET = 1, 38 ADDR_NATIVE_RVA = 2, 39 ADDR_NATIVE_REGISTER = 3, 40 ADDR_NATIVE_REGREL = 4, 41 ADDR_NATIVE_OFFSET = 5, 42 ADDR_NATIVE_REGREG = 6, 43 ADDR_NATIVE_REGSTK = 7, 44 ADDR_NATIVE_STKREG = 8, 45 ADDR_BITFIELD = 9, 46 ADDR_NATIVE_ISECTOFFSET = 10, 47 }} 48 FLAGS!{enum CorSymVarFlag { 49 VAR_IS_COMP_GEN = 1, 50 }} 51 RIDL!( 52 interface ISymUnmanagedBinder(ISymUnmanagedBinderVtbl): IUnknown(IUnknownVtbl) { 53 fn GetReaderForFile( 54 &mut self, importer: *mut ::IUnknown, fileName: *const ::WCHAR, searchPath: *const ::WCHAR, 55 pRetVal: *mut *mut ISymUnmanagedReader 56 ) -> ::HRESULT, 57 fn GetReaderFromStream( 58 &mut self, importer: *mut ::IUnknown, pstream: *mut ::IStream, 59 pRetVal: *mut *mut ISymUnmanagedReader 60 ) -> ::HRESULT 61 } 62 ); 63 FLAGS!{enum CorSymSearchPolicyAttributes { 64 AllowRegistryAccess = 0x1, 65 AllowSymbolServerAccess = 0x2, 66 AllowOriginalPathAccess = 0x4, 67 AllowReferencePathAccess = 0x8, 68 }} 69 RIDL!( 70 interface ISymUnmanagedBinder2(ISymUnmanagedBinder2Vtbl): 71 ISymUnmanagedBinder(ISymUnmanagedBinderVtbl) { 72 fn GetReaderForFile2( 73 &mut self, importer: *mut ::IUnknown, fileName: *const ::WCHAR, searchPath: *const ::WCHAR, 74 searchPolicy: ::ULONG32, pRetVal: *mut *mut ISymUnmanagedReader 75 ) -> ::HRESULT 76 } 77 ); 78 #[derive(Clone, Copy)] 79 pub struct ISymUnmanagedReader; 80