Removed inclusion of winnt.h because the porting layer shouldn't
[wine] / include / wine / obj_clientserver.h
1 /*
2  * Defines the COM interfaces and APIs related to client/server aspects.
3  */
4
5 #ifndef __WINE_WINE_OBJ_CLIENTSERVER_H
6 #define __WINE_WINE_OBJ_CLIENTSERVER_H
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif /* defined(__cplusplus) */
11
12 /*****************************************************************************
13  * Predeclare the interfaces
14  */
15 DEFINE_OLEGUID(IID_IClientSecurity,     0x0000013dL, 0, 0);
16 typedef struct IClientSecurity IClientSecurity,*LPCLIENTSECURITY;
17
18 DEFINE_OLEGUID(IID_IExternalConnection, 0x00000019L, 0, 0);
19 typedef struct IExternalConnection IExternalConnection,*LPEXTERNALCONNECTION;
20
21 DEFINE_OLEGUID(IID_IMessageFilter,      0x00000016L, 0, 0);
22 typedef struct IMessageFilter IMessageFilter,*LPMESSAGEFILTER;
23
24 DEFINE_OLEGUID(IID_IServerSecurity,     0x0000013eL, 0, 0);
25 typedef struct IServerSecurity IServerSecurity,*LPSERVERSECURITY;
26
27
28 /*****************************************************************************
29  * IClientSecurity interface
30  */
31 typedef struct tagSOLE_AUTHENTICATION_SERVICE
32 {
33     DWORD dwAuthnSvc;
34     DWORD dwAuthzSvc;
35     OLECHAR* pPrincipalName;
36     HRESULT hr;
37 } SOLE_AUTHENTICATION_SERVICE, *PSOLE_AUTHENTICATION_SERVICE;
38
39 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
40 {
41      EOAC_NONE           = 0x0,
42      EOAC_MUTUAL_AUTH    = 0x1,
43      EOAC_SECURE_REFS    = 0x2,
44      EOAC_ACCESS_CONTROL = 0x4
45 } EOLE_AUTHENTICATION_CAPABILITIES;
46
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 \
53     IUnknown_IMETHODS \
54     IClientSecurity_METHODS
55 ICOM_DEFINE(IClientSecurity,IUnknown)
56 #undef ICOM_INTERFACE
57
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)
66
67
68 /*****************************************************************************
69  * IExternalConnection interface
70  */
71 typedef enum tagEXTCONN
72 {
73     EXTCONN_STRONG   = 0x1,
74     EXTCONN_WEAK     = 0x2,
75     EXTCONN_CALLABLE = 0x4
76 } EXTCONN;
77
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 \
83     IUnknown_IMETHODS \
84     IExternalConnection_METHODS
85 ICOM_DEFINE(IExternalConnection,IUnknown)
86 #undef ICOM_INTERFACE
87
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)
95
96
97 HRESULT WINAPI CoDisconnectObject(LPUNKNOWN lpUnk, DWORD reserved);
98
99
100 /*****************************************************************************
101  * IMessageFilter interface
102  */
103 typedef enum tagCALLTYPE
104 {
105     CALLTYPE_TOPLEVEL             = 1,
106     CALLTYPE_NESTED               = 2,
107     CALLTYPE_ASYNC                = 3,
108     CALLTYPE_TOPLEVEL_CALLPENDING = 4,
109     CALLTYPE_ASYNC_CALLPENDING    = 5
110 } CALLTYPE;
111
112 typedef enum tagSERVERCALL
113 {
114     SERVERCALL_ISHANDLED  = 0,
115     SERVERCALL_REJECTED   = 1,
116     SERVERCALL_RETRYLATER = 2
117 } SERVERCALL;
118
119 typedef enum tagPENDINGTYPE
120 {
121     PENDINGTYPE_TOPLEVEL = 1,
122     PENDINGTYPE_NESTED   = 2
123 } PENDINGTYPE;
124
125 typedef enum tagPENDINGMSG
126 {
127     PENDINGMSG_CANCELCALL     = 0,
128     PENDINGMSG_WAITNOPROCESS  = 1,
129     PENDINGMSG_WAITDEFPROCESS = 2
130 } PENDINGMSG;
131
132 typedef struct tagINTERFACEINFO
133 {
134     IUnknown* pUnk;
135     IID iid;
136     WORD wMethod;
137 } INTERFACEINFO,*LPINTERFACEINFO;
138
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 \
145     IUnknown_IMETHODS \
146     IMessageFilter_METHODS
147 ICOM_DEFINE(IMessageFilter,IUnknown)
148 #undef ICOM_INTERFACE
149
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)
158
159
160 HRESULT WINAPI CoRegisterMessageFilter16(LPMESSAGEFILTER lpMessageFilter,LPMESSAGEFILTER *lplpMessageFilter);
161 HRESULT WINAPI CoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter,LPMESSAGEFILTER *lplpMessageFilter);
162
163
164 /*****************************************************************************
165  * IServerSecurity interface
166  */
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 \
174     IUnknown_IMETHODS \
175     IServerSecurity_METHODS
176 ICOM_DEFINE(IServerSecurity,IUnknown)
177 #undef ICOM_INTERFACE
178
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)
188
189
190 /*****************************************************************************
191  * Additional client API
192  */
193
194 /* FIXME: not implemented */
195 HRESULT WINAPI CoCopyProxy(IUnknown* pProxy, IUnknown** ppCopy);
196
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);
199
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);
202
203
204 /*****************************************************************************
205  * Additional server API
206  */
207
208 /* FIXME: not implemented */
209 ULONG WINAPI CoAddRefServerProcess(void);
210
211 /* FIXME: not implemented */
212 HRESULT WINAPI CoImpersonateClient(void);
213
214 /* FIXME: not implemented */
215 HRESULT WINAPI CoQueryClientBlanket(DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR16** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTHZ_HANDLE* pPrivs, DWORD* pCapabilities);
216
217 /* FIXME: not implemented */
218 HRESULT WINAPI CoReleaseServerProcess(void);
219
220 /* FIXME: not implemented */
221 HRESULT WINAPI CoRevertToSelf(void);
222
223 /* FIXME: not implemented */
224 HRESULT WINAPI CoSuspendClassObjects(void);
225
226
227 /*****************************************************************************
228  * Additional API
229  */
230
231 /* FIXME: not implemented */
232 HRESULT WINAPI CoGetCallContext(REFIID riid, void** ppInterface);
233
234 /* FIXME: not implemented */
235 HRESULT WINAPI CoGetPSClsid(REFIID riid, CLSID* pClsid);
236
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);
239
240 /* FIXME: not implemented */
241 BOOL WINAPI CoIsHandlerConnected(LPUNKNOWN pUnk);
242
243 /* FIXME: not implemented */
244 HRESULT WINAPI CoQueryAuthenticationServices(DWORD* pcAuthSvc, SOLE_AUTHENTICATION_SERVICE** asAuthSvc);
245
246 /* FIXME: not implemented */
247 HRESULT WINAPI CoRegisterPSClsid(REFIID riid, REFCLSID rclsid);
248
249 /* FIXME: not implemented */
250 HRESULT WINAPI CoResumeClassObjects(void);
251
252 #ifdef __cplusplus
253 } /* extern "C" */
254 #endif /* defined(__cplusplus) */
255
256 #endif /* __WINE_WINE_OBJ_CLIENTSERVER_H */