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
8 #include "wine/obj_base.h"
12 #endif /* defined(__cplusplus) */
14 /*****************************************************************************
15 * Predeclare the interfaces
17 DEFINE_OLEGUID(IID_IClientSecurity
, 0x0000013dL
, 0, 0);
18 typedef struct IClientSecurity IClientSecurity
,*LPCLIENTSECURITY
;
20 DEFINE_OLEGUID(IID_IExternalConnection
, 0x00000019L
, 0, 0);
21 typedef struct IExternalConnection IExternalConnection
,*LPEXTERNALCONNECTION
;
23 DEFINE_OLEGUID(IID_IMessageFilter
, 0x00000016L
, 0, 0);
24 typedef struct IMessageFilter IMessageFilter
,*LPMESSAGEFILTER
;
26 DEFINE_OLEGUID(IID_IServerSecurity
, 0x0000013eL
, 0, 0);
27 typedef struct IServerSecurity IServerSecurity
,*LPSERVERSECURITY
;
30 /*****************************************************************************
31 * IClientSecurity interface
33 typedef struct tagSOLE_AUTHENTICATION_SERVICE
37 OLECHAR
* pPrincipalName
;
39 } SOLE_AUTHENTICATION_SERVICE
, *PSOLE_AUTHENTICATION_SERVICE
;
41 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
44 EOAC_MUTUAL_AUTH
= 0x1,
45 EOAC_SECURE_REFS
= 0x2,
46 EOAC_ACCESS_CONTROL
= 0x4
47 } EOLE_AUTHENTICATION_CAPABILITIES
;
49 #define ICOM_INTERFACE IClientSecurity
50 #define IClientSecurity_METHODS \
51 ICOM_METHOD8(HRESULT,QueryBlanket, IUnknown*,pProxy, DWORD*,pAuthnSvc, DWORD*,pAuthzSvc, OLECHAR**,pServerPrincName, DWORD*,pAuthnLevel, DWORD*,pImpLevel, void**,pAuthInfo, DWORD*,pCapabilites) \
52 ICOM_METHOD8(HRESULT,SetBlanket, IUnknown*,pProxy, DWORD,pAuthnSvc, DWORD,pAuthzSvc, OLECHAR*,pServerPrincName, DWORD,pAuthnLevel, DWORD,pImpLevel, void*,pAuthInfo, DWORD,pCapabilites) \
53 ICOM_METHOD2(HRESULT,CopyProxy, IUnknown*,pProxy, IUnknown**,ppCopy)
54 #define IClientSecurity_IMETHODS \
56 IClientSecurity_METHODS
57 ICOM_DEFINE(IClientSecurity
,IUnknown
)
60 /*** IUnknown methods ***/
61 #define IClientSecurity_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
62 #define IClientSecurity_AddRef(p) ICOM_CALL (AddRef,p)
63 #define IClientSecurity_Release(p) ICOM_CALL (Release,p)
64 /*** IClientSecurity methods ***/
65 #define IClientSecurity_QueryBlanket(p,a,b,c,d,e,f,g,h) ICOM_CALL8(QueryBlanket,p,a,b,c,d,e,f,g,h)
66 #define IClientSecurity_SetBlanket(p,a,b,c,d,e,f,g,h) ICOM_CALL8(SetBlanket,p,a,b,c,d,e,f,g,h)
67 #define IClientSecurity_CopyProxy(p,a,b) ICOM_CALL2(CopyProxy,p,a,b)
70 /*****************************************************************************
71 * IExternalConnection interface
73 typedef enum tagEXTCONN
77 EXTCONN_CALLABLE
= 0x4
80 #define ICOM_INTERFACE IExternalConnection
81 #define IExternalConnection_METHODS \
82 ICOM_METHOD2(DWORD,AddConnection, DWORD,extconn, DWORD,reserved) \
83 ICOM_METHOD3(DWORD,ReleaseConnection, DWORD,extconn, DWORD,reserved, BOOL,fLastReleaseCloses)
84 #define IExternalConnection_IMETHODS \
86 IExternalConnection_METHODS
87 ICOM_DEFINE(IExternalConnection
,IUnknown
)
90 /*** IUnknown methods ***/
91 #define IExternalConnection_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
92 #define IExternalConnection_AddRef(p) ICOM_CALL (AddRef,p)
93 #define IExternalConnection_Release(p) ICOM_CALL (Release,p)
94 /*** IExternalConnection methods ***/
95 #define IExternalConnection_AddConnection(p,a,b) ICOM_CALL8(AddConnection,p,a,b)
96 #define IExternalConnection_ReleaseConnection(p,a,b,c) ICOM_CALL8(ReleaseConnection,p,a,b,c)
99 HRESULT WINAPI
CoDisconnectObject(LPUNKNOWN lpUnk
, DWORD reserved
);
102 /*****************************************************************************
103 * IMessageFilter interface
105 typedef enum tagCALLTYPE
107 CALLTYPE_TOPLEVEL
= 1,
110 CALLTYPE_TOPLEVEL_CALLPENDING
= 4,
111 CALLTYPE_ASYNC_CALLPENDING
= 5
114 typedef enum tagSERVERCALL
116 SERVERCALL_ISHANDLED
= 0,
117 SERVERCALL_REJECTED
= 1,
118 SERVERCALL_RETRYLATER
= 2
121 typedef enum tagPENDINGTYPE
123 PENDINGTYPE_TOPLEVEL
= 1,
124 PENDINGTYPE_NESTED
= 2
127 typedef enum tagPENDINGMSG
129 PENDINGMSG_CANCELCALL
= 0,
130 PENDINGMSG_WAITNOPROCESS
= 1,
131 PENDINGMSG_WAITDEFPROCESS
= 2
134 typedef struct tagINTERFACEINFO
139 } INTERFACEINFO
,*LPINTERFACEINFO
;
141 #define ICOM_INTERFACE IMessageFilter
142 #define IMessageFilter_METHODS \
143 ICOM_METHOD4(DWORD,HandleInComingCall, DWORD,dwCallType, HTASK,htaskCaller, DWORD,dwTickCount, LPINTERFACEINFO,lpInterfaceInfo) \
144 ICOM_METHOD3(DWORD,RetryRejectedCall, HTASK,htaskCallee, DWORD,dwTickCount, DWORD,dwRejectType) \
145 ICOM_METHOD3(DWORD,MessagePending, HTASK,htaskCallee, DWORD,dwTickCount, DWORD,dwRejectType)
146 #define IMessageFilter_IMETHODS \
148 IMessageFilter_METHODS
149 ICOM_DEFINE(IMessageFilter
,IUnknown
)
150 #undef ICOM_INTERFACE
152 /*** IUnknown methods ***/
153 #define IMessageFilter_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
154 #define IMessageFilter_AddRef(p) ICOM_CALL (AddRef,p)
155 #define IMessageFilter_Release(p) ICOM_CALL (Release,p)
156 /*** IMessageFilter methods ***/
157 #define IMessageFilter_HandleInComingCall(p,a,b,c,d) ICOM_CALL4(HandleInComingCall,p,a,b,c,d)
158 #define IMessageFilter_RetryRejectedCall(p,a,b,c) ICOM_CALL3(RetryRejectedCall,p,a,b,c)
159 #define IMessageFilter_MessagePending(p,a,b,c) ICOM_CALL3(MessagePending,p,a,b,c)
162 HRESULT WINAPI
CoRegisterMessageFilter16(LPMESSAGEFILTER lpMessageFilter
,LPMESSAGEFILTER
*lplpMessageFilter
);
163 HRESULT WINAPI
CoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter
,LPMESSAGEFILTER
*lplpMessageFilter
);
166 /*****************************************************************************
167 * IServerSecurity interface
169 #define ICOM_INTERFACE IServerSecurity
170 #define IServerSecurity_METHODS \
171 ICOM_METHOD7(HRESULT,QueryBlanket, DWORD*,pAuthnSvc, DWORD*,pAuthzSvc, OLECHAR**,pServerPrincName, DWORD*,pAuthnLevel, DWORD*,pImpLevel, void**,pPrivs, DWORD*,pCapabilities) \
172 ICOM_METHOD (HRESULT,ImpersonateClient) \
173 ICOM_METHOD (HRESULT,RevertToSelf) \
174 ICOM_METHOD (BOOL, IsImpersonating)
175 #define IServerSecurity_IMETHODS \
177 IServerSecurity_METHODS
178 ICOM_DEFINE(IServerSecurity
,IUnknown
)
179 #undef ICOM_INTERFACE
181 /*** IUnknown methods ***/
182 #define IServerSecurity_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
183 #define IServerSecurity_AddRef(p) ICOM_CALL (AddRef,p)
184 #define IServerSecurity_Release(p) ICOM_CALL (Release,p)
185 /*** IServerSecurity methods ***/
186 #define IServerSecurity_QueryBlanket(p,a,b,c,d,e,f,g) ICOM_CALL7(QueryBlanket,p,a,b,c,d,e,f,g)
187 #define IServerSecurity_ImpersonateClient(p) ICOM_CALL (ImpersonateClient,p)
188 #define IServerSecurity_RevertToSelf(p) ICOM_CALL (RevertToSelf,p)
189 #define IServerSecurity_IsImpersonating(p) ICOM_CALL (IsImpersonating,p)
192 /*****************************************************************************
193 * Additional client API
196 /* FIXME: not implemented */
197 HRESULT WINAPI
CoCopyProxy(IUnknown
* pProxy
, IUnknown
** ppCopy
);
199 /* FIXME: not implemented */
200 HRESULT WINAPI
CoQueryProxyBlanket(IUnknown
* pProxy
, DWORD
* pwAuthnSvc
, DWORD
* pAuthzSvc
, OLECHAR
** pServerPrincName
, DWORD
* pAuthnLevel
, DWORD
* pImpLevel
, RPC_AUTH_IDENTITY_HANDLE
* pAuthInfo
, DWORD
* pCapabilites
);
202 /* FIXME: not implemented */
203 HRESULT WINAPI
CoSetProxyBlanket(IUnknown
* pProxy
, DWORD dwAuthnSvc
, DWORD dwAuthzSvc
, OLECHAR
* pServerPrincName
, DWORD dwAuthnLevel
, DWORD dwImpLevel
, RPC_AUTH_IDENTITY_HANDLE pAuthInfo
, DWORD dwCapabilities
);
206 /*****************************************************************************
207 * Additional server API
210 /* FIXME: not implemented */
211 ULONG WINAPI
CoAddRefServerProcess(void);
213 /* FIXME: not implemented */
214 HRESULT WINAPI
CoImpersonateClient(void);
216 /* FIXME: not implemented */
217 HRESULT WINAPI
CoQueryClientBlanket(DWORD
* pAuthnSvc
, DWORD
* pAuthzSvc
, OLECHAR16
** pServerPrincName
, DWORD
* pAuthnLevel
, DWORD
* pImpLevel
, RPC_AUTHZ_HANDLE
* pPrivs
, DWORD
* pCapabilities
);
219 /* FIXME: not implemented */
220 HRESULT WINAPI
CoReleaseServerProcess(void);
222 /* FIXME: not implemented */
223 HRESULT WINAPI
CoRevertToSelf(void);
225 /* FIXME: not implemented */
226 HRESULT WINAPI
CoSuspendClassObjects(void);
229 /*****************************************************************************
233 /* FIXME: not implemented */
234 HRESULT WINAPI
CoGetCallContext(REFIID riid
, void** ppInterface
);
236 /* FIXME: not implemented */
237 HRESULT WINAPI
CoGetPSClsid(REFIID riid
, CLSID
* pClsid
);
239 /* FIXME: not implemented */
240 HRESULT WINAPI
CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc
, LONG cAuthSvc
, SOLE_AUTHENTICATION_SERVICE
* asAuthSvc
, void* pReserved1
, DWORD dwAuthnLevel
, DWORD dwImpLevel
, void* pReserved2
, DWORD dwCapabilities
, void* pReserved3
);
242 /* FIXME: not implemented */
243 BOOL WINAPI
CoIsHandlerConnected(LPUNKNOWN pUnk
);
245 /* FIXME: not implemented */
246 HRESULT WINAPI
CoQueryAuthenticationServices(DWORD
* pcAuthSvc
, SOLE_AUTHENTICATION_SERVICE
** asAuthSvc
);
248 /* FIXME: not implemented */
249 HRESULT WINAPI
CoRegisterPSClsid(REFIID riid
, REFCLSID rclsid
);
251 /* FIXME: not implemented */
252 HRESULT WINAPI
CoResumeClassObjects(void);
256 #endif /* defined(__cplusplus) */
258 #endif /* __WINE_WINE_OBJ_CLIENTSERVER_H */