1 #ifndef __WINE_RPCPROXY_H
2 #define __WINE_RPCPROXY_H
7 typedef struct tagCInterfaceStubVtbl *PCInterfaceStubVtblList;
8 typedef struct tagCInterfaceProxyVtbl *PCInterfaceProxyVtblList;
9 typedef const char *PCInterfaceName;
10 typedef int __stdcall IIDLookupRtn( const IID *pIID, int *pIndex );
11 typedef IIDLookupRtn *PIIDLookup;
13 typedef struct tagProxyFileInfo
15 const PCInterfaceProxyVtblList *pProxyVtblList;
16 const PCInterfaceStubVtblList *pStubVtblList;
17 const PCInterfaceName *pNamesArray;
18 const IID **pDelegatedIIDs;
19 const PIIDLookup pIIDLookupRtn;
20 unsigned short TableSize;
21 unsigned short TableVersion;
22 const IID **pAsyncIIDLookup;
28 typedef ProxyFileInfo ExtendedProxyFileInfo;
33 typedef struct tagCInterfaceProxyHeader
35 #ifdef USE_STUBLESS_PROXY
36 const void *pStublessProxyInfo;
39 } CInterfaceProxyHeader;
41 #define CINTERFACE_PROXY_VTABLE(n) \
44 CInterfaceProxyHeader header; \
48 typedef struct tagCInterfaceProxyVtbl
50 CInterfaceProxyHeader header;
56 } CInterfaceProxyVtbl;
58 typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)(
60 IRpcChannelBuffer *_pRpcChannelBuffer,
61 PRPC_MESSAGE _pRpcMessage,
64 typedef struct tagCInterfaceStubHeader
67 const MIDL_SERVER_INFO *pServerInfo;
68 unsigned long DispatchTableCount;
69 const PRPC_STUB_FUNCTION *pDispatchTable;
70 } CInterfaceStubHeader;
72 typedef struct tagCInterfaceStubVtbl
74 CInterfaceStubHeader header;
75 ICOM_VTABLE(IRpcStubBuffer) Vtbl;
78 typedef struct tagCStdStubBuffer
80 const ICOM_VTABLE(IRpcStubBuffer) *lpVtbl;
82 struct IUnknown *pvServerObject;
83 const struct ICallFactoryVtbl *pCallFactoryVtbl;
85 struct IPSFactoryBuffer *pPSFactory;
88 typedef struct tagCStdPSFactoryBuffer
90 const IPSFactoryBufferVtbl *lpVtbl;
92 const ProxyFileInfo **pProxyFileList;
94 } CStdPSFactoryBuffer;
97 CStdStubBuffer_QueryInterface( IRpcStubBuffer *This, REFIID riid, void **ppvObject );
99 CStdStubBuffer_AddRef( IRpcStubBuffer *This );
101 CStdStubBuffer_Release( IRpcStubBuffer *This );
103 NdrCStdStubBuffer_Release( IRpcStubBuffer *This, IPSFactoryBuffer *pPSF );
105 CStdStubBuffer_Connect( IRpcStubBuffer *This, IUnknown *pUnkServer );
107 CStdStubBuffer_Disconnect( IRpcStubBuffer *This );
109 CStdStubBuffer_Invoke( IRpcStubBuffer *This, RPCOLEMESSAGE *pRpcMsg, IRpcChannelBuffer *pRpcChannelBuffer );
110 IRpcStubBuffer * WINAPI
111 CStdStubBuffer_IsIIDSupported( IRpcStubBuffer *This, REFIID riid );
113 CStdStubBuffer_CountRefs( IRpcStubBuffer *This );
115 CStdStubBuffer_DebugServerQueryInterface( IRpcStubBuffer *This, void **ppv );
117 CStdStubBuffer_DebugServerRelease( IRpcStubBuffer *This, void *pv );
119 #define CStdStubBuffer_METHODS \
120 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE \
121 CStdStubBuffer_QueryInterface, \
122 CStdStubBuffer_AddRef, \
123 CStdStubBuffer_Release, \
124 CStdStubBuffer_Connect, \
125 CStdStubBuffer_Disconnect, \
126 CStdStubBuffer_Invoke, \
127 CStdStubBuffer_IsIIDSupported, \
128 CStdStubBuffer_CountRefs, \
129 CStdStubBuffer_DebugServerQueryInterface, \
130 CStdStubBuffer_DebugServerRelease
132 RPCRTAPI HRESULT RPC_ENTRY
133 NdrDllGetClassObject( REFCLSID rclsid, REFIID riid, void **ppv, const ProxyFileInfo **pProxyFileList,
134 const CLSID *pclsid, CStdPSFactoryBuffer *pPSFactoryBuffer );
135 RPCRTAPI HRESULT RPC_ENTRY
136 NdrDllCanUnloadNow( CStdPSFactoryBuffer *pPSFactoryBuffer );
138 RPCRTAPI HRESULT RPC_ENTRY
139 NdrDllRegisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid );
140 RPCRTAPI HRESULT RPC_ENTRY
141 NdrDllUnregisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid );
143 #define CSTDSTUBBUFFERRELEASE(pFactory) \
144 ULONG WINAPI CStdStubBuffer_Release(IRpcStubBuffer *This) \
145 { return NdrCStdStubBuffer_Release(This, (IPSFactoryBuffer *)pFactory); }
147 #if defined(__WINE__) && defined(__WINE_WINE_OBJ_OLEAUT_H)
148 /* see http://msdn.microsoft.com/library/en-us/dnmsj99/html/com0199.asp?frame=true */
150 RPCRTAPI HRESULT RPC_ENTRY
151 CreateProxyFromTypeInfo( LPTYPEINFO pTypeInfo, LPUNKNOWN pUnkOuter, REFIID riid,
152 LPRPCPROXYBUFFER *ppProxy, LPVOID *ppv );
153 RPCRTAPI HRESULT RPC_ENTRY
154 CreateStubFromTypeInfo( LPTYPEINFO pTypeInfo, REFIID riid, LPUNKNOWN pUnkServer,
155 LPRPCSTUBBUFFER *ppStub );
159 #endif /*__WINE_RPCDCE_H */