ReactOS 0.4.17-dev-934-g091855f
server.c
Go to the documentation of this file.
1/*
2 * DirectPlay8 Server
3 *
4 * Copyright 2004 Raphael Junqueira
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 *
20 */
21
22
23#include <stdarg.h>
24
25#define COBJMACROS
26#include "windef.h"
27#include "winbase.h"
28#include "wingdi.h"
29#include "winuser.h"
30#include "objbase.h"
31#include "ocidl.h"
32#include "wine/debug.h"
33
34#include "dpnet_private.h"
35
37{
38 IDirectPlay8Server IDirectPlay8Server_iface;
40
44
46 void *data;
49
51
52static inline IDirectPlay8ServerImpl *impl_from_IDirectPlay8Server(IDirectPlay8Server *iface)
53{
54 return CONTAINING_RECORD(iface, IDirectPlay8ServerImpl, IDirectPlay8Server_iface);
55}
56
57static HRESULT WINAPI IDirectPlay8ServerImpl_QueryInterface(IDirectPlay8Server *iface, REFIID riid, void **ppv)
58{
60
61 TRACE("%p %s %p\n", This, debugstr_guid(riid), ppv);
62
64 IsEqualGUID(riid, &IID_IDirectPlay8Server))
65 {
66 TRACE("(%p)->(IID_IDirectPlay8Server %p)\n", This, ppv);
67 *ppv = &This->IDirectPlay8Server_iface;
68 }
69 else {
70 WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
71 *ppv = NULL;
72 return E_NOINTERFACE;
73 }
74
75 IUnknown_AddRef((IUnknown*)*ppv);
76 return S_OK;
77}
78
79static ULONG WINAPI IDirectPlay8ServerImpl_AddRef(IDirectPlay8Server *iface)
80{
83
84 TRACE("(%p) ref=%ld\n", This, ref);
85
86 return ref;
87}
88
89static ULONG WINAPI IDirectPlay8ServerImpl_Release(IDirectPlay8Server *iface)
90{
93
94 TRACE("(%p) ref=%ld\n", This, ref);
95
96 if (!ref)
97 {
98 free(This->servername);
99 free(This->data);
100 free(This);
101 }
102
103 return ref;
104}
105
106static HRESULT WINAPI IDirectPlay8ServerImpl_Initialize(IDirectPlay8Server *iface, PVOID pvUserContext,
108{
110 TRACE("(%p)->(%p %p %ld)\n", This, pvUserContext, pfn, dwFlags);
111
112 if(!pfn)
113 return DPNERR_INVALIDPARAM;
114
115 This->usercontext = pvUserContext;
116 This->msghandler = pfn;
117 This->flags = dwFlags;
118
119 init_winsock();
120
121 return DPN_OK;
122}
123
124static HRESULT WINAPI IDirectPlay8ServerImpl_EnumServiceProviders(IDirectPlay8Server *iface, const GUID *pguidServiceProvider,
125 const GUID *pguidApplication, DPN_SERVICE_PROVIDER_INFO *pSPInfoBuffer, PDWORD pcbEnumData,
126 PDWORD pcReturned, DWORD dwFlags)
127{
129 TRACE("(%p)->(%s %s %p %p %p %ld)\n", This, debugstr_guid(pguidServiceProvider), debugstr_guid(pguidApplication),
130 pSPInfoBuffer, pcbEnumData, pcReturned, dwFlags);
131
132 if(!This->msghandler)
134
135 if(dwFlags)
136 FIXME("Unhandled flags %lx\n", dwFlags);
137
138 if(pguidApplication)
139 FIXME("Application guid %s is currently being ignored\n", debugstr_guid(pguidApplication));
140
141 return enum_services_providers(pguidServiceProvider, pSPInfoBuffer, pcbEnumData, pcReturned);
142}
143
144static HRESULT WINAPI IDirectPlay8ServerImpl_CancelAsyncOperation(IDirectPlay8Server *iface, DPNHANDLE hAsyncHandle, DWORD dwFlags)
145{
147 FIXME("(%p)->(%ld %ld)\n", This, hAsyncHandle, dwFlags);
148 return E_NOTIMPL;
149}
150
151static HRESULT WINAPI IDirectPlay8ServerImpl_GetSendQueueInfo(IDirectPlay8Server *iface, DPNID dpnid, DWORD *pdwNumMsgs,
152 DWORD *pdwNumBytes, DWORD dwFlags)
153{
155 FIXME("(%p)->(%ld %p %p %ld)\n", This, dpnid, pdwNumMsgs, pdwNumBytes, dwFlags);
156 return E_NOTIMPL;
157}
158
159static HRESULT WINAPI IDirectPlay8ServerImpl_GetApplicationDesc(IDirectPlay8Server *iface, DPN_APPLICATION_DESC *pAppDescBuffer,
160 DWORD *pcbDataSize, DWORD dwFlags)
161{
163 FIXME("(%p)->(%p %p %ld)\n", This, pAppDescBuffer, pcbDataSize, dwFlags);
164 return E_NOTIMPL;
165}
166
167static HRESULT WINAPI IDirectPlay8ServerImpl_SetServerInfo(IDirectPlay8Server *iface, const DPN_PLAYER_INFO *pdpnPlayerInfo,
168 PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
169{
171
172 FIXME("(%p)->(%p %p %p %lx) Semi-stub\n", This, pdpnPlayerInfo, pvAsyncContext, phAsyncHandle, dwFlags);
173
174 if(!pdpnPlayerInfo)
175 return E_POINTER;
176
177 if(!This->msghandler)
179
180 if(phAsyncHandle)
181 FIXME("Async handle currently not supported.\n");
182
183 if (pdpnPlayerInfo->dwInfoFlags & DPNINFO_NAME)
184 {
185 free(This->servername);
186 This->servername = NULL;
187
188 if(pdpnPlayerInfo->pwszName)
189 {
190 This->servername = wcsdup(pdpnPlayerInfo->pwszName);
191 if (!This->servername)
192 return E_OUTOFMEMORY;
193 }
194 }
195
196 if (pdpnPlayerInfo->dwInfoFlags & DPNINFO_DATA)
197 {
198 free(This->data);
199 This->data = NULL;
200 This->datasize = 0;
201
202 if(!pdpnPlayerInfo->pvData && pdpnPlayerInfo->dwDataSize)
203 return E_POINTER;
204
205 if(pdpnPlayerInfo->dwDataSize && pdpnPlayerInfo->pvData)
206 {
207 This->data = malloc(pdpnPlayerInfo->dwDataSize);
208 if (!This->data)
209 return E_OUTOFMEMORY;
210
211 This->datasize = pdpnPlayerInfo->dwDataSize;
212
213 memcpy(This->data, pdpnPlayerInfo->pvData, pdpnPlayerInfo->dwDataSize);
214 }
215 }
216
217 /* TODO: Send DPN_MSGID_SERVER_INFO message to all players. */
218 return S_OK;
219}
220
221static HRESULT WINAPI IDirectPlay8ServerImpl_GetClientInfo(IDirectPlay8Server *iface, DPNID dpnid, DPN_PLAYER_INFO *pdpnPlayerInfo,
222 DWORD *pdwSize, DWORD dwFlags)
223{
225 FIXME("(%p)->(%ld %p %p %ld)\n", This, dpnid, pdpnPlayerInfo, pdwSize, dwFlags);
226 return E_NOTIMPL;
227}
228
229static HRESULT WINAPI IDirectPlay8ServerImpl_GetClientAddress(IDirectPlay8Server *iface, DPNID dpnid, IDirectPlay8Address **pAddress,
231{
233 FIXME("(%p)->(%ld %p %ld)\n", This, dpnid, pAddress, dwFlags);
234 return E_NOTIMPL;
235}
236
237static HRESULT WINAPI IDirectPlay8ServerImpl_GetLocalHostAddresses(IDirectPlay8Server *iface, IDirectPlay8Address **prgpAddress,
238 DWORD *pcAddress, DWORD dwFlags)
239{
241 FIXME("(%p)->(%p %p %ld)\n", This, prgpAddress, pcAddress, dwFlags);
242 return E_NOTIMPL;
243}
244
246{
248 FIXME("(%p)->(%p %ld)\n", This, pad, dwFlags);
249 return E_NOTIMPL;
250}
251
252static HRESULT WINAPI IDirectPlay8ServerImpl_Host(IDirectPlay8Server *iface, const DPN_APPLICATION_DESC *pdnAppDesc,
253 IDirectPlay8Address **prgpDeviceInfo, DWORD cDeviceInfo, const DPN_SECURITY_DESC *pdnSecurity,
254 const DPN_SECURITY_CREDENTIALS *pdnCredentials, void *pvPlayerContext, DWORD dwFlags)
255{
257 FIXME("(%p)->(%p %p %ld %p %p %p %ld)\n", This, pdnAppDesc, prgpDeviceInfo, cDeviceInfo, pdnSecurity, pdnCredentials,
258 pvPlayerContext, dwFlags);
259 return E_NOTIMPL;
260}
261
262static HRESULT WINAPI IDirectPlay8ServerImpl_SendTo(IDirectPlay8Server *iface, DPNID dpnid, const DPN_BUFFER_DESC *prgBufferDesc,
263 DWORD cBufferDesc, DWORD dwTimeOut, void *pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
264{
266 FIXME("(%p)->(%ld %p %ld %ld %p %p %ld)\n", This, dpnid, prgBufferDesc, cBufferDesc, dwTimeOut, pvAsyncContext, phAsyncHandle,
267 dwFlags);
268 return E_NOTIMPL;
269}
270
271static HRESULT WINAPI IDirectPlay8ServerImpl_CreateGroup(IDirectPlay8Server *iface, const DPN_GROUP_INFO *pdpnGroupInfo,
272 void *pvGroupContext, void *pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
273{
275 FIXME("(%p)->(%p %p %p %p %ld)\n", This, pdpnGroupInfo, pvGroupContext, pvAsyncContext, phAsyncHandle, dwFlags);
276 return E_NOTIMPL;
277}
278
279static HRESULT WINAPI IDirectPlay8ServerImpl_DestroyGroup(IDirectPlay8Server *iface, DPNID idGroup, PVOID pvAsyncContext,
280 DPNHANDLE *phAsyncHandle, DWORD dwFlags)
281{
283 FIXME("(%p)->(%ld %p %p %ld)\n", This, idGroup, pvAsyncContext, phAsyncHandle, dwFlags);
284 return E_NOTIMPL;
285}
286
287static HRESULT WINAPI IDirectPlay8ServerImpl_AddPlayerToGroup(IDirectPlay8Server *iface, DPNID idGroup, DPNID idClient,
288 PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
289{
291 FIXME("(%p)->(%ld %ld %p %p %ld)\n", This, idGroup, idClient, pvAsyncContext, phAsyncHandle, dwFlags);
292 return E_NOTIMPL;
293}
294
295static HRESULT WINAPI IDirectPlay8ServerImpl_RemovePlayerFromGroup(IDirectPlay8Server *iface, DPNID idGroup, DPNID idClient,
296 PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
297{
299 FIXME("(%p)->(%ld %ld %p %p %ld)\n", This, idGroup, idClient, pvAsyncContext, phAsyncHandle, dwFlags);
300 return E_NOTIMPL;
301}
302
303static HRESULT WINAPI IDirectPlay8ServerImpl_SetGroupInfo(IDirectPlay8Server *iface, DPNID dpnid, DPN_GROUP_INFO *pdpnGroupInfo,
304 PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
305{
307 FIXME("(%p)->(%ld %p %p %p %ld)\n", This, dpnid, pdpnGroupInfo, pvAsyncContext, phAsyncHandle, dwFlags);
308 return E_NOTIMPL;
309}
310
311static HRESULT WINAPI IDirectPlay8ServerImpl_GetGroupInfo(IDirectPlay8Server *iface, DPNID dpnid, DPN_GROUP_INFO *pdpnGroupInfo,
312 DWORD *pdwSize, DWORD dwFlags)
313{
315 FIXME("(%p)->(%ld %p %p %ld)\n", This, dpnid, pdpnGroupInfo, pdwSize, dwFlags);
316 return E_NOTIMPL;
317}
318
319static HRESULT WINAPI IDirectPlay8ServerImpl_EnumPlayersAndGroups(IDirectPlay8Server *iface, DPNID *prgdpnid, DWORD *pcdpnid, DWORD dwFlags)
320{
322 FIXME("(%p)->(%p %p %ld)\n", This, prgdpnid, pcdpnid, dwFlags);
323 return E_NOTIMPL;
324}
325
326static HRESULT WINAPI IDirectPlay8ServerImpl_EnumGroupMembers(IDirectPlay8Server *iface, DPNID dpnid, DPNID *prgdpnid, DWORD *pcdpnid, DWORD dwFlags)
327{
329 FIXME("(%p)->(%ld %p %p %ld)\n", This, dpnid, prgdpnid, pcdpnid, dwFlags);
330 return E_NOTIMPL;
331}
332
333static HRESULT WINAPI IDirectPlay8ServerImpl_Close(IDirectPlay8Server *iface, DWORD dwFlags)
334{
336 FIXME("(%p)->(%ld)\n", This, dwFlags);
337 return E_NOTIMPL;
338}
339
340static HRESULT WINAPI IDirectPlay8ServerImpl_DestroyClient(IDirectPlay8Server *iface, DPNID dpnidClient, const void *pvDestroyData,
341 DWORD dwDestroyDataSize, DWORD dwFlags)
342{
344 FIXME("(%p)->(%ld %p %ld %ld)\n", This, dpnidClient, pvDestroyData, dwDestroyDataSize, dwFlags);
345 return E_NOTIMPL;
346}
347
348static HRESULT WINAPI IDirectPlay8ServerImpl_ReturnBuffer(IDirectPlay8Server *iface, DPNHANDLE hBufferHandle, DWORD dwFlags)
349{
351 FIXME("(%p)->(%ld %ld)\n", This, hBufferHandle, dwFlags);
352 return E_NOTIMPL;
353}
354
355static HRESULT WINAPI IDirectPlay8ServerImpl_GetPlayerContext(IDirectPlay8Server *iface, DPNID dpnid, PVOID *ppvPlayerContext, DWORD dwFlags)
356{
358 FIXME("(%p)->(%ld %p %ld)\n", This, dpnid, ppvPlayerContext, dwFlags);
359 return E_NOTIMPL;
360}
361
362static HRESULT WINAPI IDirectPlay8ServerImpl_GetGroupContext(IDirectPlay8Server *iface, DPNID dpnid, PVOID *ppvGroupContext, DWORD dwFlags)
363{
365 FIXME("(%p)->(%ld %p %ld)\n", This, dpnid, ppvGroupContext, dwFlags);
366 return E_NOTIMPL;
367}
368
369static HRESULT WINAPI IDirectPlay8ServerImpl_GetCaps(IDirectPlay8Server *iface, DPN_CAPS *pdpCaps, DWORD dwFlags)
370{
372 FIXME("(%p)->(%p %ld)\n", This, pdpCaps, dwFlags);
373 return E_NOTIMPL;
374}
375
376static HRESULT WINAPI IDirectPlay8ServerImpl_SetCaps(IDirectPlay8Server *iface, const DPN_CAPS *pdpCaps, DWORD dwFlags)
377{
379 FIXME("(%p)->(%p %ld)\n", This, pdpCaps, dwFlags);
380 return E_NOTIMPL;
381}
382
383static HRESULT WINAPI IDirectPlay8ServerImpl_SetSPCaps(IDirectPlay8Server *iface, const GUID *pguidSP, const DPN_SP_CAPS *pdpspCaps, DWORD dwFlags )
384{
386 FIXME("(%p)->(%p %p %ld)\n", This, pguidSP, pdpspCaps, dwFlags);
387 return E_NOTIMPL;
388}
389
390static HRESULT WINAPI IDirectPlay8ServerImpl_GetSPCaps(IDirectPlay8Server *iface, const GUID *pguidSP, DPN_SP_CAPS *pdpspCaps, DWORD dwFlags)
391{
393 FIXME("(%p)->(%p %p %ld)\n", This, pguidSP, pdpspCaps, dwFlags);
394 return E_NOTIMPL;
395}
396
397static HRESULT WINAPI IDirectPlay8ServerImpl_GetConnectionInfo(IDirectPlay8Server *iface, DPNID dpnid,
398 DPN_CONNECTION_INFO *pdpConnectionInfo, DWORD dwFlags)
399{
401 FIXME("(%p)->(%ld %p %ld)\n", This, dpnid, pdpConnectionInfo, dwFlags);
402 return E_NOTIMPL;
403}
404
405static HRESULT WINAPI IDirectPlay8ServerImpl_RegisterLobby(IDirectPlay8Server *iface, DPNHANDLE dpnHandle,
406 struct IDirectPlay8LobbiedApplication *pIDP8LobbiedApplication, DWORD dwFlags)
407{
409 FIXME("(%p)->(%ld %p %ld)\n", This, dpnHandle, pIDP8LobbiedApplication, dwFlags);
410 return E_NOTIMPL;
411}
412
413static const IDirectPlay8ServerVtbl DirectPlay8ServerVtbl =
414{
449};
450
452{
454 HRESULT hr;
455
456 TRACE("(%p, %s, %p)\n", pUnkOuter, debugstr_guid(riid), ppv);
457
458 *ppv = NULL;
459
460 if(pUnkOuter)
462
464 if (!server)
465 return E_OUTOFMEMORY;
466
467 server->IDirectPlay8Server_iface.lpVtbl = &DirectPlay8ServerVtbl;
468 server->ref = 1;
469 server->usercontext = NULL;
470 server->msghandler = NULL;
471 server->flags = 0;
472
473 hr = IDirectPlay8Server_QueryInterface(&server->IDirectPlay8Server_iface, riid, ppv);
474 IDirectPlay8Server_Release(&server->IDirectPlay8Server_iface);
475
476 return hr;
477}
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
static ULONG WINAPI IDirectPlay8ServerImpl_Release(IDirectPlay8Server *iface)
Definition: server.c:89
static HRESULT WINAPI IDirectPlay8ServerImpl_QueryInterface(IDirectPlay8Server *iface, REFIID riid, void **ppv)
Definition: server.c:57
static HRESULT WINAPI IDirectPlay8ServerImpl_GetClientAddress(IDirectPlay8Server *iface, DPNID dpnid, IDirectPlay8Address **pAddress, DWORD dwFlags)
Definition: server.c:229
static HRESULT WINAPI IDirectPlay8ServerImpl_GetConnectionInfo(IDirectPlay8Server *iface, DPNID dpnid, DPN_CONNECTION_INFO *pdpConnectionInfo, DWORD dwFlags)
Definition: server.c:397
static HRESULT WINAPI IDirectPlay8ServerImpl_CreateGroup(IDirectPlay8Server *iface, const DPN_GROUP_INFO *pdpnGroupInfo, void *pvGroupContext, void *pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
Definition: server.c:271
static HRESULT WINAPI IDirectPlay8ServerImpl_GetCaps(IDirectPlay8Server *iface, DPN_CAPS *pdpCaps, DWORD dwFlags)
Definition: server.c:369
static HRESULT WINAPI IDirectPlay8ServerImpl_SetGroupInfo(IDirectPlay8Server *iface, DPNID dpnid, DPN_GROUP_INFO *pdpnGroupInfo, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
Definition: server.c:303
static HRESULT WINAPI IDirectPlay8ServerImpl_GetClientInfo(IDirectPlay8Server *iface, DPNID dpnid, DPN_PLAYER_INFO *pdpnPlayerInfo, DWORD *pdwSize, DWORD dwFlags)
Definition: server.c:221
static HRESULT WINAPI IDirectPlay8ServerImpl_GetPlayerContext(IDirectPlay8Server *iface, DPNID dpnid, PVOID *ppvPlayerContext, DWORD dwFlags)
Definition: server.c:355
static HRESULT WINAPI IDirectPlay8ServerImpl_Close(IDirectPlay8Server *iface, DWORD dwFlags)
Definition: server.c:333
static HRESULT WINAPI IDirectPlay8ServerImpl_DestroyGroup(IDirectPlay8Server *iface, DPNID idGroup, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
Definition: server.c:279
static HRESULT WINAPI IDirectPlay8ServerImpl_RegisterLobby(IDirectPlay8Server *iface, DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *pIDP8LobbiedApplication, DWORD dwFlags)
Definition: server.c:405
static HRESULT WINAPI IDirectPlay8ServerImpl_SetCaps(IDirectPlay8Server *iface, const DPN_CAPS *pdpCaps, DWORD dwFlags)
Definition: server.c:376
static HRESULT WINAPI IDirectPlay8ServerImpl_GetApplicationDesc(IDirectPlay8Server *iface, DPN_APPLICATION_DESC *pAppDescBuffer, DWORD *pcbDataSize, DWORD dwFlags)
Definition: server.c:159
static HRESULT WINAPI IDirectPlay8ServerImpl_EnumServiceProviders(IDirectPlay8Server *iface, const GUID *pguidServiceProvider, const GUID *pguidApplication, DPN_SERVICE_PROVIDER_INFO *pSPInfoBuffer, PDWORD pcbEnumData, PDWORD pcReturned, DWORD dwFlags)
Definition: server.c:124
static HRESULT WINAPI IDirectPlay8ServerImpl_RemovePlayerFromGroup(IDirectPlay8Server *iface, DPNID idGroup, DPNID idClient, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
Definition: server.c:295
static HRESULT WINAPI IDirectPlay8ServerImpl_GetSPCaps(IDirectPlay8Server *iface, const GUID *pguidSP, DPN_SP_CAPS *pdpspCaps, DWORD dwFlags)
Definition: server.c:390
static HRESULT WINAPI IDirectPlay8ServerImpl_Host(IDirectPlay8Server *iface, const DPN_APPLICATION_DESC *pdnAppDesc, IDirectPlay8Address **prgpDeviceInfo, DWORD cDeviceInfo, const DPN_SECURITY_DESC *pdnSecurity, const DPN_SECURITY_CREDENTIALS *pdnCredentials, void *pvPlayerContext, DWORD dwFlags)
Definition: server.c:252
static HRESULT WINAPI IDirectPlay8ServerImpl_SetServerInfo(IDirectPlay8Server *iface, const DPN_PLAYER_INFO *pdpnPlayerInfo, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
Definition: server.c:167
static HRESULT WINAPI IDirectPlay8ServerImpl_GetGroupContext(IDirectPlay8Server *iface, DPNID dpnid, PVOID *ppvGroupContext, DWORD dwFlags)
Definition: server.c:362
static HRESULT WINAPI IDirectPlay8ServerImpl_SendTo(IDirectPlay8Server *iface, DPNID dpnid, const DPN_BUFFER_DESC *prgBufferDesc, DWORD cBufferDesc, DWORD dwTimeOut, void *pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
Definition: server.c:262
static HRESULT WINAPI IDirectPlay8ServerImpl_SetApplicationDesc(IDirectPlay8Server *iface, const DPN_APPLICATION_DESC *pad, DWORD dwFlags)
Definition: server.c:245
static ULONG WINAPI IDirectPlay8ServerImpl_AddRef(IDirectPlay8Server *iface)
Definition: server.c:79
static const IDirectPlay8ServerVtbl DirectPlay8ServerVtbl
Definition: server.c:413
static HRESULT WINAPI IDirectPlay8ServerImpl_GetSendQueueInfo(IDirectPlay8Server *iface, DPNID dpnid, DWORD *pdwNumMsgs, DWORD *pdwNumBytes, DWORD dwFlags)
Definition: server.c:151
static HRESULT WINAPI IDirectPlay8ServerImpl_GetLocalHostAddresses(IDirectPlay8Server *iface, IDirectPlay8Address **prgpAddress, DWORD *pcAddress, DWORD dwFlags)
Definition: server.c:237
static HRESULT WINAPI IDirectPlay8ServerImpl_ReturnBuffer(IDirectPlay8Server *iface, DPNHANDLE hBufferHandle, DWORD dwFlags)
Definition: server.c:348
static IDirectPlay8ServerImpl * impl_from_IDirectPlay8Server(IDirectPlay8Server *iface)
Definition: server.c:52
static HRESULT WINAPI IDirectPlay8ServerImpl_AddPlayerToGroup(IDirectPlay8Server *iface, DPNID idGroup, DPNID idClient, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags)
Definition: server.c:287
static HRESULT WINAPI IDirectPlay8ServerImpl_EnumPlayersAndGroups(IDirectPlay8Server *iface, DPNID *prgdpnid, DWORD *pcdpnid, DWORD dwFlags)
Definition: server.c:319
static HRESULT WINAPI IDirectPlay8ServerImpl_SetSPCaps(IDirectPlay8Server *iface, const GUID *pguidSP, const DPN_SP_CAPS *pdpspCaps, DWORD dwFlags)
Definition: server.c:383
static HRESULT WINAPI IDirectPlay8ServerImpl_CancelAsyncOperation(IDirectPlay8Server *iface, DPNHANDLE hAsyncHandle, DWORD dwFlags)
Definition: server.c:144
static HRESULT WINAPI IDirectPlay8ServerImpl_GetGroupInfo(IDirectPlay8Server *iface, DPNID dpnid, DPN_GROUP_INFO *pdpnGroupInfo, DWORD *pdwSize, DWORD dwFlags)
Definition: server.c:311
static HRESULT WINAPI IDirectPlay8ServerImpl_EnumGroupMembers(IDirectPlay8Server *iface, DPNID dpnid, DPNID *prgdpnid, DWORD *pcdpnid, DWORD dwFlags)
Definition: server.c:326
HRESULT DPNET_CreateDirectPlay8Server(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppv)
Definition: server.c:451
static HRESULT WINAPI IDirectPlay8ServerImpl_DestroyClient(IDirectPlay8Server *iface, DPNID dpnidClient, const void *pvDestroyData, DWORD dwDestroyDataSize, DWORD dwFlags)
Definition: server.c:340
static HRESULT WINAPI IDirectPlay8ServerImpl_Initialize(IDirectPlay8Server *iface, PVOID pvUserContext, PFNDPNMESSAGEHANDLER pfn, DWORD dwFlags)
Definition: server.c:106
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94
HRESULT(WINAPI * PFNDPNMESSAGEHANDLER)(PVOID, DWORD, PVOID)
Definition: dplay8.h:30
#define DPNERR_INVALIDPARAM
Definition: dplay8.h:77
#define DPN_OK
Definition: dplay8.h:75
DWORD DPNHANDLE
Definition: dplay8.h:32
#define DPNINFO_DATA
Definition: dplay8.h:190
struct _DPN_SECURITY_CREDENTIALS DPN_SECURITY_CREDENTIALS
Definition: dplay8.h:342
#define IDirectPlay8Server_Release(p)
Definition: dplay8.h:703
struct _DPN_SECURITY_DESC DPN_SECURITY_DESC
Definition: dplay8.h:343
#define DPNINFO_NAME
Definition: dplay8.h:189
#define IDirectPlay8Server_QueryInterface(p, a, b)
Definition: dplay8.h:701
DWORD DPNID
Definition: dplay8.h:31
#define DPNERR_UNINITIALIZED
Definition: dplay8.h:146
void init_winsock(void)
Definition: dpnet_main.c:55
HRESULT enum_services_providers(const GUID *const service, DPN_SERVICE_PROVIDER_INFO *const info_buffer, DWORD *const buf_size, DWORD *const returned)
Definition: peer.c:125
unsigned long DWORD
Definition: ntddk_ex.h:95
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define debugstr_guid
Definition: kernel32.h:35
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
short WCHAR
Definition: pedump.c:58
DWORD * PDWORD
Definition: pedump.c:68
long LONG
Definition: pedump.c:60
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define calloc
Definition: rosglue.h:14
#define TRACE(s)
Definition: solgame.cpp:4
WCHAR * servername
Definition: server.c:45
PFNDPNMESSAGEHANDLER msghandler
Definition: server.c:41
IDirectPlay8Server IDirectPlay8Server_iface
Definition: server.c:38
DWORD dwInfoFlags
Definition: dplay8.h:315
PWSTR pwszName
Definition: dplay8.h:316
DWORD dwDataSize
Definition: dplay8.h:318
PVOID pvData
Definition: dplay8.h:317
Definition: send.c:48
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
static rfbScreenInfoPtr server
Definition: vnc.c:74
#define WINAPI
Definition: msvc.h:6
#define E_NOINTERFACE
Definition: winerror.h:3479
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771
#define E_POINTER
Definition: winerror.h:3480