2 * Copyright (C) 2022 Esme Povirk
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24 /* defined in corhdr.h */
25 typedef UINT32 mdToken
;
26 typedef mdToken mdMethodDef
;
27 typedef mdToken mdTypeDef
;
28 typedef mdToken mdSignature
;
29 /* defined in winnt.h */
30 typedef SIZE_T IMAGE_DEBUG_DIRECTORY
;
35 uuid(b01fafeb
-c450
-3a4d
-beec
-b4ceec01e006
),
36 pointer_default(unique)
38 interface ISymUnmanagedDocumentWriter
: IUnknown
40 HRESULT SetSource
([in] ULONG32 sourceSize
, [in, size_is(sourceSize
)] BYTE source[]);
41 HRESULT SetCheckSum
([in] GUID algorithmId
,
42 [in] ULONG32 checkSumSize
, [in, size_is(checkSumSize
)] BYTE checkSum
[]);
47 uuid(ed14aa72
-78e2
-4884-84e2
-334293ae5214
),
48 pointer_default(unique)
50 interface ISymUnmanagedWriter
: IUnknown
52 HRESULT DefineDocument
([in] const WCHAR
*url
, [in] const GUID
*language
, [in] const GUID
*languageVendor
,
53 [in] const GUID
*documentType
, [out, retval] ISymUnmanagedDocumentWriter
** pRetVal
);
54 HRESULT SetUserEntryPoint
([in] mdMethodDef entryMethod
);
55 HRESULT OpenMethod
([in] mdMethodDef method
);
56 HRESULT CloseMethod
();
57 HRESULT OpenScope
([in] ULONG32 startOffset
, [out, retval] ULONG32
*pRetVal
);
58 HRESULT CloseScope
([in] ULONG32 endOffset
);
59 HRESULT SetScopeRange
([in] ULONG32 scopeID
, [in] ULONG32 startOffset
, [in] ULONG32 endOffset
);
60 HRESULT DefineLocalVariable
([in] const WCHAR
*name
, [in] ULONG32 attributes
, [in] ULONG32 cSig
,
61 [in, size_is(cSig
)] unsigned char signature
[], [in] ULONG32 addrKind
,
62 [in] ULONG32 addr1
, [in] ULONG32 addr2
, [in] ULONG32 addr3
,
63 [in] ULONG32 startOffset
, [in] ULONG32 endOffset
);
64 HRESULT DefineParameter
([in] const WCHAR
*name
, [in] ULONG32 attributes
, [in] ULONG32 sequence
,
65 [in] ULONG32 addrKind
,
66 [in] ULONG32 addr1
, [in] ULONG32 addr2
, [in] ULONG32 addr3
);
67 HRESULT DefineField
([in] mdTypeDef parent
, [in] const WCHAR
*name
, [in] ULONG32 attributes
, [in] ULONG32 cSig
,
68 [in, size_is(cSig
)] unsigned char signature
[], [in] ULONG32 addrKind
,
69 [in] ULONG32 addr1
, [in] ULONG32 addr2
, [in] ULONG32 addr3
);
70 HRESULT DefineGlobalVariable
([in] const WCHAR
*name
, [in] ULONG32 attributes
, [in] ULONG32 cSig
,
71 [in, size_is(cSig
)] unsigned char signature
[], [in] ULONG32 addrKind
,
72 [in] ULONG32 addr1
, [in] ULONG32 addr2
, [in] ULONG32 addr3
);
74 HRESULT SetSymAttributes
([in] mdToken parent
, [in] const WCHAR
*name
,
75 [in] ULONG32 cData
, [in, size_is(cData
)] unsigned char data
[]);
76 HRESULT OpenNamespace
([in] const WCHAR
*name
);
77 HRESULT CloseNamespace
();
78 HRESULT UsingNamespace
([in] const WCHAR
*fullName
);
79 HRESULT SetMethodSourceRange
([in] ISymUnmanagedDocumentWriter
*startDoc
, ULONG32 startLine
, ULONG32 startColumn
,
80 [in] ISymUnmanagedDocumentWriter
*endDoc
, ULONG32 endLine
, ULONG32 endColumn
);
81 HRESULT Initialize
([in] IUnknown
*emitter
, [in] const WCHAR
*filename
, [in] IStream
*pIStream
,
82 [in] BOOL fFullBuild
);
83 HRESULT GetDebugInfo
([in, out] IMAGE_DEBUG_DIRECTORY
*pIDD
, [in] DWORD cData
, [out] DWORD
*pcData
,
84 [out, size_is(cData
), length_is(*pcData
)] BYTE data
[]);
85 HRESULT DefineSequencePoints
([in] ISymUnmanagedDocumentWriter
*document
, [in] ULONG32 spCount
,
86 [in, size_is(spCount
)] ULONG32 offsets
[], [in, size_is(spCount
)] ULONG32 lines
[],
87 [in, size_is(spCount
)] ULONG32 columns
[], [in, size_is(spCount
)] ULONG32 endLines
[],
88 [in, size_is(spCount
)] ULONG32 endColumns
[]);
89 HRESULT RemapToken
([in] mdToken oldToken
, [in] mdToken newToken
);
90 HRESULT Initialize2
([in] IUnknown
*emitter
, [in] const WCHAR
*tempFilename
, [in] IStream
*pIStream
,
91 [in] BOOL fFullBuild
, [in] const WCHAR
*finalFilename
);
92 HRESULT DefineConstant
([in] const WCHAR
*name
, [in] VARIANT value
, [in] ULONG32 cSig
,
93 [in, size_is(cSig
)] unsigned char signature
[]);
99 uuid(0b97726e
-9e6d
-4f05
-9a26
-424022093caa
),
100 pointer_default(unique)
102 interface ISymUnmanagedWriter2
: ISymUnmanagedWriter
104 HRESULT DefineLocalVariable2
([in] const WCHAR
*name
, [in] ULONG32 attributes
, [in] mdSignature sigToken
,
105 [in] ULONG32 addrKind
, [in] ULONG32 addr1
, [in] ULONG32 addr2
, [in] ULONG32 addr3
,
106 [in] ULONG32 startOffset
, [in] ULONG32 endOffset
);
107 HRESULT DefineGlobalVariable2
([in] const WCHAR
*name
, [in] ULONG32 attributes
, [in] mdSignature sigToken
,
108 [in] ULONG32 addrKind
, [in] ULONG32 addr1
, [in] ULONG32 addr2
, [in] ULONG32 addr3
);
109 HRESULT DefineConstant2
([in] const WCHAR
*name
, [in] VARIANT value
, [in] mdSignature sigToken
);
114 uuid(12f1e02c
-1e05
-4b0e
-9468
-ebc9d1bb040f
),
115 pointer_default(unique)
117 interface ISymUnmanagedWriter3
: ISymUnmanagedWriter2
119 HRESULT OpenMethod2
([in] mdMethodDef method
, [in] ULONG32 isect
, [in] ULONG32 offset
);
125 uuid(bc7e3f53
-f458
-4c23
-9dbd
-a189e6e96594
),
126 pointer_default(unique)
128 interface ISymUnmanagedWriter4
: ISymUnmanagedWriter3
130 HRESULT GetDebugInfoWithPadding
([in, out] IMAGE_DEBUG_DIRECTORY
*pIDD
, [in] DWORD cbData
, [out] DWORD
* pcData
,
131 [out, size_is(cbData
), length_is(*pcData
)] BYTE data
[]);
136 uuid(dcf7780d
-bde9
-45df
-acfe
-21731a32000c
),
137 pointer_default(unique)
139 interface ISymUnmanagedWriter5
: ISymUnmanagedWriter4
141 HRESULT OpenMapTokensToSourceSpans
();
142 HRESULT CloseMapTokensToSourceSpans
();
143 HRESULT MapTokenToSourceSpan
([in] mdToken token
, [in] ISymUnmanagedDocumentWriter
* document
,
144 [in] ULONG32 line
, [in] ULONG32 column
, [in] ULONG32 endLine
, [in] ULONG32 endColumn
);
147 cpp_quote
("DEFINE_GUID(CLSID_CorSymWriter_SxS, 0x0ae2deb0,0xf901,0x478b,0xbb,0x9f,0x88,0x1e,0xe8,0x06,0x67,0x88);")