[PATCH 4/5] diasymreader: Stub ISymUnmanagedWriter5.

Esme Povirk esme at codeweavers.com
Tue Feb 1 15:56:24 CST 2022


Signed-off-by: Esme Povirk <esme at codeweavers.com>
---
 dlls/diasymreader/writer.c | 145 ++++++++++++++++++++++++++++---------
 include/corsym.idl         |  51 +++++++++++++
 2 files changed, 160 insertions(+), 36 deletions(-)

diff --git a/dlls/diasymreader/writer.c b/dlls/diasymreader/writer.c
index dc4c3fb0d2b..dfc3cc47cbe 100644
--- a/dlls/diasymreader/writer.c
+++ b/dlls/diasymreader/writer.c
@@ -32,24 +32,28 @@
 WINE_DEFAULT_DEBUG_CHANNEL(diasymreader);
 
 typedef struct SymWriter {
-    ISymUnmanagedWriter iface;
+    ISymUnmanagedWriter5 iface;
     LONG ref;
 } SymWriter;
 
-static inline SymWriter *impl_from_ISymUnmanagedWriter(ISymUnmanagedWriter *iface)
+static inline SymWriter *impl_from_ISymUnmanagedWriter5(ISymUnmanagedWriter5 *iface)
 {
     return CONTAINING_RECORD(iface, SymWriter, iface);
 }
 
-static HRESULT WINAPI SymWriter_QueryInterface(ISymUnmanagedWriter *iface, REFIID iid,
+static HRESULT WINAPI SymWriter_QueryInterface(ISymUnmanagedWriter5 *iface, REFIID iid,
     void **ppv)
 {
-    SymWriter *This = impl_from_ISymUnmanagedWriter(iface);
+    SymWriter *This = impl_from_ISymUnmanagedWriter5(iface);
 
     TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
 
     if (IsEqualIID(&IID_IUnknown, iid) ||
-        IsEqualIID(&IID_ISymUnmanagedWriter, iid))
+        IsEqualIID(&IID_ISymUnmanagedWriter, iid) ||
+        IsEqualIID(&IID_ISymUnmanagedWriter2, iid) ||
+        IsEqualIID(&IID_ISymUnmanagedWriter3, iid) ||
+        IsEqualIID(&IID_ISymUnmanagedWriter4, iid) ||
+        IsEqualIID(&IID_ISymUnmanagedWriter5, iid))
     {
         *ppv = &This->iface;
     }
@@ -64,9 +68,9 @@ static HRESULT WINAPI SymWriter_QueryInterface(ISymUnmanagedWriter *iface, REFII
     return S_OK;
 }
 
-static ULONG WINAPI SymWriter_AddRef(ISymUnmanagedWriter *iface)
+static ULONG WINAPI SymWriter_AddRef(ISymUnmanagedWriter5 *iface)
 {
-    SymWriter *This = impl_from_ISymUnmanagedWriter(iface);
+    SymWriter *This = impl_from_ISymUnmanagedWriter5(iface);
     ULONG ref = InterlockedIncrement(&This->ref);
 
     TRACE("(%p) refcount=%u\n", iface, ref);
@@ -74,9 +78,9 @@ static ULONG WINAPI SymWriter_AddRef(ISymUnmanagedWriter *iface)
     return ref;
 }
 
-static ULONG WINAPI SymWriter_Release(ISymUnmanagedWriter *iface)
+static ULONG WINAPI SymWriter_Release(ISymUnmanagedWriter5 *iface)
 {
-    SymWriter *This = impl_from_ISymUnmanagedWriter(iface);
+    SymWriter *This = impl_from_ISymUnmanagedWriter5(iface);
     ULONG ref = InterlockedDecrement(&This->ref);
 
     TRACE("(%p) refcount=%u\n", iface, ref);
@@ -89,7 +93,7 @@ static ULONG WINAPI SymWriter_Release(ISymUnmanagedWriter *iface)
     return ref;
 }
 
-static HRESULT WINAPI SymWriter_DefineDocument(ISymUnmanagedWriter *iface, const WCHAR *url,
+static HRESULT WINAPI SymWriter_DefineDocument(ISymUnmanagedWriter5 *iface, const WCHAR *url,
     const GUID *language, const GUID *languageVendor, const GUID *documentType,
     ISymUnmanagedDocumentWriter** pRetVal)
 {
@@ -98,45 +102,45 @@ static HRESULT WINAPI SymWriter_DefineDocument(ISymUnmanagedWriter *iface, const
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_SetUserEntryPoint(ISymUnmanagedWriter *iface, mdMethodDef entryMethod)
+static HRESULT WINAPI SymWriter_SetUserEntryPoint(ISymUnmanagedWriter5 *iface, mdMethodDef entryMethod)
 {
     FIXME("(%p,0x%x)\n", iface, entryMethod);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_OpenMethod(ISymUnmanagedWriter *iface, mdMethodDef method)
+static HRESULT WINAPI SymWriter_OpenMethod(ISymUnmanagedWriter5 *iface, mdMethodDef method)
 {
     FIXME("(%p,0x%x)\n", iface, method);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_CloseMethod(ISymUnmanagedWriter *iface)
+static HRESULT WINAPI SymWriter_CloseMethod(ISymUnmanagedWriter5 *iface)
 {
     FIXME("(%p)\n", iface);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_OpenScope(ISymUnmanagedWriter *iface, ULONG32 startOffset,
+static HRESULT WINAPI SymWriter_OpenScope(ISymUnmanagedWriter5 *iface, ULONG32 startOffset,
     ULONG32 *pRetVal)
 {
     FIXME("(%p,%u,%p)\n", iface, startOffset, pRetVal);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_CloseScope(ISymUnmanagedWriter *iface, ULONG32 endOffset)
+static HRESULT WINAPI SymWriter_CloseScope(ISymUnmanagedWriter5 *iface, ULONG32 endOffset)
 {
     FIXME("(%p,%u)\n", iface, endOffset);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_SetScopeRange(ISymUnmanagedWriter *iface, ULONG32 scopeID, ULONG32 startOffset, 
+static HRESULT WINAPI SymWriter_SetScopeRange(ISymUnmanagedWriter5 *iface, ULONG32 scopeID, ULONG32 startOffset, 
     ULONG32 endOffset)
 {
     FIXME("(%p,%u,%u,%u)\n", iface, scopeID, startOffset, endOffset);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_DefineLocalVariable(ISymUnmanagedWriter *iface, const WCHAR *name,
+static HRESULT WINAPI SymWriter_DefineLocalVariable(ISymUnmanagedWriter5 *iface, const WCHAR *name,
     ULONG32 attributes, ULONG32 cSig, unsigned char signature[], ULONG32 addrKind,
     ULONG32 addr1, ULONG32 addr2, ULONG32 addr3, ULONG32 startOffset, ULONG32 endOffset)
 {
@@ -144,7 +148,7 @@ static HRESULT WINAPI SymWriter_DefineLocalVariable(ISymUnmanagedWriter *iface,
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_DefineParameter(ISymUnmanagedWriter *iface, const WCHAR *name,
+static HRESULT WINAPI SymWriter_DefineParameter(ISymUnmanagedWriter5 *iface, const WCHAR *name,
     ULONG32 attributes, ULONG32 sequence, ULONG32 addrKind,
     ULONG32 addr1, ULONG32 addr2, ULONG32 addr3)
 {
@@ -152,7 +156,7 @@ static HRESULT WINAPI SymWriter_DefineParameter(ISymUnmanagedWriter *iface, cons
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_DefineField(ISymUnmanagedWriter *iface, mdTypeDef parent,
+static HRESULT WINAPI SymWriter_DefineField(ISymUnmanagedWriter5 *iface, mdTypeDef parent,
     const WCHAR *name, ULONG32 attributes, ULONG32 cSig, unsigned char signature[], ULONG32 addrKind,
     ULONG32 addr1, ULONG32 addr2, ULONG32 addr3)
 {
@@ -160,7 +164,7 @@ static HRESULT WINAPI SymWriter_DefineField(ISymUnmanagedWriter *iface, mdTypeDe
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_DefineGlobalVariable(ISymUnmanagedWriter *iface, const WCHAR *name, 
+static HRESULT WINAPI SymWriter_DefineGlobalVariable(ISymUnmanagedWriter5 *iface, const WCHAR *name, 
     ULONG32 attributes, ULONG32 cSig, unsigned char signature[], ULONG32 addrKind,
     ULONG32 addr1, ULONG32 addr2, ULONG32 addr3)
 {
@@ -168,92 +172,152 @@ static HRESULT WINAPI SymWriter_DefineGlobalVariable(ISymUnmanagedWriter *iface,
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_Close(ISymUnmanagedWriter *iface)
+static HRESULT WINAPI SymWriter_Close(ISymUnmanagedWriter5 *iface)
 {
     FIXME("(%p)\n", iface);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_SetSymAttributes(ISymUnmanagedWriter *iface, mdToken parent,
+static HRESULT WINAPI SymWriter_SetSymAttributes(ISymUnmanagedWriter5 *iface, mdToken parent,
     const WCHAR *name, ULONG32 cData, unsigned char data[])
 {
     FIXME("(%p,0x%x,%s,%u)\n", iface, parent, debugstr_w(name), cData);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_OpenNamespace(ISymUnmanagedWriter *iface, const WCHAR *name)
+static HRESULT WINAPI SymWriter_OpenNamespace(ISymUnmanagedWriter5 *iface, const WCHAR *name)
 {
     FIXME("(%p,%s)\n", iface, debugstr_w(name));
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_CloseNamespace(ISymUnmanagedWriter *iface)
+static HRESULT WINAPI SymWriter_CloseNamespace(ISymUnmanagedWriter5 *iface)
 {
     FIXME("(%p)\n", iface);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_UsingNamespace(ISymUnmanagedWriter *iface, const WCHAR *fullName)
+static HRESULT WINAPI SymWriter_UsingNamespace(ISymUnmanagedWriter5 *iface, const WCHAR *fullName)
 {
     FIXME("(%p,%s)\n", iface, debugstr_w(fullName));
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_SetMethodSourceRange(ISymUnmanagedWriter *iface, ISymUnmanagedDocumentWriter *startDoc,
+static HRESULT WINAPI SymWriter_SetMethodSourceRange(ISymUnmanagedWriter5 *iface, ISymUnmanagedDocumentWriter *startDoc,
     ULONG32 startLine, ULONG32 startColumn, ISymUnmanagedDocumentWriter *endDoc, ULONG32 endLine, ULONG32 endColumn)
 {
     FIXME("(%p,%p,%u,%u,%p,%u,%u)\n", iface, startDoc, startLine, startColumn, endDoc, endLine, endColumn);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_Initialize(ISymUnmanagedWriter *iface, IUnknown *emitter, const WCHAR *filename, 
+static HRESULT WINAPI SymWriter_Initialize(ISymUnmanagedWriter5 *iface, IUnknown *emitter, const WCHAR *filename, 
     IStream *pIStream, BOOL fFullBuild)
 {
     FIXME("(%p,%p,%s,%p,%u)\n", iface, emitter, debugstr_w(filename), pIStream, fFullBuild);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_GetDebugInfo(ISymUnmanagedWriter *iface, IMAGE_DEBUG_DIRECTORY *pIDD, DWORD cData,
+static HRESULT WINAPI SymWriter_GetDebugInfo(ISymUnmanagedWriter5 *iface, IMAGE_DEBUG_DIRECTORY *pIDD, DWORD cData,
     DWORD *pcData, BYTE data[])
 {
     FIXME("(%p,%p,%u,%p,%p)\n", iface, pIDD, cData, pcData, data);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_DefineSequencePoints(ISymUnmanagedWriter *iface, ISymUnmanagedDocumentWriter *document,
+static HRESULT WINAPI SymWriter_DefineSequencePoints(ISymUnmanagedWriter5 *iface, ISymUnmanagedDocumentWriter *document,
     ULONG32 spCount, ULONG32 offsets[], ULONG32 lines[], ULONG32 columns[], ULONG32 endLines[], ULONG32 endColumns[])
 {
     FIXME("(%p,%p,%u)\n", iface, document, spCount);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_RemapToken(ISymUnmanagedWriter *iface, mdToken oldToken, mdToken newToken)
+static HRESULT WINAPI SymWriter_RemapToken(ISymUnmanagedWriter5 *iface, mdToken oldToken, mdToken newToken)
 {
     FIXME("(%p,0x%x,0x%x)\n", iface, oldToken, newToken);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_Initialize2(ISymUnmanagedWriter *iface, IUnknown *emitter, const WCHAR *tempFilename,
+static HRESULT WINAPI SymWriter_Initialize2(ISymUnmanagedWriter5 *iface, IUnknown *emitter, const WCHAR *tempFilename,
     IStream *pIStream, BOOL fFullBuild, const WCHAR *finalFilename)
 {
     FIXME("(%p,%p,%s,%p,%u,%s)\n", iface, emitter, debugstr_w(tempFilename), pIStream, fFullBuild, debugstr_w(finalFilename));
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_DefineConstant(ISymUnmanagedWriter *iface, const WCHAR *name, VARIANT value, ULONG32 cSig,
+static HRESULT WINAPI SymWriter_DefineConstant(ISymUnmanagedWriter5 *iface, const WCHAR *name, VARIANT value, ULONG32 cSig,
     unsigned char signature[])
 {
     FIXME("(%p,%s,%s,%u,%p)\n", iface, debugstr_w(name), debugstr_variant(&value), cSig, signature);
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI SymWriter_Abort(ISymUnmanagedWriter *iface)
+static HRESULT WINAPI SymWriter_Abort(ISymUnmanagedWriter5 *iface)
 {
     FIXME("(%p)\n", iface);
     return E_NOTIMPL;
 }
 
-static const ISymUnmanagedWriterVtbl SymWriter_Vtbl = {
+static HRESULT WINAPI SymWriter_DefineLocalVariable2(ISymUnmanagedWriter5 *iface, const WCHAR *name, ULONG32 attributes,
+    mdSignature sigToken, ULONG32 addrKind, ULONG32 addr1, ULONG32 addr2, ULONG32 addr3,
+    ULONG32 startOffset, ULONG32 endOffset)
+{
+    FIXME("(%p,%s,0x%x,0x%x,%u)\n", iface, debugstr_w(name), attributes, sigToken, addrKind);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI SymWriter_DefineGlobalVariable2(ISymUnmanagedWriter5 *iface, const WCHAR *name, ULONG32 attributes,
+    mdSignature sigToken, ULONG32 addrKind, ULONG32 addr1, ULONG32 addr2, ULONG32 addr3)
+{
+    FIXME("(%p,%s,0x%x,0x%x,%u)\n", iface, debugstr_w(name), attributes, sigToken, addrKind);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI SymWriter_DefineConstant2(ISymUnmanagedWriter5 *iface, const WCHAR *name, VARIANT value, mdSignature sigToken)
+{
+    FIXME("(%p,%s,%s,0x%x)\n", iface, debugstr_w(name), debugstr_variant(&value), sigToken);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI SymWriter_OpenMethod2(ISymUnmanagedWriter5 *iface, mdMethodDef method, ULONG32 isect, ULONG32 offset)
+{
+    FIXME("(%p,0x%x,%u,%u)\n", iface, method, isect, offset);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI SymWriter_Commit(ISymUnmanagedWriter5 *iface)
+{
+    FIXME("(%p)\n", iface);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI SymWriter_GetDebugInfoWithPadding(ISymUnmanagedWriter5 *iface, IMAGE_DEBUG_DIRECTORY *pIDD, DWORD cbData,
+    DWORD* pcData, BYTE data[])
+{
+    FIXME("(%p,%p,%u,%p,%p)\n", iface, pIDD, cbData, pcData, data);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI SymWriter_OpenMapTokensToSourceSpans(ISymUnmanagedWriter5 *iface)
+{
+    FIXME("(%p)\n", iface);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI SymWriter_CloseMapTokensToSourceSpans(ISymUnmanagedWriter5 *iface)
+{
+    FIXME("(%p)\n", iface);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI SymWriter_MapTokenToSourceSpan(ISymUnmanagedWriter5 *iface, mdToken token, ISymUnmanagedDocumentWriter* document,
+                                 ULONG32 line, ULONG32 column, ULONG32 endLine, ULONG32 endColumn)
+{
+    FIXME("(%p,%x,%p,%u,%u,%u,%u)\n", iface, token, document, line, column, endLine, endColumn);
+    return E_NOTIMPL;
+}
+
+
+static const ISymUnmanagedWriter5Vtbl SymWriter_Vtbl = {
     SymWriter_QueryInterface,
     SymWriter_AddRef,
     SymWriter_Release,
@@ -280,7 +344,16 @@ static const ISymUnmanagedWriterVtbl SymWriter_Vtbl = {
     SymWriter_RemapToken,
     SymWriter_Initialize2,
     SymWriter_DefineConstant,
-    SymWriter_Abort
+    SymWriter_Abort,
+    SymWriter_DefineLocalVariable2,
+    SymWriter_DefineGlobalVariable2,
+    SymWriter_DefineConstant2,
+    SymWriter_OpenMethod2,
+    SymWriter_Commit,
+    SymWriter_GetDebugInfoWithPadding,
+    SymWriter_OpenMapTokensToSourceSpans,
+    SymWriter_CloseMapTokensToSourceSpans,
+    SymWriter_MapTokenToSourceSpan
 };
 
 HRESULT SymWriter_CreateInstance(REFIID iid, void **ppv)
@@ -297,7 +370,7 @@ HRESULT SymWriter_CreateInstance(REFIID iid, void **ppv)
 
     hr = IUnknown_QueryInterface(&This->iface, iid, ppv);
 
-    ISymUnmanagedWriter_Release(&This->iface);
+    ISymUnmanagedWriter5_Release(&This->iface);
 
     return hr;
 }
diff --git a/include/corsym.idl b/include/corsym.idl
index f46b1f5a78a..8edf92d5146 100644
--- a/include/corsym.idl
+++ b/include/corsym.idl
@@ -25,6 +25,7 @@ cpp_quote("#if 0")
 typedef UINT32 mdToken;
 typedef mdToken mdMethodDef;
 typedef mdToken mdTypeDef;
+typedef mdToken mdSignature;
 /* defined in winnt.h */
 typedef SIZE_T IMAGE_DEBUG_DIRECTORY;
 cpp_quote("#endif")
@@ -93,4 +94,54 @@ interface ISymUnmanagedWriter : IUnknown
     HRESULT Abort();
 }
 
+[
+    object,
+    uuid(0b97726e-9e6d-4f05-9a26-424022093caa),
+    pointer_default(unique)
+]
+interface ISymUnmanagedWriter2 : ISymUnmanagedWriter
+{
+    HRESULT DefineLocalVariable2([in] const WCHAR *name, [in] ULONG32 attributes, [in] mdSignature sigToken,
+                                 [in] ULONG32 addrKind, [in] ULONG32 addr1, [in] ULONG32 addr2, [in] ULONG32 addr3,
+                                 [in] ULONG32 startOffset, [in] ULONG32 endOffset);
+    HRESULT DefineGlobalVariable2([in] const WCHAR *name, [in] ULONG32 attributes, [in] mdSignature sigToken,
+                                  [in] ULONG32 addrKind, [in] ULONG32 addr1, [in] ULONG32 addr2, [in] ULONG32 addr3);
+    HRESULT DefineConstant2([in] const WCHAR *name, [in] VARIANT value, [in] mdSignature sigToken);
+}
+
+[
+    object,
+    uuid(12f1e02c-1e05-4b0e-9468-ebc9d1bb040f),
+    pointer_default(unique)
+]
+interface ISymUnmanagedWriter3 : ISymUnmanagedWriter2
+{
+    HRESULT OpenMethod2([in] mdMethodDef method, [in] ULONG32 isect, [in] ULONG32 offset);
+    HRESULT Commit();
+}
+
+[
+    object,
+    uuid(bc7e3f53-f458-4c23-9dbd-a189e6e96594),
+    pointer_default(unique)
+]
+interface ISymUnmanagedWriter4 : ISymUnmanagedWriter3
+{
+    HRESULT GetDebugInfoWithPadding([in, out] IMAGE_DEBUG_DIRECTORY *pIDD, [in] DWORD cbData, [out] DWORD* pcData,
+                                    [out, size_is(cbData), length_is(*pcData)] BYTE data[]);
+}
+
+[
+    object,
+    uuid(dcf7780d-bde9-45df-acfe-21731a32000c),
+    pointer_default(unique)
+]
+interface ISymUnmanagedWriter5 : ISymUnmanagedWriter4
+{
+    HRESULT OpenMapTokensToSourceSpans();
+    HRESULT CloseMapTokensToSourceSpans();
+    HRESULT MapTokenToSourceSpan([in] mdToken token, [in] ISymUnmanagedDocumentWriter* document,
+                                 [in] ULONG32 line, [in] ULONG32 column, [in] ULONG32 endLine, [in] ULONG32 endColumn);
+}
+
 cpp_quote("DEFINE_GUID(CLSID_CorSymWriter_SxS, 0x0ae2deb0,0xf901,0x478b,0xbb,0x9f,0x88,0x1e,0xe8,0x06,0x67,0x88);")
-- 
2.30.2




More information about the wine-devel mailing list