Sync to Wine-0_9:
Pierre d'Herbemont <pidherbemont@opendarwin.org>
- Allow compilation on non-i386.
Huw Davies <huw@codeweavers.com>
- When a dispinterface isn't dual, we should return
  TYPE_E_ELEMENTNOTFOUND when trying to get index -1.
- Proxies and stubs for GetTypeInfoCont, GetLibAttr and ReleaseLibAttr.
- Implement GetContainingTypelib_{Proxy,Stub}.
Modified: trunk/reactos/lib/oleaut32/tmarshal.c
Deleted: trunk/reactos/lib/oleaut32/tmarshal.h
Modified: trunk/reactos/lib/oleaut32/typelib.c
Modified: trunk/reactos/lib/oleaut32/usrmarshal.c
Modified: trunk/reactos/w32api/include/oaidl.h

Modified: trunk/reactos/lib/oleaut32/tmarshal.c
--- trunk/reactos/lib/oleaut32/tmarshal.c	2005-11-02 18:36:04 UTC (rev 18953)
+++ trunk/reactos/lib/oleaut32/tmarshal.c	2005-11-02 19:28:16 UTC (rev 18954)
@@ -344,7 +344,9 @@
 #include "poppack.h"
 
 #else /* __i386__ */
-# error You need to implement stubless proxies for your architecture
+# warning You need to implement stubless proxies for your architecture
+typedef struct _TMAsmProxy {
+} TMAsmProxy;
 #endif
 
 typedef struct _TMProxyImpl {
@@ -1939,6 +1941,7 @@
 		for (j=0;j<fdesc->cParams;j++)
 		    nrofargs += _argsize(fdesc->lprgelemdescParam[j].tdesc.vt);
 
+#ifdef __i386__
 		if (fdesc->callconv != CC_STDCALL) {
 		    ERR("calling convention is not stdcall????\n");
 		    return E_FAIL;
@@ -1963,6 +1966,10 @@
 		xasm->bytestopop= (nrofargs+2)*4; /* pop args, This, iMethod */
 		proxy->lpvtbl[i] = xasm;
 		break;
+#else
+                FIXME("not implemented on non i386\n");
+                return E_FAIL;
+#endif
 	    }
 	}
     }

