Moved scrollbar tracking code to scroll.c.
[wine] / include / rpcproxy.h
1 #ifndef __WINE_RPCPROXY_H
2 #define __WINE_RPCPROXY_H
3
4 #include "basetsd.h"
5 #include "guiddef.h"
6
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;
12
13 typedef struct tagProxyFileInfo
14 {
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;
27
28 typedef ProxyFileInfo ExtendedProxyFileInfo;
29
30 #include "rpc.h"
31 #include "rpcndr.h"
32
33 typedef struct tagCInterfaceProxyHeader
34 {
35 #ifdef USE_STUBLESS_PROXY
36   const void *pStublessProxyInfo;
37 #endif
38   const IID *piid;
39 } CInterfaceProxyHeader;
40
41 #define CINTERFACE_PROXY_VTABLE(n) \
42   struct \
43   { \
44     CInterfaceProxyHeader header; \
45     void *Vtbl[n]; \
46   }
47
48 typedef struct tagCInterfaceProxyVtbl
49 {
50   CInterfaceProxyHeader header;
51 #if defined(__GNUC__)
52   void *Vtbl[0];
53 #else
54   void *Vtbl[1];
55 #endif
56 } CInterfaceProxyVtbl;
57
58 typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)(
59   IRpcStubBuffer *This,
60   IRpcChannelBuffer *_pRpcChannelBuffer,
61   PRPC_MESSAGE _pRpcMessage,
62   DWORD *pdwStubPhase);
63
64 typedef struct tagCInterfaceStubHeader
65 {
66   const IID *piid;
67   const MIDL_SERVER_INFO *pServerInfo;
68   unsigned long DispatchTableCount;
69   const PRPC_STUB_FUNCTION *pDispatchTable;
70 } CInterfaceStubHeader;
71
72 typedef struct tagCInterfaceStubVtbl
73 {
74   CInterfaceStubHeader header;
75   ICOM_VTABLE(IRpcStubBuffer) Vtbl;
76 } CInterfaceStubVtbl;
77
78 typedef struct tagCStdStubBuffer
79 {
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;
87
88 typedef struct tagCStdPSFactoryBuffer
89 {
90   const IPSFactoryBufferVtbl *lpVtbl;
91   long RefCount;
92   const ProxyFileInfo **pProxyFileList;
93   long Filler1;
94 } CStdPSFactoryBuffer;
95
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 );
118
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
131
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 );
137
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 );
142
143 #define CSTDSTUBBUFFERRELEASE(pFactory) \
144 ULONG WINAPI CStdStubBuffer_Release(IRpcStubBuffer *This) \
145   { return NdrCStdStubBuffer_Release(This, (IPSFactoryBuffer *)pFactory); }
146
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 */
149
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 );
156
157 #endif
158
159 #endif /*__WINE_RPCDCE_H */