Added some RPC definitions.
diff --git a/include/rpcproxy.h b/include/rpcproxy.h
new file mode 100644
index 0000000..947dbe6
--- /dev/null
+++ b/include/rpcproxy.h
@@ -0,0 +1,159 @@
+#ifndef __WINE_RPCPROXY_H
+#define __WINE_RPCPROXY_H
+
+#include "basetsd.h"
+#include "guiddef.h"
+
+typedef struct tagCInterfaceStubVtbl *PCInterfaceStubVtblList;
+typedef struct tagCInterfaceProxyVtbl *PCInterfaceProxyVtblList;
+typedef const char *PCInterfaceName;
+typedef int __stdcall IIDLookupRtn( const IID *pIID, int *pIndex );
+typedef IIDLookupRtn *PIIDLookup;
+
+typedef struct tagProxyFileInfo
+{
+ const PCInterfaceProxyVtblList *pProxyVtblList;
+ const PCInterfaceStubVtblList *pStubVtblList;
+ const PCInterfaceName *pNamesArray;
+ const IID **pDelegatedIIDs;
+ const PIIDLookup pIIDLookupRtn;
+ unsigned short TableSize;
+ unsigned short TableVersion;
+ const IID **pAsyncIIDLookup;
+ LONG_PTR Filler2;
+ LONG_PTR Filler3;
+ LONG_PTR Filler4;
+} ProxyFileInfo;
+
+typedef ProxyFileInfo ExtendedProxyFileInfo;
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+typedef struct tagCInterfaceProxyHeader
+{
+#ifdef USE_STUBLESS_PROXY
+ const void *pStublessProxyInfo;
+#endif
+ const IID *piid;
+} CInterfaceProxyHeader;
+
+#define CINTERFACE_PROXY_VTABLE(n) \
+ struct \
+ { \
+ CInterfaceProxyHeader header; \
+ void *Vtbl[n]; \
+ }
+
+typedef struct tagCInterfaceProxyVtbl
+{
+ CInterfaceProxyHeader header;
+#if defined(__GNUC__)
+ void *Vtbl[0];
+#else
+ void *Vtbl[1];
+#endif
+} CInterfaceProxyVtbl;
+
+typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *pdwStubPhase);
+
+typedef struct tagCInterfaceStubHeader
+{
+ const IID *piid;
+ const MIDL_SERVER_INFO *pServerInfo;
+ unsigned long DispatchTableCount;
+ const PRPC_STUB_FUNCTION *pDispatchTable;
+} CInterfaceStubHeader;
+
+typedef struct tagCInterfaceStubVtbl
+{
+ CInterfaceStubHeader header;
+ ICOM_VTABLE(IRpcStubBuffer) Vtbl;
+} CInterfaceStubVtbl;
+
+typedef struct tagCStdStubBuffer
+{
+ const ICOM_VTABLE(IRpcStubBuffer) *lpVtbl;
+ long RefCount;
+ struct IUnknown *pvServerObject;
+ const struct ICallFactoryVtbl *pCallFactoryVtbl;
+ const IID *pAsyncIID;
+ struct IPSFactoryBuffer *pPSFactory;
+} CStdStubBuffer;
+
+typedef struct tagCStdPSFactoryBuffer
+{
+ const IPSFactoryBufferVtbl *lpVtbl;
+ long RefCount;
+ const ProxyFileInfo **pProxyFileList;
+ long Filler1;
+} CStdPSFactoryBuffer;
+
+HRESULT WINAPI
+ CStdStubBuffer_QueryInterface( IRpcStubBuffer *This, REFIID riid, void **ppvObject );
+ULONG WINAPI
+ CStdStubBuffer_AddRef( IRpcStubBuffer *This );
+ULONG WINAPI
+ CStdStubBuffer_Release( IRpcStubBuffer *This );
+ULONG WINAPI
+ NdrCStdStubBuffer_Release( IRpcStubBuffer *This, IPSFactoryBuffer *pPSF );
+HRESULT WINAPI
+ CStdStubBuffer_Connect( IRpcStubBuffer *This, IUnknown *pUnkServer );
+void WINAPI
+ CStdStubBuffer_Disconnect( IRpcStubBuffer *This );
+HRESULT WINAPI
+ CStdStubBuffer_Invoke( IRpcStubBuffer *This, RPCOLEMESSAGE *pRpcMsg, IRpcChannelBuffer *pRpcChannelBuffer );
+IRpcStubBuffer * WINAPI
+ CStdStubBuffer_IsIIDSupported( IRpcStubBuffer *This, REFIID riid );
+ULONG WINAPI
+ CStdStubBuffer_CountRefs( IRpcStubBuffer *This );
+HRESULT WINAPI
+ CStdStubBuffer_DebugServerQueryInterface( IRpcStubBuffer *This, void **ppv );
+void WINAPI
+ CStdStubBuffer_DebugServerRelease( IRpcStubBuffer *This, void *pv );
+
+#define CStdStubBuffer_METHODS \
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE \
+ CStdStubBuffer_QueryInterface, \
+ CStdStubBuffer_AddRef, \
+ CStdStubBuffer_Release, \
+ CStdStubBuffer_Connect, \
+ CStdStubBuffer_Disconnect, \
+ CStdStubBuffer_Invoke, \
+ CStdStubBuffer_IsIIDSupported, \
+ CStdStubBuffer_CountRefs, \
+ CStdStubBuffer_DebugServerQueryInterface, \
+ CStdStubBuffer_DebugServerRelease
+
+RPCRTAPI HRESULT RPC_ENTRY
+ NdrDllGetClassObject( REFCLSID rclsid, REFIID riid, void **ppv, const ProxyFileInfo **pProxyFileList,
+ const CLSID *pclsid, CStdPSFactoryBuffer *pPSFactoryBuffer );
+RPCRTAPI HRESULT RPC_ENTRY
+ NdrDllCanUnloadNow( CStdPSFactoryBuffer *pPSFactoryBuffer );
+
+RPCRTAPI HRESULT RPC_ENTRY
+ NdrDllRegisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid );
+RPCRTAPI HRESULT RPC_ENTRY
+ NdrDllUnregisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid );
+
+#define CSTDSTUBBUFFERRELEASE(pFactory) \
+ULONG WINAPI CStdStubBuffer_Release(IRpcStubBuffer *This) \
+ { return NdrCStdStubBuffer_Release(This, (IPSFactoryBuffer *)pFactory); }
+
+#if defined(__WINE__) && defined(__WINE_WINE_OBJ_OLEAUT_H)
+/* see http://msdn.microsoft.com/library/en-us/dnmsj99/html/com0199.asp?frame=true */
+
+RPCRTAPI HRESULT RPC_ENTRY
+ CreateProxyFromTypeInfo( LPTYPEINFO pTypeInfo, LPUNKNOWN pUnkOuter, REFIID riid,
+ LPRPCPROXYBUFFER *ppProxy, LPVOID *ppv );
+RPCRTAPI HRESULT RPC_ENTRY
+ CreateStubFromTypeInfo( LPTYPEINFO pTypeInfo, REFIID riid, LPUNKNOWN pUnkServer,
+ LPRPCSTUBBUFFER *ppStub );
+
+#endif
+
+#endif /*__WINE_RPCDCE_H */