Deleted: trunk/reactos/lib/oleaut32/tmarshal.h
--- trunk/reactos/lib/oleaut32/tmarshal.h	2005-11-02 18:36:04 UTC (rev 18953)
+++ trunk/reactos/lib/oleaut32/tmarshal.h	2005-11-02 19:28:16 UTC (rev 18954)
@@ -1,24 +0,0 @@
-/*
- * Copyright 2002 Marcus Meissner
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef TMARSHAL_H
-#define TMARSHAL_H
-HRESULT WINAPI
-TypeLibFac_DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv);
-
-#endif

Modified: trunk/reactos/lib/oleaut32/typelib.c
--- trunk/reactos/lib/oleaut32/typelib.c	2005-11-02 18:36:04 UTC (rev 18953)
+++ trunk/reactos/lib/oleaut32/typelib.c	2005-11-02 19:28:16 UTC (rev 18954)
@@ -4338,7 +4338,8 @@
 	HREFTYPE  *pRefType)
 {
     ITypeInfoImpl *This = (ITypeInfoImpl *)iface;
-    int(i);
+    int i;
+    HRESULT hr = S_OK;
     TLBImplType *pImpl = This->impltypelist;
 
     TRACE("(%p) index %d\n", This, index);
@@ -4358,8 +4359,7 @@
       }
       else
       {
-        if (!pImpl) return TYPE_E_ELEMENTNOTFOUND;
-        *pRefType = pImpl->hRef;
+        hr = TYPE_E_ELEMENTNOTFOUND;
       }
     }
     else
@@ -4370,15 +4370,21 @@
         pImpl = pImpl->next;
       }
 
-      if (!pImpl) return TYPE_E_ELEMENTNOTFOUND;
+      if (pImpl)
+        *pRefType = pImpl->hRef;
+      else
+        hr = TYPE_E_ELEMENTNOTFOUND;
+    }
 
-      *pRefType = pImpl->hRef;
-
-      TRACE("-- 0x%08lx\n", pImpl->hRef );
+    if(TRACE_ON(ole))
+    {
+        if(SUCCEEDED(hr))
+            TRACE("SUCCESS -- hRef = 0x%08lx\n", *pRefType );
+        else
+            TRACE("FAILURE -- hresult = 0x%08lx\n", hr);
     }
 
-    return S_OK;
-
+    return hr;
 }
 
 /* ITypeInfo::GetImplTypeFlags

Modified: trunk/reactos/lib/oleaut32/usrmarshal.c
--- trunk/reactos/lib/oleaut32/usrmarshal.c	2005-11-02 18:36:04 UTC (rev 18953)
+++ trunk/reactos/lib/oleaut32/usrmarshal.c	2005-11-02 19:28:16 UTC (rev 18954)
@@ -967,8 +967,24 @@
     ITypeLib** ppTLib,
     UINT* pIndex)
 {
-  FIXME("not implemented\n");
-  return E_FAIL;
+    ITypeLib *pTL;
+    UINT index;
+    HRESULT hr;
+
+    TRACE("(%p, %p, %p)\n", This, ppTLib, pIndex );
+    
+    hr = ITypeInfo_RemoteGetContainingTypeLib_Proxy(This, &pTL, &index);
+    if(SUCCEEDED(hr))
+    {
+        if(pIndex)
+            *pIndex = index;
+
+        if(ppTLib)
+            *ppTLib = pTL;
+        else
+            ITypeLib_Release(pTL);
+    }
+    return hr;
 }
 
 HRESULT __RPC_STUB ITypeInfo_GetContainingTypeLib_Stub(
@@ -976,8 +992,8 @@
     ITypeLib** ppTLib,
     UINT* pIndex)
 {
-  FIXME("not implemented\n");
-  return E_FAIL;
+    TRACE("(%p, %p, %p)\n", This, ppTLib, pIndex );
+    return ITypeInfo_GetContainingTypeLib(This, ppTLib, pIndex);
 }
 
 void CALLBACK ITypeInfo_ReleaseTypeAttr_Proxy(
@@ -1055,24 +1071,30 @@
 UINT CALLBACK ITypeLib_GetTypeInfoCount_Proxy(
     ITypeLib* This)
 {
-  FIXME("not implemented\n");
-  return E_FAIL;
+    UINT count = 0;
+    TRACE("(%p)\n", This);
+
+    ITypeLib_RemoteGetTypeInfoCount_Proxy(This, &count);
+    
+    return count;
 }
 
 HRESULT __RPC_STUB ITypeLib_GetTypeInfoCount_Stub(
     ITypeLib* This,
     UINT* pcTInfo)
 {
-  FIXME("not implemented\n");
-  return E_FAIL;
+    TRACE("(%p, %p)\n", This, pcTInfo);
+    *pcTInfo = ITypeLib_GetTypeInfoCount(This);
+    return S_OK;
 }
 
 HRESULT CALLBACK ITypeLib_GetLibAttr_Proxy(
     ITypeLib* This,
     TLIBATTR** ppTLibAttr)
 {
-  FIXME("not implemented\n");
-  return E_FAIL;
+    CLEANLOCALSTORAGE stg;
+    TRACE("(%p, %p)\n", This, ppTLibAttr);
+    return ITypeLib_RemoteGetLibAttr_Proxy(This, ppTLibAttr, &stg);    
 }
 
 HRESULT __RPC_STUB ITypeLib_GetLibAttr_Stub(
@@ -1080,8 +1102,8 @@
     LPTLIBATTR* ppTLibAttr,
     CLEANLOCALSTORAGE* pDummy)
 {
-  FIXME("not implemented\n");
-  return E_FAIL;
+    TRACE("(%p, %p)\n", This, ppTLibAttr);
+    return ITypeLib_GetLibAttr(This, ppTLibAttr);
 }
 
 HRESULT CALLBACK ITypeLib_GetDocumentation_Proxy(
@@ -1159,14 +1181,15 @@
     ITypeLib* This,
     TLIBATTR* pTLibAttr)
 {
-  FIXME("not implemented\n");
+    TRACE("(%p, %p)\n", This, pTLibAttr);
+    CoTaskMemFree(pTLibAttr);
 }
 
 HRESULT __RPC_STUB ITypeLib_ReleaseTLibAttr_Stub(
     ITypeLib* This)
 {
-  FIXME("not implemented\n");
-  return E_FAIL;
+    TRACE("nothing to do\n");
+    return S_OK;
 }
 
 

Modified: trunk/reactos/w32api/include/oaidl.h
--- trunk/reactos/w32api/include/oaidl.h	2005-11-02 18:36:04 UTC (rev 18953)
+++ trunk/reactos/w32api/include/oaidl.h	2005-11-02 19:28:16 UTC (rev 18954)
@@ -91,6 +91,11 @@
 extern const IID IID_IRecordInfo;
 extern const IID IID_ITypeMarshal;
 
+#ifndef __ITypeLib_FWD_DEFINED__
+#define __ITypeLib_FWD_DEFINED__
+typedef struct ITypeLib ITypeLib;
+#endif
+
 typedef enum tagSYSKIND {
 	SYS_WIN16,SYS_WIN32,SYS_MAC
 } SYSKIND;
@@ -586,6 +591,301 @@
 #define ITypeInfo_ReleaseVarDesc(p,a) (p)->lpVtbl->ReleaseVarDesc(p,a)
 #endif
 
+HRESULT CALLBACK ITypeInfo_RemoteGetTypeAttr_Proxy(
+    ITypeInfo* This,
+    LPTYPEATTR* ppTypeAttr,
+    CLEANLOCALSTORAGE* pDummy);
+void __RPC_STUB ITypeInfo_RemoteGetTypeAttr_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_GetTypeAttr_Proxy(
+    ITypeInfo* This,
+    TYPEATTR** ppTypeAttr);
+HRESULT __RPC_STUB ITypeInfo_GetTypeAttr_Stub(
+    ITypeInfo* This,
+    LPTYPEATTR* ppTypeAttr,
+    CLEANLOCALSTORAGE* pDummy);
+HRESULT CALLBACK ITypeInfo_GetTypeComp_Proxy(
+    ITypeInfo* This,
+    ITypeComp** ppTComp);
+void __RPC_STUB ITypeInfo_GetTypeComp_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_RemoteGetFuncDesc_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    LPFUNCDESC* ppFuncDesc,
+    CLEANLOCALSTORAGE* pDummy);
+void __RPC_STUB ITypeInfo_RemoteGetFuncDesc_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_GetFuncDesc_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    FUNCDESC** ppFuncDesc);
+HRESULT __RPC_STUB ITypeInfo_GetFuncDesc_Stub(
+    ITypeInfo* This,
+    UINT index,
+    LPFUNCDESC* ppFuncDesc,
+    CLEANLOCALSTORAGE* pDummy);
+HRESULT CALLBACK ITypeInfo_RemoteGetVarDesc_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    LPVARDESC* ppVarDesc,
+    CLEANLOCALSTORAGE* pDummy);
+void __RPC_STUB ITypeInfo_RemoteGetVarDesc_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_GetVarDesc_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    VARDESC** ppVarDesc);
+HRESULT __RPC_STUB ITypeInfo_GetVarDesc_Stub(
+    ITypeInfo* This,
+    UINT index,
+    LPVARDESC* ppVarDesc,
+    CLEANLOCALSTORAGE* pDummy);
+HRESULT CALLBACK ITypeInfo_RemoteGetNames_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    BSTR* rgBstrNames,
+    UINT cMaxNames,
+    UINT* pcNames);
+void __RPC_STUB ITypeInfo_RemoteGetNames_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_GetNames_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    BSTR* rgBstrNames,
+    UINT cMaxNames,
+    UINT* pcNames);
+HRESULT __RPC_STUB ITypeInfo_GetNames_Stub(
+    ITypeInfo* This,
+    MEMBERID memid,
+    BSTR* rgBstrNames,
+    UINT cMaxNames,
+    UINT* pcNames);
+HRESULT CALLBACK ITypeInfo_GetRefTypeOfImplType_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    HREFTYPE* pRefType);
+void __RPC_STUB ITypeInfo_GetRefTypeOfImplType_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_GetImplTypeFlags_Proxy(
+    ITypeInfo* This,
+    UINT index,
+    INT* pImplTypeFlags);
+void __RPC_STUB ITypeInfo_GetImplTypeFlags_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_LocalGetIDsOfNames_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalGetIDsOfNames_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_GetIDsOfNames_Proxy(
+    ITypeInfo* This,
+    LPOLESTR* rgszNames,
+    UINT cNames,
+    MEMBERID* pMemId);
+HRESULT __RPC_STUB ITypeInfo_GetIDsOfNames_Stub(
+    ITypeInfo* This);
+HRESULT CALLBACK ITypeInfo_LocalInvoke_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalInvoke_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_Invoke_Proxy(
+    ITypeInfo* This,
+    PVOID pvInstance,
+    MEMBERID memid,
+    WORD wFlags,
+    DISPPARAMS* pDispParams,
+    VARIANT* pVarResult,
+    EXCEPINFO* pExcepInfo,
+    UINT* puArgErr);
+HRESULT __RPC_STUB ITypeInfo_Invoke_Stub(
+    ITypeInfo* This);
+HRESULT CALLBACK ITypeInfo_RemoteGetDocumentation_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    DWORD refPtrFlags,
+    BSTR* pBstrName,
+    BSTR* pBstrDocString,
+    DWORD* pdwHelpContext,
+    BSTR* pBstrHelpFile);
+void __RPC_STUB ITypeInfo_RemoteGetDocumentation_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_GetDocumentation_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    BSTR* pBstrName,
+    BSTR* pBstrDocString,
+    DWORD* pdwHelpContext,
+    BSTR* pBstrHelpFile);
+HRESULT __RPC_STUB ITypeInfo_GetDocumentation_Stub(
+    ITypeInfo* This,
+    MEMBERID memid,
+    DWORD refPtrFlags,
+    BSTR* pBstrName,
+    BSTR* pBstrDocString,
+    DWORD* pdwHelpContext,
+    BSTR* pBstrHelpFile);
+HRESULT CALLBACK ITypeInfo_RemoteGetDllEntry_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    INVOKEKIND invKind,
+    DWORD refPtrFlags,
+    BSTR* pBstrDllName,
+    BSTR* pBstrName,
+    WORD* pwOrdinal);
+void __RPC_STUB ITypeInfo_RemoteGetDllEntry_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_GetDllEntry_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    INVOKEKIND invKind,
+    BSTR* pBstrDllName,
+    BSTR* pBstrName,
+    WORD* pwOrdinal);
+HRESULT __RPC_STUB ITypeInfo_GetDllEntry_Stub(
+    ITypeInfo* This,
+    MEMBERID memid,
+    INVOKEKIND invKind,
+    DWORD refPtrFlags,
+    BSTR* pBstrDllName,
+    BSTR* pBstrName,
+    WORD* pwOrdinal);
+HRESULT CALLBACK ITypeInfo_GetRefTypeInfo_Proxy(
+    ITypeInfo* This,
+    HREFTYPE hRefType,
+    ITypeInfo** ppTInfo);
+void __RPC_STUB ITypeInfo_GetRefTypeInfo_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_LocalAddressOfMember_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalAddressOfMember_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_AddressOfMember_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    INVOKEKIND invKind,
+    PVOID* ppv);
+HRESULT __RPC_STUB ITypeInfo_AddressOfMember_Stub(
+    ITypeInfo* This);
+HRESULT CALLBACK ITypeInfo_RemoteCreateInstance_Proxy(
+    ITypeInfo* This,
+    REFIID riid,
+    IUnknown** ppvObj);
+void __RPC_STUB ITypeInfo_RemoteCreateInstance_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_CreateInstance_Proxy(
+    ITypeInfo* This,
+    IUnknown* pUnkOuter,
+    REFIID riid,
+    PVOID* ppvObj);
+HRESULT __RPC_STUB ITypeInfo_CreateInstance_Stub(
+    ITypeInfo* This,
+    REFIID riid,
+    IUnknown** ppvObj);
+HRESULT CALLBACK ITypeInfo_GetMops_Proxy(
+    ITypeInfo* This,
+    MEMBERID memid,
+    BSTR* pBstrMops);
+void __RPC_STUB ITypeInfo_GetMops_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_RemoteGetContainingTypeLib_Proxy(
+    ITypeInfo* This,
+    ITypeLib** ppTLib,
+    UINT* pIndex);
+void __RPC_STUB ITypeInfo_RemoteGetContainingTypeLib_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeInfo_GetContainingTypeLib_Proxy(
+    ITypeInfo* This,
+    ITypeLib** ppTLib,
+    UINT* pIndex);
+HRESULT __RPC_STUB ITypeInfo_GetContainingTypeLib_Stub(
+    ITypeInfo* This,
+    ITypeLib** ppTLib,
+    UINT* pIndex);
+HRESULT CALLBACK ITypeInfo_LocalReleaseTypeAttr_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalReleaseTypeAttr_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void CALLBACK ITypeInfo_ReleaseTypeAttr_Proxy(
+    ITypeInfo* This,
+    TYPEATTR* pTypeAttr);
+HRESULT __RPC_STUB ITypeInfo_ReleaseTypeAttr_Stub(
+    ITypeInfo* This);
+HRESULT CALLBACK ITypeInfo_LocalReleaseFuncDesc_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalReleaseFuncDesc_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void CALLBACK ITypeInfo_ReleaseFuncDesc_Proxy(
+    ITypeInfo* This,
+    FUNCDESC* pFuncDesc);
+HRESULT __RPC_STUB ITypeInfo_ReleaseFuncDesc_Stub(
+    ITypeInfo* This);
+HRESULT CALLBACK ITypeInfo_LocalReleaseVarDesc_Proxy(
+    ITypeInfo* This);
+void __RPC_STUB ITypeInfo_LocalReleaseVarDesc_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void CALLBACK ITypeInfo_ReleaseVarDesc_Proxy(
+    ITypeInfo* This,
+    VARDESC* pVarDesc);
+HRESULT __RPC_STUB ITypeInfo_ReleaseVarDesc_Stub(
+    ITypeInfo* This);
+
 #define INTERFACE ITypeInfo2
 DECLARE_INTERFACE_(ITypeInfo2,ITypeInfo)
 {
@@ -704,6 +1004,161 @@
 #define ITypeLib_ReleaseTLibAttr(p,a) (p)->lpVtbl->ReleaseTLibAttr(p,a)
 #endif
 
+HRESULT CALLBACK ITypeLib_RemoteGetTypeInfoCount_Proxy(
+    ITypeLib* This,
+    UINT* pcTInfo);
+void __RPC_STUB ITypeLib_RemoteGetTypeInfoCount_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+UINT CALLBACK ITypeLib_GetTypeInfoCount_Proxy(
+    ITypeLib* This);
+HRESULT __RPC_STUB ITypeLib_GetTypeInfoCount_Stub(
+    ITypeLib* This,
+    UINT* pcTInfo);
+HRESULT CALLBACK ITypeLib_GetTypeInfo_Proxy(
+    ITypeLib* This,
+    UINT index,
+    ITypeInfo** ppTInfo);
+void __RPC_STUB ITypeLib_GetTypeInfo_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeLib_GetTypeInfoType_Proxy(
+    ITypeLib* This,
+    UINT index,
+    TYPEKIND* pTKind);
+void __RPC_STUB ITypeLib_GetTypeInfoType_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeLib_GetTypeInfoOfGuid_Proxy(
+    ITypeLib* This,
+    REFGUID guid,
+    ITypeInfo** ppTinfo);
+void __RPC_STUB ITypeLib_GetTypeInfoOfGuid_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeLib_RemoteGetLibAttr_Proxy(
+    ITypeLib* This,
+    LPTLIBATTR* ppTLibAttr,
+    CLEANLOCALSTORAGE* pDummy);
+void __RPC_STUB ITypeLib_RemoteGetLibAttr_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeLib_GetLibAttr_Proxy(
+    ITypeLib* This,
+    TLIBATTR** ppTLibAttr);
+HRESULT __RPC_STUB ITypeLib_GetLibAttr_Stub(
+    ITypeLib* This,
+    LPTLIBATTR* ppTLibAttr,
+    CLEANLOCALSTORAGE* pDummy);
+HRESULT CALLBACK ITypeLib_GetTypeComp_Proxy(
+    ITypeLib* This,
+    ITypeComp** ppTComp);
+void __RPC_STUB ITypeLib_GetTypeComp_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeLib_RemoteGetDocumentation_Proxy(
+    ITypeLib* This,
+    INT index,
+    DWORD refPtrFlags,
+    BSTR* pBstrName,
+    BSTR* pBstrDocString,
+    DWORD* pdwHelpContext,
+    BSTR* pBstrHelpFile);
+void __RPC_STUB ITypeLib_RemoteGetDocumentation_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeLib_GetDocumentation_Proxy(
+    ITypeLib* This,
+    INT index,
+    BSTR* pBstrName,
+    BSTR* pBstrDocString,
+    DWORD* pdwHelpContext,
+    BSTR* pBstrHelpFile);
+HRESULT __RPC_STUB ITypeLib_GetDocumentation_Stub(
+    ITypeLib* This,
+    INT index,
+    DWORD refPtrFlags,
+    BSTR* pBstrName,
+    BSTR* pBstrDocString,
+    DWORD* pdwHelpContext,
+    BSTR* pBstrHelpFile);
+HRESULT CALLBACK ITypeLib_RemoteIsName_Proxy(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    BOOL* pfName,
+    BSTR* pBstrLibName);
+void __RPC_STUB ITypeLib_RemoteIsName_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeLib_IsName_Proxy(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    BOOL* pfName);
+HRESULT __RPC_STUB ITypeLib_IsName_Stub(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    BOOL* pfName,
+    BSTR* pBstrLibName);
+HRESULT CALLBACK ITypeLib_RemoteFindName_Proxy(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    ITypeInfo** ppTInfo,
+    MEMBERID* rgMemId,
+    USHORT* pcFound,
+    BSTR* pBstrLibName);
+void __RPC_STUB ITypeLib_RemoteFindName_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK ITypeLib_FindName_Proxy(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    ITypeInfo** ppTInfo,
+    MEMBERID* rgMemId,
+    USHORT* pcFound);
+HRESULT __RPC_STUB ITypeLib_FindName_Stub(
+    ITypeLib* This,
+    LPOLESTR szNameBuf,
+    ULONG lHashVal,
+    ITypeInfo** ppTInfo,
+    MEMBERID* rgMemId,
+    USHORT* pcFound,
+    BSTR* pBstrLibName);
+HRESULT CALLBACK ITypeLib_LocalReleaseTLibAttr_Proxy(
+    ITypeLib* This);
+void __RPC_STUB ITypeLib_LocalReleaseTLibAttr_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void CALLBACK ITypeLib_ReleaseTLibAttr_Proxy(
+    ITypeLib* This,
+    TLIBATTR* pTLibAttr);
+HRESULT __RPC_STUB ITypeLib_ReleaseTLibAttr_Stub(
+    ITypeLib* This);
+
 #define INTERFACE ITypeLib2
 DECLARE_INTERFACE_(ITypeLib2,ITypeLib)
 {