2 * Defines the COM interfaces and APIs related to client/server aspects.
5 #ifndef __WINE_WINE_OBJ_CLIENTSERVER_H
6 #define __WINE_WINE_OBJ_CLIENTSERVER_H
10 #endif /* defined(__cplusplus) */
12 /*****************************************************************************
13 * Predeclare the interfaces
15 DEFINE_OLEGUID(IID_IClientSecurity, 0x0000013dL, 0, 0);
16 typedef struct IClientSecurity IClientSecurity,*LPCLIENTSECURITY;
18 DEFINE_OLEGUID(IID_IExternalConnection, 0x00000019L, 0, 0);
19 typedef struct IExternalConnection IExternalConnection,*LPEXTERNALCONNECTION;
21 DEFINE_OLEGUID(IID_IMessageFilter, 0x00000016L, 0, 0);
22 typedef struct IMessageFilter IMessageFilter,*LPMESSAGEFILTER;
24 DEFINE_OLEGUID(IID_IServerSecurity, 0x0000013eL, 0, 0);
25 typedef struct IServerSecurity IServerSecurity,*LPSERVERSECURITY;
28 /*****************************************************************************
29 * IClientSecurity interface
31 typedef struct tagSOLE_AUTHENTICATION_SERVICE
35 OLECHAR* pPrincipalName;
37 } SOLE_AUTHENTICATION_SERVICE, *PSOLE_AUTHENTICATION_SERVICE;
39 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
42 EOAC_MUTUAL_AUTH = 0x1,
43 EOAC_SECURE_REFS = 0x2,
44 EOAC_ACCESS_CONTROL = 0x4
45 } EOLE_AUTHENTICATION_CAPABILITIES;
47 #define ICOM_INTERFACE IClientSecurity
48 #define IClientSecurity_METHODS \
49 ICOM_METHOD8(HRESULT,QueryBlanket, IUnknown*,pProxy, DWORD*,pAuthnSvc, DWORD*,pAuthzSvc, OLECHAR**,pServerPrincName, DWORD*,pAuthnLevel, DWORD*,pImpLevel, void**,pAuthInfo, DWORD*,pCapabilites) \
50 ICOM_METHOD8(HRESULT,SetBlanket, IUnknown*,pProxy, DWORD,pAuthnSvc, DWORD,pAuthzSvc, OLECHAR*,pServerPrincName, DWORD,pAuthnLevel, DWORD,pImpLevel, void*,pAuthInfo, DWORD,pCapabilites) \
51 ICOM_METHOD2(HRESULT,CopyProxy, IUnknown*,pProxy, IUnknown**,ppCopy)
52 #define IClientSecurity_IMETHODS \
54 IClientSecurity_METHODS
55 ICOM_DEFINE(IClientSecurity,IUnknown)
58 /*** IUnknown methods ***/
59 #define IClientSecurity_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
60 #define IClientSecurity_AddRef(p) ICOM_CALL (AddRef,p)
61 #define IClientSecurity_Release(p) ICOM_CALL (Release,p)
62 /*** IClientSecurity methods ***/
63 #define IClientSecurity_QueryBlanket(p,a,b,c,d,e,f,g,h) ICOM_CALL8(QueryBlanket,p,a,b,c,d,e,f,g,h)
64 #define IClientSecurity_SetBlanket(p,a,b,c,d,e,f,g,h) ICOM_CALL8(SetBlanket,p,a,b,c,d,e,f,g,h)
65 #define IClientSecurity_CopyProxy(p,a,b) ICOM_CALL2(CopyProxy,p,a,b)
68 /*****************************************************************************
69 * IExternalConnection interface
71 typedef enum tagEXTCONN
75 EXTCONN_CALLABLE = 0x4
78 #define ICOM_INTERFACE IExternalConnection
79 #define IExternalConnection_METHODS \
80 ICOM_METHOD2(DWORD,AddConnection, DWORD,extconn, DWORD,reserved) \
81 ICOM_METHOD3(DWORD,ReleaseConnection, DWORD,extconn, DWORD,reserved, BOOL,fLastReleaseCloses)
82 #define IExternalConnection_IMETHODS \
84 IExternalConnection_METHODS
85 ICOM_DEFINE(IExternalConnection,IUnknown)
88 /*** IUnknown methods ***/
89 #define IExternalConnection_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
90 #define IExternalConnection_AddRef(p) ICOM_CALL (AddRef,p)
91 #define IExternalConnection_Release(p) ICOM_CALL (Release,p)
92 /*** IExternalConnection methods ***/
93 #define IExternalConnection_AddConnection(p,a,b) ICOM_CALL8(AddConnection,p,a,b)
94 #define IExternalConnection_ReleaseConnection(p,a,b,c) ICOM_CALL8(ReleaseConnection,p,a,b,c)
97 HRESULT WINAPI CoDisconnectObject(LPUNKNOWN lpUnk, DWORD reserved);
100 /*****************************************************************************
101 * IMessageFilter interface
103 typedef enum tagCALLTYPE
105 CALLTYPE_TOPLEVEL = 1,
108 CALLTYPE_TOPLEVEL_CALLPENDING = 4,
109 CALLTYPE_ASYNC_CALLPENDING = 5
112 typedef enum tagSERVERCALL
114 SERVERCALL_ISHANDLED = 0,
115 SERVERCALL_REJECTED = 1,
116 SERVERCALL_RETRYLATER = 2
119 typedef enum tagPENDINGTYPE
121 PENDINGTYPE_TOPLEVEL = 1,
122 PENDINGTYPE_NESTED = 2
125 typedef enum tagPENDINGMSG
127 PENDINGMSG_CANCELCALL = 0,
128 PENDINGMSG_WAITNOPROCESS = 1,
129 PENDINGMSG_WAITDEFPROCESS = 2
132 typedef struct tagINTERFACEINFO
137 } INTERFACEINFO,*LPINTERFACEINFO;
139 #define ICOM_INTERFACE IMessageFilter
140 #define IMessageFilter_METHODS \
141 ICOM_METHOD4(DWORD,HandleInComingCall, DWORD,dwCallType, HTASK,htaskCaller, DWORD,dwTickCount, LPINTERFACEINFO,lpInterfaceInfo) \
142 ICOM_METHOD3(DWORD,RetryRejectedCall, HTASK,htaskCallee, DWORD,dwTickCount, DWORD,dwRejectType) \
143 ICOM_METHOD3(DWORD,MessagePending, HTASK,htaskCallee, DWORD,dwTickCount, DWORD,dwRejectType)
144 #define IMessageFilter_IMETHODS \
146 IMessageFilter_METHODS
147 ICOM_DEFINE(IMessageFilter,IUnknown)
148 #undef ICOM_INTERFACE
150 /*** IUnknown methods ***/
151 #define IMessageFilter_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
152 #define IMessageFilter_AddRef(p) ICOM_CALL (AddRef,p)
153 #define IMessageFilter_Release(p) ICOM_CALL (Release,p)
154 /*** IMessageFilter methods ***/
155 #define IMessageFilter_HandleInComingCall(p,a,b,c,d) ICOM_CALL4(HandleInComingCall,p,a,b,c,d)
156 #define IMessageFilter_RetryRejectedCall(p,a,b,c) ICOM_CALL3(RetryRejectedCall,p,a,b,c)
157 #define IMessageFilter_MessagePending(p,a,b,c) ICOM_CALL3(MessagePending,p,a,b,c)
160 HRESULT WINAPI CoRegisterMessageFilter16(LPMESSAGEFILTER lpMessageFilter,LPMESSAGEFILTER *lplpMessageFilter);
161 HRESULT WINAPI CoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter,LPMESSAGEFILTER *lplpMessageFilter);
164 /*****************************************************************************
165 * IServerSecurity interface
167 #define ICOM_INTERFACE IServerSecurity
168 #define IServerSecurity_METHODS \
169 ICOM_METHOD7(HRESULT,QueryBlanket, DWORD*,pAuthnSvc, DWORD*,pAuthzSvc, OLECHAR**,pServerPrincName, DWORD*,pAuthnLevel, DWORD*,pImpLevel, void**,pPrivs, DWORD*,pCapabilities) \
170 ICOM_METHOD (HRESULT,ImpersonateClient) \
171 ICOM_METHOD (HRESULT,RevertToSelf) \
172 ICOM_METHOD (BOOL, IsImpersonating)
173 #define IServerSecurity_IMETHODS \
175 IServerSecurity_METHODS
176 ICOM_DEFINE(IServerSecurity,IUnknown)
177 #undef ICOM_INTERFACE
179 /*** IUnknown methods ***/
180 #define IServerSecurity_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
181 #define IServerSecurity_AddRef(p) ICOM_CALL (AddRef,p)
182 #define IServerSecurity_Release(p) ICOM_CALL (Release,p)
183 /*** IServerSecurity methods ***/
184 #define IServerSecurity_QueryBlanket(p,a,b,c,d,e,f,g) ICOM_CALL7(QueryBlanket,p,a,b,c,d,e,f,g)
185 #define IServerSecurity_ImpersonateClient(p) ICOM_CALL (ImpersonateClient,p)
186 #define IServerSecurity_RevertToSelf(p) ICOM_CALL (RevertToSelf,p)
187 #define IServerSecurity_IsImpersonating(p) ICOM_CALL (IsImpersonating,p)
190 /*****************************************************************************
191 * Additional client API
194 /* FIXME: not implemented */
195 HRESULT WINAPI CoCopyProxy(IUnknown* pProxy, IUnknown** ppCopy);
197 /* FIXME: not implemented */
198 HRESULT WINAPI CoQueryProxyBlanket(IUnknown* pProxy, DWORD* pwAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTH_IDENTITY_HANDLE* pAuthInfo, DWORD* pCapabilites);
200 /* FIXME: not implemented */
201 HRESULT WINAPI CoSetProxyBlanket(IUnknown* pProxy, DWORD dwAuthnSvc, DWORD dwAuthzSvc, OLECHAR* pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel, RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities);
204 /*****************************************************************************
205 * Additional server API
208 /* FIXME: not implemented */
209 ULONG WINAPI CoAddRefServerProcess(void);
211 /* FIXME: not implemented */
212 HRESULT WINAPI CoImpersonateClient(void);
214 /* FIXME: not implemented */
215 HRESULT WINAPI CoQueryClientBlanket(DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR16** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTHZ_HANDLE* pPrivs, DWORD* pCapabilities);
217 /* FIXME: not implemented */
218 HRESULT WINAPI CoReleaseServerProcess(void);
220 /* FIXME: not implemented */
221 HRESULT WINAPI CoRevertToSelf(void);
223 /* FIXME: not implemented */
224 HRESULT WINAPI CoSuspendClassObjects(void);
227 /*****************************************************************************
231 /* FIXME: not implemented */
232 HRESULT WINAPI CoGetCallContext(REFIID riid, void** ppInterface);
234 /* FIXME: not implemented */
235 HRESULT WINAPI CoGetPSClsid(REFIID riid, CLSID* pClsid);
237 /* FIXME: not implemented */
238 HRESULT WINAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc, SOLE_AUTHENTICATION_SERVICE* asAuthSvc, void* pReserved1, DWORD dwAuthnLevel, DWORD dwImpLevel, void* pReserved2, DWORD dwCapabilities, void* pReserved3);
240 /* FIXME: not implemented */
241 BOOL WINAPI CoIsHandlerConnected(LPUNKNOWN pUnk);
243 /* FIXME: not implemented */
244 HRESULT WINAPI CoQueryAuthenticationServices(DWORD* pcAuthSvc, SOLE_AUTHENTICATION_SERVICE** asAuthSvc);
246 /* FIXME: not implemented */
247 HRESULT WINAPI CoRegisterPSClsid(REFIID riid, REFCLSID rclsid);
249 /* FIXME: not implemented */
250 HRESULT WINAPI CoResumeClassObjects(void);
254 #endif /* defined(__cplusplus) */
256 #endif /* __WINE_WINE_OBJ_CLIENTSERVER_H */