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