PATCH: ITypeInfo::GetDllEntry

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

This implements ITypeInfo::GetDllEntry to some degree. I do not know
yet how to find out the Dll Name.

Ciao, Marcus

Changelog:
	Added partial implementation of ITypeInfo::GetDllEntry().

Index: typelib.c
===================================================================
RCS file: /home/wine/wine/dlls/oleaut32/typelib.c,v
retrieving revision 1.78
diff -u -r1.78 typelib.c
--- typelib.c	8 Nov 2002 18:51:28 -0000	1.78
+++ typelib.c	10 Nov 2002 21:35:57 -0000
@@ -4469,7 +4475,34 @@
         WORD  *pwOrdinal)
 {
     ICOM_THIS( ITypeInfoImpl, iface);
-    FIXME("(%p) stub!\n", This);
+    TLBFuncDesc *pFDesc;
+
+    FIXME("(%p, memid %lx, %d, %p, %p, %p), partial stub!\n", This, memid, invKind, pBstrDllName, pBstrName, pwOrdinal);
+
+    for(pFDesc=This->funclist; pFDesc; pFDesc=pFDesc->next)
+        if(pFDesc->funcdesc.memid==memid){
+	    dump_TypeInfo(This);
+	    dump_TLBFuncDescOne(pFDesc);
+
+	    /* FIXME: This is wrong, but how do you find that out? */
+	    if (pBstrDllName) {
+		const WCHAR oleaut32W[] = {'O','L','E','A','U','T','3','2','.','D','L','L',0};
+		*pBstrDllName = SysAllocString(oleaut32W);
+	    }
+
+	    if (HIWORD(pFDesc->Entry) && (pFDesc->Entry != (void*)-1)) {
+		if (pBstrName)
+		    *pBstrName = SysAllocString(pFDesc->Entry);
+		if (pwOrdinal)
+		    *pwOrdinal = -1;
+		return S_OK;
+	    }
+	    if (pBstrName)
+		*pBstrName = NULL;
+	    if (pwOrdinal)
+		*pwOrdinal = (DWORD)pFDesc->Entry;
+	    return S_OK;
+        }
     return E_FAIL;
 }
 


[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux