Thawed some freezes.
[wine/wine-kai.git] / include / rpcproxy.h
blob947dbe6c5877ee065bd8516414378d51f02292f9
1 #ifndef __WINE_RPCPROXY_H
2 #define __WINE_RPCPROXY_H
4 #include "basetsd.h"
5 #include "guiddef.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;
23 LONG_PTR Filler2;
24 LONG_PTR Filler3;
25 LONG_PTR Filler4;
26 } ProxyFileInfo;
28 typedef ProxyFileInfo ExtendedProxyFileInfo;
30 #include "rpc.h"
31 #include "rpcndr.h"
33 typedef struct tagCInterfaceProxyHeader
35 #ifdef USE_STUBLESS_PROXY
36 const void *pStublessProxyInfo;
37 #endif
38 const IID *piid;
39 } CInterfaceProxyHeader;
41 #define CINTERFACE_PROXY_VTABLE(n) \
42 struct \
43 { \
44 CInterfaceProxyHeader header; \
45 void *Vtbl[n]; \
48 typedef struct tagCInterfaceProxyVtbl
50 CInterfaceProxyHeader header;
51 #if defined(__GNUC__)
52 void *Vtbl[0];
53 #else
54 void *Vtbl[1];
55 #endif
56 } CInterfaceProxyVtbl;
58 typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)(
59 IRpcStubBuffer *This,
60 IRpcChannelBuffer *_pRpcChannelBuffer,
61 PRPC_MESSAGE _pRpcMessage,
62 DWORD *pdwStubPhase);
64 typedef struct tagCInterfaceStubHeader
66 const IID *piid;
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;
76 } CInterfaceStubVtbl;
78 typedef struct tagCStdStubBuffer
80 const ICOM_VTABLE(IRpcStubBuffer) *lpVtbl;
81 long RefCount;
82 struct IUnknown *pvServerObject;
83 const struct ICallFactoryVtbl *pCallFactoryVtbl;
84 const IID *pAsyncIID;
85 struct IPSFactoryBuffer *pPSFactory;
86 } CStdStubBuffer;
88 typedef struct tagCStdPSFactoryBuffer
90 const IPSFactoryBufferVtbl *lpVtbl;
91 long RefCount;
92 const ProxyFileInfo **pProxyFileList;
93 long Filler1;
94 } CStdPSFactoryBuffer;
96 HRESULT WINAPI
97 CStdStubBuffer_QueryInterface( IRpcStubBuffer *This, REFIID riid, void **ppvObject );
98 ULONG WINAPI
99 CStdStubBuffer_AddRef( IRpcStubBuffer *This );
100 ULONG WINAPI
101 CStdStubBuffer_Release( IRpcStubBuffer *This );
102 ULONG WINAPI
103 NdrCStdStubBuffer_Release( IRpcStubBuffer *This, IPSFactoryBuffer *pPSF );
104 HRESULT WINAPI
105 CStdStubBuffer_Connect( IRpcStubBuffer *This, IUnknown *pUnkServer );
106 void WINAPI
107 CStdStubBuffer_Disconnect( IRpcStubBuffer *This );
108 HRESULT WINAPI
109 CStdStubBuffer_Invoke( IRpcStubBuffer *This, RPCOLEMESSAGE *pRpcMsg, IRpcChannelBuffer *pRpcChannelBuffer );
110 IRpcStubBuffer * WINAPI
111 CStdStubBuffer_IsIIDSupported( IRpcStubBuffer *This, REFIID riid );
112 ULONG WINAPI
113 CStdStubBuffer_CountRefs( IRpcStubBuffer *This );
114 HRESULT WINAPI
115 CStdStubBuffer_DebugServerQueryInterface( IRpcStubBuffer *This, void **ppv );
116 void WINAPI
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 );
157 #endif
159 #endif /*__WINE_RPCDCE_H */