ReactOS 0.4.17-dev-934-g091855f
client.c
Go to the documentation of this file.
1/*
2 * DirectPlay8 Client
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 "wine/debug.h"
32
33#include "dpnet_private.h"
34
36
38{
39 IDirectPlay8LobbyClient IDirectPlay8LobbyClient_iface;
41
46
47static inline IDirectPlay8LobbyClientImpl *impl_from_IDirectPlay8LobbyClient(IDirectPlay8LobbyClient *iface)
48{
49 return CONTAINING_RECORD(iface, IDirectPlay8LobbyClientImpl, IDirectPlay8LobbyClient_iface);
50}
51
52static inline IDirectPlay8ClientImpl *impl_from_IDirectPlay8Client(IDirectPlay8Client *iface)
53{
54 return CONTAINING_RECORD(iface, IDirectPlay8ClientImpl, IDirectPlay8Client_iface);
55}
56
57/* IDirectPlay8Client IUnknown parts follow: */
59 void **ret_iface)
60{
61 if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectPlay8Client)) {
63 *ret_iface = iface;
64 return S_OK;
65 }
66
67 WARN("(%p)->(%s,%p): not found\n", iface, debugstr_guid(riid), ret_iface);
68 return E_NOINTERFACE;
69}
70
71static ULONG WINAPI IDirectPlay8ClientImpl_AddRef(IDirectPlay8Client *iface)
72{
75
76 TRACE("(%p) ref=%lu\n", This, ref);
77
78 return ref;
79}
80
81static ULONG WINAPI IDirectPlay8ClientImpl_Release(IDirectPlay8Client *iface)
82{
85
86 TRACE("(%p) ref=%lu\n", This, ref);
87
88 if (!ref)
89 {
90 free(This->username);
91 free(This->data);
92 free(This);
93 }
94 return ref;
95}
96
97/* IDirectPlay8Client Interface follow: */
98
99static HRESULT WINAPI IDirectPlay8ClientImpl_Initialize(IDirectPlay8Client *iface,
100 void * const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags)
101{
103
104 TRACE("(%p):(%p,%p,%lx)\n", This, pvUserContext, pfn, dwFlags);
105
106 if(!pfn)
107 return DPNERR_INVALIDPARAM;
108
109 This->usercontext = pvUserContext;
110 This->msghandler = pfn;
111 This->flags = dwFlags;
112
113 init_winsock();
114
115 return DPN_OK;
116}
117
119 const GUID * const pguidServiceProvider, const GUID * const pguidApplication,
120 DPN_SERVICE_PROVIDER_INFO * const pSPInfoBuffer, PDWORD const pcbEnumData,
121 PDWORD const pcReturned, const DWORD dwFlags)
122{
124 TRACE("(%p)->(%s,%s,%p,%p,%p,%lx)\n", This, debugstr_guid(pguidServiceProvider), debugstr_guid(pguidApplication),
125 pSPInfoBuffer, pcbEnumData, pcReturned, dwFlags);
126
127 if(dwFlags)
128 FIXME("Unhandled flags %lx\n", dwFlags);
129
130 if(pguidApplication)
131 FIXME("Application guid %s is currently being ignored\n", debugstr_guid(pguidApplication));
132
133 return enum_services_providers(pguidServiceProvider, pSPInfoBuffer, pcbEnumData, pcReturned);
134}
135
136static HRESULT WINAPI IDirectPlay8ClientImpl_EnumHosts(IDirectPlay8Client *iface,
137 PDPN_APPLICATION_DESC const pApplicationDesc, IDirectPlay8Address * const pAddrHost,
138 IDirectPlay8Address * const pDeviceInfo, void * const pUserEnumData,
139 const DWORD dwUserEnumDataSize, const DWORD dwEnumCount, const DWORD dwRetryInterval,
140 const DWORD dwTimeOut, void * const pvUserContext, DPNHANDLE * const pAsyncHandle,
141 const DWORD dwFlags)
142{
144
145 FIXME("(%p):(%p,%p,%p,%p,%lu,%lu,%lu,%lu,%p,%p,%lx)\n", This, pApplicationDesc, pAddrHost, pDeviceInfo, pUserEnumData,
146 dwUserEnumDataSize, dwEnumCount, dwRetryInterval, dwTimeOut, pvUserContext, pAsyncHandle, dwFlags);
147
148 if(!This->msghandler)
150
151 if((dwFlags & DPNENUMHOSTS_SYNC) && pAsyncHandle)
152 return DPNERR_INVALIDPARAM;
153
154 if(dwUserEnumDataSize > This->spcaps.dwMaxEnumPayloadSize)
156
158}
159
161 const DPNHANDLE hAsyncHandle, const DWORD dwFlags)
162{
164 FIXME("(%p):(%lu,%lx): Stub\n", This, hAsyncHandle, dwFlags);
165 return DPN_OK;
166}
167
168static HRESULT WINAPI IDirectPlay8ClientImpl_Connect(IDirectPlay8Client *iface,
169 const DPN_APPLICATION_DESC * const pdnAppDesc, IDirectPlay8Address * const pHostAddr,
170 IDirectPlay8Address * const pDeviceInfo, const DPN_SECURITY_DESC * const pdnSecurity,
171 const DPN_SECURITY_CREDENTIALS * const pdnCredentials, const void * const pvUserConnectData,
172 const DWORD dwUserConnectDataSize, void * const pvAsyncContext,
173 DPNHANDLE * const phAsyncHandle, const DWORD dwFlags)
174{
176 FIXME("(%p):(%p,%p,%lx): Stub\n", This, pvAsyncContext, phAsyncHandle, dwFlags);
177 return DPN_OK;
178}
179
180static HRESULT WINAPI IDirectPlay8ClientImpl_Send(IDirectPlay8Client *iface,
181 const DPN_BUFFER_DESC * const prgBufferDesc, const DWORD cBufferDesc, const DWORD dwTimeOut,
182 void * const pvAsyncContext, DPNHANDLE * const phAsyncHandle, const DWORD dwFlags)
183{
185 FIXME("(%p):(%p,%p,%lx): Stub\n", This, pvAsyncContext, phAsyncHandle, dwFlags);
186 return DPN_OK;
187}
188
190 DWORD * const pdwNumMsgs, DWORD * const pdwNumBytes, const DWORD dwFlags)
191{
193 FIXME("(%p):(%lx): Stub\n", This, dwFlags);
194 return DPN_OK;
195}
196
198 DPN_APPLICATION_DESC * const pAppDescBuffer, DWORD * const pcbDataSize, const DWORD dwFlags)
199{
201 FIXME("(%p):(%lx): Stub\n", This, dwFlags);
202 return DPN_OK;
203}
204
205static HRESULT WINAPI IDirectPlay8ClientImpl_SetClientInfo(IDirectPlay8Client *iface,
206 const DPN_PLAYER_INFO * const pdpnPlayerInfo, void * const pvAsyncContext,
207 DPNHANDLE * const phAsyncHandle, const DWORD dwFlags)
208{
210 FIXME("(%p):(%p,%p,%lx): Semi-stub.\n", This, pvAsyncContext, phAsyncHandle, dwFlags);
211
212 if(!pdpnPlayerInfo)
213 return E_POINTER;
214
215 if(phAsyncHandle)
216 FIXME("Async handle currently not supported.\n");
217
218 if (pdpnPlayerInfo->dwInfoFlags & DPNINFO_NAME)
219 {
220 free(This->username);
221 This->username = NULL;
222
223 if(pdpnPlayerInfo->pwszName)
224 {
225 This->username = wcsdup(pdpnPlayerInfo->pwszName);
226 if (!This->username)
227 return E_OUTOFMEMORY;
228 }
229 }
230
231 if (pdpnPlayerInfo->dwInfoFlags & DPNINFO_DATA)
232 {
233 free(This->data);
234 This->data = NULL;
235 This->datasize = 0;
236
237 if(!pdpnPlayerInfo->pvData && pdpnPlayerInfo->dwDataSize)
238 return E_POINTER;
239
240 if(pdpnPlayerInfo->dwDataSize && pdpnPlayerInfo->pvData)
241 {
242 This->data = malloc(pdpnPlayerInfo->dwDataSize);
243 if (!This->data)
244 return E_OUTOFMEMORY;
245
246 This->datasize = pdpnPlayerInfo->dwDataSize;
247
248 memcpy(This->data, pdpnPlayerInfo->pvData, pdpnPlayerInfo->dwDataSize);
249 }
250 }
251
252 return DPN_OK;
253}
254
255static HRESULT WINAPI IDirectPlay8ClientImpl_GetServerInfo(IDirectPlay8Client *iface,
256 DPN_PLAYER_INFO * const pdpnPlayerInfo, DWORD * const pdwSize, const DWORD dwFlags)
257{
259 FIXME("(%p):(%lx): Stub\n", This, dwFlags);
260 return DPN_OK;
261}
262
264 IDirectPlay8Address ** const pAddress, const DWORD dwFlags)
265{
267 FIXME("(%p):(%lx): Stub\n", This, dwFlags);
268 return DPN_OK;
269}
270
271static HRESULT WINAPI IDirectPlay8ClientImpl_Close(IDirectPlay8Client *iface, const DWORD dwFlags)
272{
274 FIXME("(%p):(%lx): Stub\n", This, dwFlags);
275
276 This->msghandler = NULL;
277
278 return DPN_OK;
279}
280
281static HRESULT WINAPI IDirectPlay8ClientImpl_ReturnBuffer(IDirectPlay8Client *iface,
282 const DPNHANDLE hBufferHandle, const DWORD dwFlags)
283{
285 FIXME("(%p):(%lx): Stub\n", This, dwFlags);
286 return DPN_OK;
287}
288
289static HRESULT WINAPI IDirectPlay8ClientImpl_GetCaps(IDirectPlay8Client *iface,
290 DPN_CAPS * const pdpCaps, const DWORD dwFlags)
291{
293 FIXME("(%p):(%lx): Stub\n", This, dwFlags);
294 return DPN_OK;
295}
296
297static HRESULT WINAPI IDirectPlay8ClientImpl_SetCaps(IDirectPlay8Client *iface,
298 const DPN_CAPS * const pdpCaps, const DWORD dwFlags)
299{
301 FIXME("(%p):(%lx): Stub\n", This, dwFlags);
302 return DPN_OK;
303}
304
305static HRESULT WINAPI IDirectPlay8ClientImpl_SetSPCaps(IDirectPlay8Client *iface,
306 const GUID * const pguidSP, const DPN_SP_CAPS * const pdpspCaps, const DWORD dwFlags)
307{
309
310 TRACE("(%p)->(%p,%p,%lx): stub\n", iface, pguidSP, pdpspCaps, dwFlags);
311
312 if(!This->msghandler || pdpspCaps->dwSize != sizeof(DPN_SP_CAPS))
313 return DPNERR_INVALIDPARAM;
314
315 /* Only dwSystemBufferSize is set by this call. */
316 This->spcaps.dwSystemBufferSize = pdpspCaps->dwSystemBufferSize;
317
318 return DPN_OK;
319}
320
321static HRESULT WINAPI IDirectPlay8ClientImpl_GetSPCaps(IDirectPlay8Client *iface,
322 const GUID * const pguidSP, DPN_SP_CAPS * const pdpspCaps, const DWORD dwFlags)
323{
325
326 TRACE("(%p)->(%p,%p,%lx)\n", This, pguidSP, pdpspCaps, dwFlags);
327
328 if(!This->msghandler)
330
331 if(pdpspCaps->dwSize != sizeof(DPN_SP_CAPS))
332 {
333 return DPNERR_INVALIDPARAM;
334 }
335
336 *pdpspCaps = This->spcaps;
337
338 return DPN_OK;
339}
340
342 DPN_CONNECTION_INFO * const pdpConnectionInfo, const DWORD dwFlags)
343{
345 FIXME("(%p):(%lx): Stub\n", This, dwFlags);
346 return DPN_OK;
347}
348
349static HRESULT WINAPI IDirectPlay8ClientImpl_RegisterLobby(IDirectPlay8Client *iface,
350 const DPNHANDLE dpnHandle,
351 struct IDirectPlay8LobbiedApplication * const pIDP8LobbiedApplication, const DWORD dwFlags)
352{
354 FIXME("(%p):(%lx): Stub\n", This, dwFlags);
355 return DPN_OK;
356}
357
358static const IDirectPlay8ClientVtbl DirectPlay8Client_Vtbl =
359{
382};
383
385{
387 HRESULT hr;
388
389 TRACE("(%p, %s, %p)\n", pUnkOuter, debugstr_guid(riid), ppv);
390
391 *ppv = NULL;
392
393 if(pUnkOuter)
395
397 if (!client)
398 return E_OUTOFMEMORY;
399
400 client->IDirectPlay8Client_iface.lpVtbl = &DirectPlay8Client_Vtbl;
401 client->ref = 1;
402
403 init_dpn_sp_caps(&client->spcaps);
404
405 hr = IDirectPlay8ClientImpl_QueryInterface(&client->IDirectPlay8Client_iface, riid, ppv);
406 IDirectPlay8ClientImpl_Release(&client->IDirectPlay8Client_iface);
407
408 return hr;
409}
410
411static HRESULT WINAPI lobbyclient_QueryInterface(IDirectPlay8LobbyClient *iface, REFIID riid, void **obj)
412{
414
415 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), obj);
416
417 *obj = NULL;
418
420 IsEqualGUID(riid, &IID_IDirectPlay8LobbyClient))
421 {
422 *obj = &This->IDirectPlay8LobbyClient_iface;
423 IUnknown_AddRef( (IUnknown*)*obj);
424
425 return DPN_OK;
426 }
427
428 WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),obj);
429 return E_NOINTERFACE;
430}
431
432static ULONG WINAPI lobbyclient_AddRef(IDirectPlay8LobbyClient *iface)
433{
436
437 TRACE("(%p) ref=%lu\n", This, ref);
438
439 return ref;
440}
441
442static ULONG WINAPI lobbyclient_Release(IDirectPlay8LobbyClient *iface)
443{
446
447 TRACE("(%p) ref=%lu\n", This, ref);
448
449 if (!ref)
450 {
451 free(This);
452 }
453
454 return ref;
455}
456
457static HRESULT WINAPI lobbyclient_Initialize(IDirectPlay8LobbyClient *iface, void *context,
458 PFNDPNMESSAGEHANDLER msghandler, DWORD flags)
459{
461
462 TRACE("(%p):(%p,%p,%lx)\n", This, context, msghandler, flags);
463
464 if(!msghandler)
465 return E_POINTER;
466
467 This->usercontext = context;
468 This->msghandler = msghandler;
469 This->flags = flags;
470
471 init_winsock();
472
473 return DPN_OK;
474}
475
476static HRESULT WINAPI lobbyclient_EnumLocalPrograms(IDirectPlay8LobbyClient *iface, GUID* guidapplication,
477 BYTE *enumdata, DWORD *enumDataSize, DWORD *items, DWORD flags)
478{
480
481 FIXME("(%p)->(%p %p %p %p 0x%08lx)\n", This, guidapplication, enumdata, enumDataSize, items, flags);
482
483 if(enumDataSize)
484 *enumDataSize = 0;
485
486 return S_OK;
487}
488
489static HRESULT WINAPI lobbyclient_ConnectApplication(IDirectPlay8LobbyClient *iface, DPL_CONNECT_INFO *connectioninfo,
490 void *connectioncontext, DPNHANDLE *application, DWORD timeout,
491 DWORD flags)
492{
494
495 FIXME("(%p)->(%p %p %p %lu 0x%08lx)\n", This, connectioninfo, connectioncontext, application, timeout, flags);
496
497 return E_NOTIMPL;
498}
499
500static HRESULT WINAPI lobbyclient_Send(IDirectPlay8LobbyClient *iface, DPNHANDLE connection, BYTE *buffer, DWORD buffersize, DWORD flags)
501{
503
504 FIXME("(%p)->(%lu %p %lu 0x%08lx)\n", This, connection, buffer, buffersize, flags);
505
506 return E_NOTIMPL;
507}
508
510{
512
513 FIXME("(%p)->(%lu 0x%08lx)\n", This, connection, flags);
514
515 return E_NOTIMPL;
516}
517
518static HRESULT WINAPI lobbyclient_Close(IDirectPlay8LobbyClient *iface, DWORD flags)
519{
521
522 FIXME("(%p)->(0x%08lx)\n", This, flags);
523
524 return E_NOTIMPL;
525}
526
527static HRESULT WINAPI lobbyclient_GetConnectionSettings(IDirectPlay8LobbyClient *iface, DPNHANDLE connection, DPL_CONNECTION_SETTINGS *sessioninfo, DWORD *infosize, DWORD flags)
528{
530
531 FIXME("(%p)->(%lu %p %p 0x%08lx)\n", This, connection, sessioninfo, infosize, flags);
532
533 return E_NOTIMPL;
534}
535
536static HRESULT WINAPI lobbyclient_SetConnectionSettings(IDirectPlay8LobbyClient *iface, DPNHANDLE connection, const DPL_CONNECTION_SETTINGS *sessioninfo, DWORD flags)
537{
539
540 FIXME("(%p)->(%lu %p 0x%08lx)\n", This, connection, sessioninfo, flags);
541
542 return E_NOTIMPL;
543}
544
545static const IDirectPlay8LobbyClientVtbl DirectPlay8LobbiedClient_Vtbl =
546{
558};
559
561{
563 HRESULT ret;
564
565 TRACE("%p (%p, %s, %p)\n", iface, outer, debugstr_guid(riid), obj);
566
567 client = calloc(1, sizeof(*client));
568 if (!client)
569 {
570 *obj = NULL;
571 return E_OUTOFMEMORY;
572 }
573
574 client->IDirectPlay8LobbyClient_iface.lpVtbl = &DirectPlay8LobbiedClient_Vtbl;
575 client->ref = 1;
576
577 ret = lobbyclient_QueryInterface(&client->IDirectPlay8LobbyClient_iface, riid, obj);
578 lobbyclient_Release(&client->IDirectPlay8LobbyClient_iface);
579
580 return ret;
581}
#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 const IDirectPlay8ClientVtbl DirectPlay8Client_Vtbl
Definition: client.c:358
static HRESULT WINAPI lobbyclient_SetConnectionSettings(IDirectPlay8LobbyClient *iface, DPNHANDLE connection, const DPL_CONNECTION_SETTINGS *sessioninfo, DWORD flags)
Definition: client.c:536
static HRESULT WINAPI lobbyclient_ReleaseApplication(IDirectPlay8LobbyClient *iface, DPNHANDLE connection, DWORD flags)
Definition: client.c:509
static HRESULT WINAPI IDirectPlay8ClientImpl_ReturnBuffer(IDirectPlay8Client *iface, const DPNHANDLE hBufferHandle, const DWORD dwFlags)
Definition: client.c:281
static HRESULT WINAPI IDirectPlay8ClientImpl_GetSPCaps(IDirectPlay8Client *iface, const GUID *const pguidSP, DPN_SP_CAPS *const pdpspCaps, const DWORD dwFlags)
Definition: client.c:321
static HRESULT WINAPI IDirectPlay8ClientImpl_CancelAsyncOperation(IDirectPlay8Client *iface, const DPNHANDLE hAsyncHandle, const DWORD dwFlags)
Definition: client.c:160
static HRESULT WINAPI IDirectPlay8ClientImpl_QueryInterface(IDirectPlay8Client *iface, REFIID riid, void **ret_iface)
Definition: client.c:58
static HRESULT WINAPI IDirectPlay8ClientImpl_EnumServiceProviders(IDirectPlay8Client *iface, const GUID *const pguidServiceProvider, const GUID *const pguidApplication, DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer, PDWORD const pcbEnumData, PDWORD const pcReturned, const DWORD dwFlags)
Definition: client.c:118
static IDirectPlay8LobbyClientImpl * impl_from_IDirectPlay8LobbyClient(IDirectPlay8LobbyClient *iface)
Definition: client.c:47
static ULONG WINAPI lobbyclient_AddRef(IDirectPlay8LobbyClient *iface)
Definition: client.c:432
static HRESULT WINAPI IDirectPlay8ClientImpl_Close(IDirectPlay8Client *iface, const DWORD dwFlags)
Definition: client.c:271
static HRESULT WINAPI IDirectPlay8ClientImpl_RegisterLobby(IDirectPlay8Client *iface, const DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *const pIDP8LobbiedApplication, const DWORD dwFlags)
Definition: client.c:349
static HRESULT WINAPI lobbyclient_EnumLocalPrograms(IDirectPlay8LobbyClient *iface, GUID *guidapplication, BYTE *enumdata, DWORD *enumDataSize, DWORD *items, DWORD flags)
Definition: client.c:476
static HRESULT WINAPI IDirectPlay8ClientImpl_Connect(IDirectPlay8Client *iface, const DPN_APPLICATION_DESC *const pdnAppDesc, IDirectPlay8Address *const pHostAddr, IDirectPlay8Address *const pDeviceInfo, const DPN_SECURITY_DESC *const pdnSecurity, const DPN_SECURITY_CREDENTIALS *const pdnCredentials, const void *const pvUserConnectData, const DWORD dwUserConnectDataSize, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
Definition: client.c:168
static HRESULT WINAPI IDirectPlay8ClientImpl_GetSendQueueInfo(IDirectPlay8Client *iface, DWORD *const pdwNumMsgs, DWORD *const pdwNumBytes, const DWORD dwFlags)
Definition: client.c:189
static HRESULT WINAPI IDirectPlay8ClientImpl_GetApplicationDesc(IDirectPlay8Client *iface, DPN_APPLICATION_DESC *const pAppDescBuffer, DWORD *const pcbDataSize, const DWORD dwFlags)
Definition: client.c:197
HRESULT DPNET_CreateDirectPlay8Client(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppv)
Definition: client.c:384
static ULONG WINAPI lobbyclient_Release(IDirectPlay8LobbyClient *iface)
Definition: client.c:442
static HRESULT WINAPI IDirectPlay8ClientImpl_GetCaps(IDirectPlay8Client *iface, DPN_CAPS *const pdpCaps, const DWORD dwFlags)
Definition: client.c:289
static HRESULT WINAPI IDirectPlay8ClientImpl_SetCaps(IDirectPlay8Client *iface, const DPN_CAPS *const pdpCaps, const DWORD dwFlags)
Definition: client.c:297
static HRESULT WINAPI IDirectPlay8ClientImpl_GetConnectionInfo(IDirectPlay8Client *iface, DPN_CONNECTION_INFO *const pdpConnectionInfo, const DWORD dwFlags)
Definition: client.c:341
static HRESULT WINAPI lobbyclient_GetConnectionSettings(IDirectPlay8LobbyClient *iface, DPNHANDLE connection, DPL_CONNECTION_SETTINGS *sessioninfo, DWORD *infosize, DWORD flags)
Definition: client.c:527
static HRESULT WINAPI IDirectPlay8ClientImpl_EnumHosts(IDirectPlay8Client *iface, PDPN_APPLICATION_DESC const pApplicationDesc, IDirectPlay8Address *const pAddrHost, IDirectPlay8Address *const pDeviceInfo, void *const pUserEnumData, const DWORD dwUserEnumDataSize, const DWORD dwEnumCount, const DWORD dwRetryInterval, const DWORD dwTimeOut, void *const pvUserContext, DPNHANDLE *const pAsyncHandle, const DWORD dwFlags)
Definition: client.c:136
static IDirectPlay8ClientImpl * impl_from_IDirectPlay8Client(IDirectPlay8Client *iface)
Definition: client.c:52
static HRESULT WINAPI lobbyclient_ConnectApplication(IDirectPlay8LobbyClient *iface, DPL_CONNECT_INFO *connectioninfo, void *connectioncontext, DPNHANDLE *application, DWORD timeout, DWORD flags)
Definition: client.c:489
static ULONG WINAPI IDirectPlay8ClientImpl_AddRef(IDirectPlay8Client *iface)
Definition: client.c:71
static ULONG WINAPI IDirectPlay8ClientImpl_Release(IDirectPlay8Client *iface)
Definition: client.c:81
static HRESULT WINAPI lobbyclient_Send(IDirectPlay8LobbyClient *iface, DPNHANDLE connection, BYTE *buffer, DWORD buffersize, DWORD flags)
Definition: client.c:500
static const IDirectPlay8LobbyClientVtbl DirectPlay8LobbiedClient_Vtbl
Definition: client.c:545
static HRESULT WINAPI IDirectPlay8ClientImpl_Initialize(IDirectPlay8Client *iface, void *const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags)
Definition: client.c:99
static HRESULT WINAPI lobbyclient_Close(IDirectPlay8LobbyClient *iface, DWORD flags)
Definition: client.c:518
static HRESULT WINAPI lobbyclient_Initialize(IDirectPlay8LobbyClient *iface, void *context, PFNDPNMESSAGEHANDLER msghandler, DWORD flags)
Definition: client.c:457
HRESULT DPNET_CreateDirectPlay8LobbyClient(IClassFactory *iface, IUnknown *outer, REFIID riid, void **obj)
Definition: client.c:560
static HRESULT WINAPI IDirectPlay8ClientImpl_SetClientInfo(IDirectPlay8Client *iface, const DPN_PLAYER_INFO *const pdpnPlayerInfo, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
Definition: client.c:205
static HRESULT WINAPI lobbyclient_QueryInterface(IDirectPlay8LobbyClient *iface, REFIID riid, void **obj)
Definition: client.c:411
static HRESULT WINAPI IDirectPlay8ClientImpl_GetServerAddress(IDirectPlay8Client *iface, IDirectPlay8Address **const pAddress, const DWORD dwFlags)
Definition: client.c:263
static HRESULT WINAPI IDirectPlay8ClientImpl_Send(IDirectPlay8Client *iface, const DPN_BUFFER_DESC *const prgBufferDesc, const DWORD cBufferDesc, const DWORD dwTimeOut, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
Definition: client.c:180
static HRESULT WINAPI IDirectPlay8ClientImpl_GetServerInfo(IDirectPlay8Client *iface, DPN_PLAYER_INFO *const pdpnPlayerInfo, DWORD *const pdwSize, const DWORD dwFlags)
Definition: client.c:255
static HRESULT WINAPI IDirectPlay8ClientImpl_SetSPCaps(IDirectPlay8Client *iface, const GUID *const pguidSP, const DPN_SP_CAPS *const pdpspCaps, const DWORD dwFlags)
Definition: client.c:305
HINTERNET connection
Definition: port.c:65
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
struct _DPN_SECURITY_DESC DPN_SECURITY_DESC
Definition: dplay8.h:343
#define DPNERR_ENUMQUERYTOOLARGE
Definition: dplay8.h:103
#define IDirectPlay8Client_AddRef(p)
Definition: dplay8.h:605
#define DPNSUCCESS_PENDING
Definition: dplay8.h:73
#define DPNINFO_NAME
Definition: dplay8.h:189
#define DPNENUMHOSTS_SYNC
Definition: dplay8.h:179
#define DPNERR_UNINITIALIZED
Definition: dplay8.h:146
void init_winsock(void)
Definition: dpnet_main.c:55
void init_dpn_sp_caps(DPN_SP_CAPS *dpnspcaps)
Definition: peer.c:622
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
return ret
Definition: mutex.c:147
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint buffer
Definition: glext.h:5915
GLbitfield flags
Definition: glext.h:7161
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
static IUnknown * outer
Definition: compobj.c:82
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
static TCHAR * items[]
Definition: page1.c:45
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
static FILE * client
Definition: client.c:37
#define TRACE(s)
Definition: solgame.cpp:4
PFNDPNMESSAGEHANDLER msghandler
Definition: client.c:42
IDirectPlay8LobbyClient IDirectPlay8LobbyClient_iface
Definition: client.c:39
DWORD dwInfoFlags
Definition: dplay8.h:315
PWSTR pwszName
Definition: dplay8.h:316
DWORD dwDataSize
Definition: dplay8.h:318
PVOID pvData
Definition: dplay8.h:317
DWORD dwSystemBufferSize
Definition: dplay8.h:339
DWORD dwSize
Definition: dplay8.h:331
Definition: http.c:7252
Definition: send.c:48
Definition: dhcpd.h:248
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
#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
unsigned char BYTE
Definition: xxhash.c:193