ReactOS 0.4.17-dev-934-g091855f
peer.c File Reference
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "objbase.h"
#include "wine/debug.h"
#include "dpnet_private.h"
Include dependency graph for peer.c:

Go to the source code of this file.

Classes

struct  IDirectPlay8PeerImpl
 

Macros

#define COBJMACROS
 

Typedefs

typedef struct IDirectPlay8PeerImpl IDirectPlay8PeerImpl
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (dpnet)
 
static IDirectPlay8PeerImpl * impl_from_IDirectPlay8Peer (IDirectPlay8Peer *iface)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_QueryInterface (IDirectPlay8Peer *iface, REFIID riid, void **ret_iface)
 
static ULONG WINAPI IDirectPlay8PeerImpl_AddRef (IDirectPlay8Peer *iface)
 
static ULONG WINAPI IDirectPlay8PeerImpl_Release (IDirectPlay8Peer *iface)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_Initialize (IDirectPlay8Peer *iface, void *const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags)
 
HRESULT enum_services_providers (const GUID *const service, DPN_SERVICE_PROVIDER_INFO *const info_buffer, DWORD *const buf_size, DWORD *const returned)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_EnumServiceProviders (IDirectPlay8Peer *iface, const GUID *const pguidServiceProvider, const GUID *const pguidApplication, DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer, DWORD *const pcbEnumData, DWORD *const pcReturned, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_CancelAsyncOperation (IDirectPlay8Peer *iface, const DPNHANDLE hAsyncHandle, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_Connect (IDirectPlay8Peer *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 pvPlayerContext, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_SendTo (IDirectPlay8Peer *iface, const DPNID dpnId, const DPN_BUFFER_DESC *pBufferDesc, const DWORD cBufferDesc, const DWORD dwTimeOut, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetSendQueueInfo (IDirectPlay8Peer *iface, const DPNID dpnid, DWORD *const pdwNumMsgs, DWORD *const pdwNumBytes, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_Host (IDirectPlay8Peer *iface, const DPN_APPLICATION_DESC *const pdnAppDesc, IDirectPlay8Address **const prgpDeviceInfo, const DWORD cDeviceInfo, const DPN_SECURITY_DESC *const pdpSecurity, const DPN_SECURITY_CREDENTIALS *const pdpCredentials, void *const pvPlayerContext, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetApplicationDesc (IDirectPlay8Peer *iface, DPN_APPLICATION_DESC *const pAppDescBuffer, DWORD *const pcbDataSize, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_SetApplicationDesc (IDirectPlay8Peer *iface, const DPN_APPLICATION_DESC *const pad, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_CreateGroup (IDirectPlay8Peer *iface, const DPN_GROUP_INFO *const pdpnGroupInfo, void *const pvGroupContext, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_DestroyGroup (IDirectPlay8Peer *iface, const DPNID idGroup, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_AddPlayerToGroup (IDirectPlay8Peer *iface, const DPNID idGroup, const DPNID idClient, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_RemovePlayerFromGroup (IDirectPlay8Peer *iface, const DPNID idGroup, const DPNID idClient, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_SetGroupInfo (IDirectPlay8Peer *iface, const DPNID dpnid, DPN_GROUP_INFO *const pdpnGroupInfo, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetGroupInfo (IDirectPlay8Peer *iface, const DPNID dpnid, DPN_GROUP_INFO *const pdpnGroupInfo, DWORD *const pdwSize, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_EnumPlayersAndGroups (IDirectPlay8Peer *iface, DPNID *const prgdpnid, DWORD *const pcdpnid, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_EnumGroupMembers (IDirectPlay8Peer *iface, const DPNID dpnid, DPNID *const prgdpnid, DWORD *const pcdpnid, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_SetPeerInfo (IDirectPlay8Peer *iface, const DPN_PLAYER_INFO *const pdpnPlayerInfo, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetPeerInfo (IDirectPlay8Peer *iface, const DPNID dpnid, DPN_PLAYER_INFO *const pdpnPlayerInfo, DWORD *const pdwSize, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetPeerAddress (IDirectPlay8Peer *iface, const DPNID dpnid, IDirectPlay8Address **const pAddress, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetLocalHostAddresses (IDirectPlay8Peer *iface, IDirectPlay8Address **const prgpAddress, DWORD *const pcAddress, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_Close (IDirectPlay8Peer *iface, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_EnumHosts (IDirectPlay8Peer *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)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_DestroyPeer (IDirectPlay8Peer *iface, const DPNID dpnidClient, const void *const pvDestroyData, const DWORD dwDestroyDataSize, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_ReturnBuffer (IDirectPlay8Peer *iface, const DPNHANDLE hBufferHandle, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetPlayerContext (IDirectPlay8Peer *iface, const DPNID dpnid, void **const ppvPlayerContext, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetGroupContext (IDirectPlay8Peer *iface, const DPNID dpnid, void **const ppvGroupContext, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetCaps (IDirectPlay8Peer *iface, DPN_CAPS *const pdpCaps, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_SetCaps (IDirectPlay8Peer *iface, const DPN_CAPS *const pdpCaps, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_SetSPCaps (IDirectPlay8Peer *iface, const GUID *const pguidSP, const DPN_SP_CAPS *const pdpspCaps, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetSPCaps (IDirectPlay8Peer *iface, const GUID *const pguidSP, DPN_SP_CAPS *const pdpspCaps, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_GetConnectionInfo (IDirectPlay8Peer *iface, const DPNID dpnid, DPN_CONNECTION_INFO *const pdpConnectionInfo, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_RegisterLobby (IDirectPlay8Peer *iface, const DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *const pIDP8LobbiedApplication, const DWORD dwFlags)
 
static HRESULT WINAPI IDirectPlay8PeerImpl_TerminateSession (IDirectPlay8Peer *iface, void *const pvTerminateData, const DWORD dwTerminateDataSize, const DWORD dwFlags)
 
void init_dpn_sp_caps (DPN_SP_CAPS *dpnspcaps)
 
HRESULT DPNET_CreateDirectPlay8Peer (IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, LPVOID *ppobj)
 

Variables

static const IDirectPlay8PeerVtbl DirectPlay8Peer_Vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 27 of file peer.c.

Typedef Documentation

◆ IDirectPlay8PeerImpl

Function Documentation

◆ DPNET_CreateDirectPlay8Peer()

HRESULT DPNET_CreateDirectPlay8Peer ( IClassFactory *  iface,
IUnknown *  pUnkOuter,
REFIID  riid,
LPVOID *  ppobj 
)

Definition at line 636 of file peer.c.

637{
639 HRESULT ret;
640
641 Client = calloc(1, sizeof(IDirectPlay8PeerImpl));
642
643 *ppobj = NULL;
644
645 if(Client == NULL)
646 {
647 WARN("Not enough memory\n");
648 return E_OUTOFMEMORY;
649 }
650
651 Client->IDirectPlay8Peer_iface.lpVtbl = &DirectPlay8Peer_Vtbl;
652 Client->ref = 1;
653 Client->usercontext = NULL;
654 Client->msghandler = NULL;
655 Client->flags = 0;
656
657 init_dpn_sp_caps(&Client->spcaps);
658
659 ret = IDirectPlay8Peer_QueryInterface(&Client->IDirectPlay8Peer_iface, riid, ppobj);
660 IDirectPlay8Peer_Release(&Client->IDirectPlay8Peer_iface);
661
662 return ret;
663}
#define WARN(fmt,...)
Definition: precomp.h:61
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define NULL
Definition: types.h:112
#define IDirectPlay8Peer_QueryInterface(p, a, b)
Definition: dplay8.h:825
#define IDirectPlay8Peer_Release(p)
Definition: dplay8.h:827
return ret
Definition: mutex.c:147
REFIID riid
Definition: atlbase.h:39
static const IDirectPlay8PeerVtbl DirectPlay8Peer_Vtbl
Definition: peer.c:581
void init_dpn_sp_caps(DPN_SP_CAPS *dpnspcaps)
Definition: peer.c:622
#define calloc
Definition: rosglue.h:14
Definition: client.c:31
LONG ref
Definition: client.c:37

◆ enum_services_providers()

HRESULT enum_services_providers ( const GUID *const  service,
DPN_SERVICE_PROVIDER_INFO *const  info_buffer,
DWORD *const  buf_size,
DWORD *const  returned 
)

Definition at line 125 of file peer.c.

127{
128 static const WCHAR serviceproviders[] = L"SOFTWARE\\Microsoft\\DirectPlay8\\Service Providers";
129 static const WCHAR friendly[] = L"Friendly Name";
130 static const WCHAR dp_adapterW[] = L"Local Area Connection - IPv4";
131 static const GUID adapter_guid = {0x4ce725f6, 0xd3c0, 0xdade, {0xba, 0x6f, 0x11, 0xf9, 0x65, 0xbc, 0x42, 0x99}};
132 DWORD req_size = 0;
133 LONG res;
134 HKEY key = NULL;
135 LONG next_key;
136 DWORD index = 0;
137 WCHAR provider[MAX_PATH];
138 DWORD size;
139
140 if(!returned || !buf_size)
141 return E_POINTER;
142
143 if(!service)
144 {
145 *returned = 0;
146
147 res = RegOpenKeyExW(HKEY_LOCAL_MACHINE, serviceproviders, 0, KEY_READ, &key);
149 return DPNERR_DOESNOTEXIST;
150
151 next_key = RegEnumKeyW( key, index, provider, MAX_PATH);
152 while(next_key == ERROR_SUCCESS)
153 {
154 size = 0;
155 res = RegGetValueW(key, provider, friendly, RRF_RT_REG_SZ, NULL, NULL, &size);
156 if(res == ERROR_SUCCESS)
157 {
158 req_size += sizeof(DPN_SERVICE_PROVIDER_INFO) + size;
159
160 (*returned)++;
161 }
162
163 index++;
164 next_key = RegEnumKeyW( key, index, provider, MAX_PATH );
165 }
166
167 }
168 else if(IsEqualGUID(service, &CLSID_DP8SP_TCPIP))
169 {
170 req_size = sizeof(DPN_SERVICE_PROVIDER_INFO) + sizeof(dp_adapterW);
171 }
172 else
173 {
174 FIXME("Application requested a provider we don't handle (yet)\n");
175 return DPNERR_DOESNOTEXIST;
176 }
177
178 if(*buf_size < req_size)
179 {
181
182 *buf_size = req_size;
184 }
185
186 if(!service)
187 {
188 int offset = 0;
189 int count = 0;
190 char *infoend = ((char *)info_buffer + (sizeof(DPN_SERVICE_PROVIDER_INFO) * (*returned)));
191
192 index = 0;
193 next_key = RegEnumKeyW( key, index, provider, MAX_PATH);
194 while(next_key == ERROR_SUCCESS)
195 {
196 size = 0;
197 res = RegGetValueW(key, provider, friendly, RRF_RT_REG_SZ, NULL, NULL, &size);
198 if(res == ERROR_SUCCESS)
199 {
200 info_buffer[count].guid = CLSID_DP8SP_TCPIP;
201 info_buffer[count].pwszName = (LPWSTR)(infoend + offset);
202
203 RegGetValueW(key, provider, friendly, RRF_RT_REG_SZ, NULL, info_buffer[count].pwszName, &size);
204
205 offset += size;
206 count++;
207 }
208
209 index++;
210 next_key = RegEnumKeyW(key, index, provider, MAX_PATH);
211 }
212 }
213 else
214 {
215 info_buffer->pwszName = (LPWSTR)(info_buffer + 1);
216 lstrcpyW(info_buffer->pwszName, dp_adapterW);
217 info_buffer->guid = adapter_guid;
218 *returned = 1;
219 }
220
222
223 return DPN_OK;
224}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
Definition: reg.c:1931
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
Definition: reg.c:2393
#define MAX_PATH
Definition: compat.h:34
#define lstrcpyW
Definition: compat.h:749
#define DPN_OK
Definition: dplay8.h:75
#define DPNERR_DOESNOTEXIST
Definition: dplay8.h:99
#define DPNERR_BUFFERTOOSMALL
Definition: dplay8.h:90
struct _DPN_SERVICE_PROVIDER_INFO DPN_SERVICE_PROVIDER_INFO
#define L(x)
Definition: resources.c:13
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint res
Definition: glext.h:9613
GLsizeiptr size
Definition: glext.h:5919
GLintptr offset
Definition: glext.h:5920
GLuint index
Definition: glext.h:6031
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
#define KEY_READ
Definition: nt_native.h:1026
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
Definition: copy.c:22
uint16_t * LPWSTR
Definition: typedefs.h:56
#define E_POINTER
Definition: winerror.h:3480
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define RRF_RT_REG_SZ
Definition: winreg.h:58

Referenced by IDirectPlay8ClientImpl_EnumServiceProviders(), IDirectPlay8PeerImpl_EnumServiceProviders(), and IDirectPlay8ServerImpl_EnumServiceProviders().

◆ IDirectPlay8PeerImpl_AddPlayerToGroup()

static HRESULT WINAPI IDirectPlay8PeerImpl_AddPlayerToGroup ( IDirectPlay8Peer *  iface,
const DPNID  idGroup,
const DPNID  idClient,
void *const  pvAsyncContext,
DPNHANDLE *const  phAsyncHandle,
const DWORD  dwFlags 
)
static

Definition at line 325 of file peer.c.

328{
329 FIXME("(%p)->(%lx,%lx,%p,%p,%lx): stub\n", iface, idGroup, idClient, pvAsyncContext, phAsyncHandle, dwFlags);
330
331 return DPNERR_GENERIC;
332}
#define DPNERR_GENERIC
Definition: dplay8.h:76
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141

◆ IDirectPlay8PeerImpl_AddRef()

static ULONG WINAPI IDirectPlay8PeerImpl_AddRef ( IDirectPlay8Peer *  iface)
static

Definition at line 76 of file peer.c.

77{
79 ULONG RefCount = InterlockedIncrement(&This->ref);
80
81 TRACE("(%p) ref=%ld\n", This, RefCount);
82
83 return RefCount;
84}
#define InterlockedIncrement
Definition: armddk.h:53
static IDirectPlay8PeerImpl * impl_from_IDirectPlay8Peer(IDirectPlay8Peer *iface)
Definition: peer.c:56
#define TRACE(s)
Definition: solgame.cpp:4
uint32_t ULONG
Definition: typedefs.h:59

◆ IDirectPlay8PeerImpl_CancelAsyncOperation()

static HRESULT WINAPI IDirectPlay8PeerImpl_CancelAsyncOperation ( IDirectPlay8Peer *  iface,
const DPNHANDLE  hAsyncHandle,
const DWORD  dwFlags 
)
static

Definition at line 243 of file peer.c.

245{
246 FIXME("(%p)->(%lx,%lx): stub\n", iface, hAsyncHandle, dwFlags);
247
248 return DPNERR_GENERIC;
249}

◆ IDirectPlay8PeerImpl_Close()

static HRESULT WINAPI IDirectPlay8PeerImpl_Close ( IDirectPlay8Peer *  iface,
const DWORD  dwFlags 
)
static

Definition at line 442 of file peer.c.

443{
444 FIXME("(%p)->(%lx): stub\n", iface, dwFlags);
445
446 return DPN_OK;
447}

◆ IDirectPlay8PeerImpl_Connect()

static HRESULT WINAPI IDirectPlay8PeerImpl_Connect ( IDirectPlay8Peer *  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  pvPlayerContext,
void *const  pvAsyncContext,
DPNHANDLE *const  phAsyncHandle,
const DWORD  dwFlags 
)
static

Definition at line 251 of file peer.c.

257{
258 FIXME("(%p)->(%p,%p,%p,%p,%p,%p,%lx,%p,%p,%p,%lx): stub\n", iface, pdnAppDesc, pHostAddr, pDeviceInfo, pdnSecurity, pdnCredentials, pvUserConnectData, dwUserConnectDataSize, pvPlayerContext, pvAsyncContext, phAsyncHandle, dwFlags);
259
260 return DPNERR_GENERIC;
261}

◆ IDirectPlay8PeerImpl_CreateGroup()

static HRESULT WINAPI IDirectPlay8PeerImpl_CreateGroup ( IDirectPlay8Peer *  iface,
const DPN_GROUP_INFO *const  pdpnGroupInfo,
void *const  pvGroupContext,
void *const  pvAsyncContext,
DPNHANDLE *const  phAsyncHandle,
const DWORD  dwFlags 
)
static

Definition at line 307 of file peer.c.

310{
311 FIXME("(%p)->(%p,%p,%p,%p,%lx): stub\n", iface, pdpnGroupInfo, pvGroupContext, pvAsyncContext, phAsyncHandle, dwFlags);
312
313 return DPNERR_GENERIC;
314}

◆ IDirectPlay8PeerImpl_DestroyGroup()

static HRESULT WINAPI IDirectPlay8PeerImpl_DestroyGroup ( IDirectPlay8Peer *  iface,
const DPNID  idGroup,
void *const  pvAsyncContext,
DPNHANDLE *const  phAsyncHandle,
const DWORD  dwFlags 
)
static

Definition at line 316 of file peer.c.

319{
320 FIXME("(%p)->(%lx,%p,%p,%lx): stub\n", iface, idGroup, pvAsyncContext, phAsyncHandle, dwFlags);
321
322 return DPNERR_GENERIC;
323}

◆ IDirectPlay8PeerImpl_DestroyPeer()

static HRESULT WINAPI IDirectPlay8PeerImpl_DestroyPeer ( IDirectPlay8Peer *  iface,
const DPNID  dpnidClient,
const void *const  pvDestroyData,
const DWORD  dwDestroyDataSize,
const DWORD  dwFlags 
)
static

Definition at line 473 of file peer.c.

475{
476 FIXME("(%p)->(%lx,%p,%lx,%lx): stub\n", iface, dpnidClient, pvDestroyData, dwDestroyDataSize, dwFlags);
477
478 return DPNERR_GENERIC;
479}

◆ IDirectPlay8PeerImpl_EnumGroupMembers()

static HRESULT WINAPI IDirectPlay8PeerImpl_EnumGroupMembers ( IDirectPlay8Peer *  iface,
const DPNID  dpnid,
DPNID *const  prgdpnid,
DWORD *const  pcdpnid,
const DWORD  dwFlags 
)
static

Definition at line 368 of file peer.c.

370{
371 FIXME("(%p)->(%lx,%p,%p,%lx): stub\n", iface, dpnid, prgdpnid, pcdpnid, dwFlags);
372
373 return DPNERR_GENERIC;
374}

◆ IDirectPlay8PeerImpl_EnumHosts()

static HRESULT WINAPI IDirectPlay8PeerImpl_EnumHosts ( IDirectPlay8Peer *  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 
)
static

Definition at line 449 of file peer.c.

454{
456
457 FIXME("(%p)->(%p,%p,%p,%p,%lx,%lx,%lx,%lx,%p,%p,%lx): stub\n",
458 This, pApplicationDesc, pAddrHost, pDeviceInfo, pUserEnumData, dwUserEnumDataSize, dwEnumCount,
459 dwRetryInterval, dwTimeOut, pvUserContext, pAsyncHandle, dwFlags);
460
461 if(!This->msghandler)
463
464 if((dwFlags & DPNENUMHOSTS_SYNC) && pAsyncHandle)
465 return DPNERR_INVALIDPARAM;
466
467 if(dwUserEnumDataSize > This->spcaps.dwMaxEnumPayloadSize)
469
471}
#define DPNERR_INVALIDPARAM
Definition: dplay8.h:77
#define DPNERR_ENUMQUERYTOOLARGE
Definition: dplay8.h:103
#define DPNSUCCESS_PENDING
Definition: dplay8.h:73
#define DPNENUMHOSTS_SYNC
Definition: dplay8.h:179
#define DPNERR_UNINITIALIZED
Definition: dplay8.h:146

◆ IDirectPlay8PeerImpl_EnumPlayersAndGroups()

static HRESULT WINAPI IDirectPlay8PeerImpl_EnumPlayersAndGroups ( IDirectPlay8Peer *  iface,
DPNID *const  prgdpnid,
DWORD *const  pcdpnid,
const DWORD  dwFlags 
)
static

Definition at line 360 of file peer.c.

362{
363 FIXME("(%p)->(%p,%p,%lx): stub\n", iface, prgdpnid, pcdpnid, dwFlags);
364
365 return DPNERR_GENERIC;
366}

◆ IDirectPlay8PeerImpl_EnumServiceProviders()

static HRESULT WINAPI IDirectPlay8PeerImpl_EnumServiceProviders ( IDirectPlay8Peer *  iface,
const GUID *const  pguidServiceProvider,
const GUID *const  pguidApplication,
DPN_SERVICE_PROVIDER_INFO *const  pSPInfoBuffer,
DWORD *const  pcbEnumData,
DWORD *const  pcReturned,
const DWORD  dwFlags 
)
static

Definition at line 226 of file peer.c.

230{
231 TRACE("(%p)->(%s,%s,%p,%p,%p,%lx)\n", iface, debugstr_guid(pguidServiceProvider), debugstr_guid(pguidApplication),
232 pSPInfoBuffer, pcbEnumData, pcReturned, dwFlags);
233
234 if(dwFlags)
235 FIXME("Unhandled flags %lx\n", dwFlags);
236
237 if(pguidApplication)
238 FIXME("Application guid %s is currently being ignored\n", debugstr_guid(pguidApplication));
239
240 return enum_services_providers(pguidServiceProvider, pSPInfoBuffer, pcbEnumData, pcReturned);
241}
#define debugstr_guid
Definition: kernel32.h:35
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

◆ IDirectPlay8PeerImpl_GetApplicationDesc()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetApplicationDesc ( IDirectPlay8Peer *  iface,
DPN_APPLICATION_DESC *const  pAppDescBuffer,
DWORD *const  pcbDataSize,
const DWORD  dwFlags 
)
static

Definition at line 291 of file peer.c.

293{
294 FIXME("(%p)->(%p,%p,%lx): stub\n", iface, pAppDescBuffer, pcbDataSize, dwFlags);
295
296 return DPNERR_GENERIC;
297}

◆ IDirectPlay8PeerImpl_GetCaps()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetCaps ( IDirectPlay8Peer *  iface,
DPN_CAPS *const  pdpCaps,
const DWORD  dwFlags 
)
static

Definition at line 505 of file peer.c.

507{
508 FIXME("(%p)->(%p,%lx): stub\n", iface, pdpCaps, dwFlags);
509
510 return DPNERR_GENERIC;
511}

◆ IDirectPlay8PeerImpl_GetConnectionInfo()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetConnectionInfo ( IDirectPlay8Peer *  iface,
const DPNID  dpnid,
DPN_CONNECTION_INFO *const  pdpConnectionInfo,
const DWORD  dwFlags 
)
static

Definition at line 557 of file peer.c.

559{
560 FIXME("(%p)->(%lx,%p,%lx): stub\n", iface, dpnid, pdpConnectionInfo, dwFlags);
561
562 return DPNERR_GENERIC;
563}

◆ IDirectPlay8PeerImpl_GetGroupContext()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetGroupContext ( IDirectPlay8Peer *  iface,
const DPNID  dpnid,
void **const  ppvGroupContext,
const DWORD  dwFlags 
)
static

Definition at line 497 of file peer.c.

499{
500 FIXME("(%p)->(%lx,%p,%lx): stub\n", iface, dpnid, ppvGroupContext, dwFlags);
501
502 return DPNERR_GENERIC;
503}

◆ IDirectPlay8PeerImpl_GetGroupInfo()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetGroupInfo ( IDirectPlay8Peer *  iface,
const DPNID  dpnid,
DPN_GROUP_INFO *const  pdpnGroupInfo,
DWORD *const  pdwSize,
const DWORD  dwFlags 
)
static

Definition at line 352 of file peer.c.

354{
355 FIXME("(%p)->(%lx,%p,%p,%lx): stub\n", iface, dpnid, pdpnGroupInfo, pdwSize, dwFlags);
356
357 return DPNERR_GENERIC;
358}

◆ IDirectPlay8PeerImpl_GetLocalHostAddresses()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetLocalHostAddresses ( IDirectPlay8Peer *  iface,
IDirectPlay8Address **const  prgpAddress,
DWORD *const  pcAddress,
const DWORD  dwFlags 
)
static

Definition at line 434 of file peer.c.

436{
437 FIXME("(%p)->(%p,%p,%lx): stub\n", iface, prgpAddress, pcAddress, dwFlags);
438
439 return DPNERR_GENERIC;
440}

◆ IDirectPlay8PeerImpl_GetPeerAddress()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetPeerAddress ( IDirectPlay8Peer *  iface,
const DPNID  dpnid,
IDirectPlay8Address **const  pAddress,
const DWORD  dwFlags 
)
static

Definition at line 426 of file peer.c.

428{
429 FIXME("(%p)->(%lx,%p,%lx): stub\n", iface, dpnid, pAddress, dwFlags);
430
431 return DPNERR_GENERIC;
432}

◆ IDirectPlay8PeerImpl_GetPeerInfo()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetPeerInfo ( IDirectPlay8Peer *  iface,
const DPNID  dpnid,
DPN_PLAYER_INFO *const  pdpnPlayerInfo,
DWORD *const  pdwSize,
const DWORD  dwFlags 
)
static

Definition at line 418 of file peer.c.

420{
421 FIXME("(%p)->(%lx,%p,%p,%lx): stub\n", iface, dpnid, pdpnPlayerInfo, pdwSize, dwFlags);
422
423 return DPNERR_GENERIC;
424}

◆ IDirectPlay8PeerImpl_GetPlayerContext()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetPlayerContext ( IDirectPlay8Peer *  iface,
const DPNID  dpnid,
void **const  ppvPlayerContext,
const DWORD  dwFlags 
)
static

Definition at line 489 of file peer.c.

491{
492 FIXME("(%p)->(%lx,%p,%lx): stub\n", iface, dpnid, ppvPlayerContext, dwFlags);
493
494 return DPNERR_GENERIC;
495}

◆ IDirectPlay8PeerImpl_GetSendQueueInfo()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetSendQueueInfo ( IDirectPlay8Peer *  iface,
const DPNID  dpnid,
DWORD *const  pdwNumMsgs,
DWORD *const  pdwNumBytes,
const DWORD  dwFlags 
)
static

Definition at line 272 of file peer.c.

274{
275 FIXME("(%p)->(%lx,%p,%p,%lx): stub\n", iface, dpnid, pdwNumMsgs, pdwNumBytes, dwFlags);
276
277 return DPNERR_GENERIC;
278}

◆ IDirectPlay8PeerImpl_GetSPCaps()

static HRESULT WINAPI IDirectPlay8PeerImpl_GetSPCaps ( IDirectPlay8Peer *  iface,
const GUID *const  pguidSP,
DPN_SP_CAPS *const  pdpspCaps,
const DWORD  dwFlags 
)
static

Definition at line 537 of file peer.c.

539{
541
542 TRACE("(%p)->(%p,%p,%lx)\n", This, pguidSP, pdpspCaps, dwFlags);
543
544 if(!This->msghandler)
546
547 if(pdpspCaps->dwSize != sizeof(DPN_SP_CAPS))
548 {
549 return DPNERR_INVALIDPARAM;
550 }
551
552 *pdpspCaps = This->spcaps;
553
554 return DPN_OK;
555}
DWORD dwSize
Definition: dplay8.h:331

◆ IDirectPlay8PeerImpl_Host()

static HRESULT WINAPI IDirectPlay8PeerImpl_Host ( IDirectPlay8Peer *  iface,
const DPN_APPLICATION_DESC *const  pdnAppDesc,
IDirectPlay8Address **const  prgpDeviceInfo,
const DWORD  cDeviceInfo,
const DPN_SECURITY_DESC *const  pdpSecurity,
const DPN_SECURITY_CREDENTIALS *const  pdpCredentials,
void *const  pvPlayerContext,
const DWORD  dwFlags 
)
static

Definition at line 280 of file peer.c.

285{
286 FIXME("(%p)->(%p,%p,%lx,%p,%p,%p,%lx): stub\n", iface, pdnAppDesc, prgpDeviceInfo, cDeviceInfo, pdpSecurity, pdpCredentials, pvPlayerContext, dwFlags);
287
288 return DPNERR_GENERIC;
289}

◆ IDirectPlay8PeerImpl_Initialize()

static HRESULT WINAPI IDirectPlay8PeerImpl_Initialize ( IDirectPlay8Peer *  iface,
void *const  pvUserContext,
const PFNDPNMESSAGEHANDLER  pfn,
const DWORD  dwFlags 
)
static

Definition at line 106 of file peer.c.

108{
110
111 TRACE("(%p)->(%p,%p,%lx): stub\n", iface, pvUserContext, pfn, dwFlags);
112
113 if(!pfn)
114 return DPNERR_INVALIDPARAM;
115
116 This->usercontext = pvUserContext;
117 This->msghandler = pfn;
118 This->flags = dwFlags;
119
120 init_winsock();
121
122 return DPN_OK;
123}
void init_winsock(void)
Definition: dpnet_main.c:55

◆ IDirectPlay8PeerImpl_QueryInterface()

static HRESULT WINAPI IDirectPlay8PeerImpl_QueryInterface ( IDirectPlay8Peer *  iface,
REFIID  riid,
void **  ret_iface 
)
static

Definition at line 62 of file peer.c.

64{
65 if(IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectPlay8Peer))
66 {
68 *ret_iface = iface;
69 return S_OK;
70 }
71
72 WARN("(%p)->(%s,%p): not found\n", iface, debugstr_guid(riid), ret_iface);
73 return E_NOINTERFACE;
74}
const GUID IID_IUnknown
#define IDirectPlay8Peer_AddRef(p)
Definition: dplay8.h:826
#define S_OK
Definition: intsafe.h:52
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ IDirectPlay8PeerImpl_RegisterLobby()

static HRESULT WINAPI IDirectPlay8PeerImpl_RegisterLobby ( IDirectPlay8Peer *  iface,
const DPNHANDLE  dpnHandle,
struct IDirectPlay8LobbiedApplication *const  pIDP8LobbiedApplication,
const DWORD  dwFlags 
)
static

Definition at line 565 of file peer.c.

567{
568 FIXME("(%p)->(%lx,%p,%lx): stub\n", iface, dpnHandle, pIDP8LobbiedApplication, dwFlags);
569
570 return DPNERR_GENERIC;
571}

◆ IDirectPlay8PeerImpl_Release()

static ULONG WINAPI IDirectPlay8PeerImpl_Release ( IDirectPlay8Peer *  iface)
static

Definition at line 86 of file peer.c.

87{
89 ULONG RefCount = InterlockedDecrement(&This->ref);
90
91 TRACE("(%p) ref=%ld\n", This, RefCount);
92
93 if(!RefCount)
94 {
95 free(This->username);
96 free(This->data);
97
98 free(This);
99 }
100
101 return RefCount;
102}
#define InterlockedDecrement
Definition: armddk.h:52
#define free
Definition: debug_ros.c:5

◆ IDirectPlay8PeerImpl_RemovePlayerFromGroup()

static HRESULT WINAPI IDirectPlay8PeerImpl_RemovePlayerFromGroup ( IDirectPlay8Peer *  iface,
const DPNID  idGroup,
const DPNID  idClient,
void *const  pvAsyncContext,
DPNHANDLE *const  phAsyncHandle,
const DWORD  dwFlags 
)
static

Definition at line 334 of file peer.c.

337{
338 FIXME("(%p)->(%lx,%lx,%p,%p,%lx): stub\n", iface, idGroup, idClient, pvAsyncContext, phAsyncHandle, dwFlags);
339
340 return DPNERR_GENERIC;
341}

◆ IDirectPlay8PeerImpl_ReturnBuffer()

static HRESULT WINAPI IDirectPlay8PeerImpl_ReturnBuffer ( IDirectPlay8Peer *  iface,
const DPNHANDLE  hBufferHandle,
const DWORD  dwFlags 
)
static

Definition at line 481 of file peer.c.

483{
484 FIXME("(%p)->(%lx,%lx): stub\n", iface, hBufferHandle, dwFlags);
485
486 return DPNERR_GENERIC;
487}

◆ IDirectPlay8PeerImpl_SendTo()

static HRESULT WINAPI IDirectPlay8PeerImpl_SendTo ( IDirectPlay8Peer *  iface,
const DPNID  dpnId,
const DPN_BUFFER_DESC *  pBufferDesc,
const DWORD  cBufferDesc,
const DWORD  dwTimeOut,
void *const  pvAsyncContext,
DPNHANDLE *const  phAsyncHandle,
const DWORD  dwFlags 
)
static

Definition at line 263 of file peer.c.

266{
267 FIXME("(%p)->(%lx,%p,%lx,%lx,%p,%p,%lx): stub\n", iface, dpnId, pBufferDesc, cBufferDesc, dwTimeOut, pvAsyncContext, phAsyncHandle, dwFlags);
268
269 return DPNERR_GENERIC;
270}

◆ IDirectPlay8PeerImpl_SetApplicationDesc()

static HRESULT WINAPI IDirectPlay8PeerImpl_SetApplicationDesc ( IDirectPlay8Peer *  iface,
const DPN_APPLICATION_DESC *const  pad,
const DWORD  dwFlags 
)
static

Definition at line 299 of file peer.c.

301{
302 FIXME("(%p)->(%p,%lx): stub\n", iface, pad, dwFlags);
303
304 return DPNERR_GENERIC;
305}

◆ IDirectPlay8PeerImpl_SetCaps()

static HRESULT WINAPI IDirectPlay8PeerImpl_SetCaps ( IDirectPlay8Peer *  iface,
const DPN_CAPS *const  pdpCaps,
const DWORD  dwFlags 
)
static

Definition at line 513 of file peer.c.

515{
516 FIXME("(%p)->(%p,%lx): stub\n", iface, pdpCaps, dwFlags);
517
518 return DPNERR_GENERIC;
519}

◆ IDirectPlay8PeerImpl_SetGroupInfo()

static HRESULT WINAPI IDirectPlay8PeerImpl_SetGroupInfo ( IDirectPlay8Peer *  iface,
const DPNID  dpnid,
DPN_GROUP_INFO *const  pdpnGroupInfo,
void *const  pvAsyncContext,
DPNHANDLE *const  phAsyncHandle,
const DWORD  dwFlags 
)
static

Definition at line 343 of file peer.c.

346{
347 FIXME("(%p)->(%lx,%p,%p,%p,%lx): stub\n", iface, dpnid, pdpnGroupInfo, pvAsyncContext, phAsyncHandle, dwFlags);
348
349 return DPNERR_GENERIC;
350}

◆ IDirectPlay8PeerImpl_SetPeerInfo()

static HRESULT WINAPI IDirectPlay8PeerImpl_SetPeerInfo ( IDirectPlay8Peer *  iface,
const DPN_PLAYER_INFO *const  pdpnPlayerInfo,
void *const  pvAsyncContext,
DPNHANDLE *const  phAsyncHandle,
const DWORD  dwFlags 
)
static

Definition at line 376 of file peer.c.

379{
381
382 FIXME("(%p)->(%p,%p,%p,%lx) Semi-stub.\n", This, pdpnPlayerInfo, pvAsyncContext, phAsyncHandle, dwFlags);
383
384 if(!pdpnPlayerInfo)
385 return E_POINTER;
386
387 if(phAsyncHandle)
388 FIXME("Async handle currently not supported.\n");
389
390 if (pdpnPlayerInfo->dwInfoFlags & DPNINFO_NAME)
391 {
392 free(This->username);
393 This->username = NULL;
394
395 if(pdpnPlayerInfo->pwszName)
396 {
397 This->username = wcsdup(pdpnPlayerInfo->pwszName);
398 if (!This->username)
399 return E_OUTOFMEMORY;
400 }
401 }
402
403 if (pdpnPlayerInfo->dwInfoFlags & DPNINFO_DATA)
404 {
405 free(This->data);
406
407 This->datasize = pdpnPlayerInfo->dwDataSize;
408 This->data = malloc(pdpnPlayerInfo->dwDataSize);
409 if (!This->data)
410 return E_OUTOFMEMORY;
411
412 memcpy(This->data, pdpnPlayerInfo->pvData, pdpnPlayerInfo->dwDataSize);
413 }
414
415 return S_OK;
416}
#define malloc
Definition: debug_ros.c:4
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94
#define DPNINFO_DATA
Definition: dplay8.h:190
#define DPNINFO_NAME
Definition: dplay8.h:189
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
DWORD dwInfoFlags
Definition: dplay8.h:315
PWSTR pwszName
Definition: dplay8.h:316
DWORD dwDataSize
Definition: dplay8.h:318
PVOID pvData
Definition: dplay8.h:317

◆ IDirectPlay8PeerImpl_SetSPCaps()

static HRESULT WINAPI IDirectPlay8PeerImpl_SetSPCaps ( IDirectPlay8Peer *  iface,
const GUID *const  pguidSP,
const DPN_SP_CAPS *const  pdpspCaps,
const DWORD  dwFlags 
)
static

Definition at line 521 of file peer.c.

523{
525
526 TRACE("(%p)->(%p,%p,%lx): stub\n", iface, pguidSP, pdpspCaps, dwFlags);
527
528 if(!This->msghandler || pdpspCaps->dwSize != sizeof(DPN_SP_CAPS))
529 return DPNERR_INVALIDPARAM;
530
531 /* Only dwSystemBufferSize is set by this call. */
532 This->spcaps.dwSystemBufferSize = pdpspCaps->dwSystemBufferSize;
533
534 return DPN_OK;
535}
DWORD dwSystemBufferSize
Definition: dplay8.h:339

◆ IDirectPlay8PeerImpl_TerminateSession()

static HRESULT WINAPI IDirectPlay8PeerImpl_TerminateSession ( IDirectPlay8Peer *  iface,
void *const  pvTerminateData,
const DWORD  dwTerminateDataSize,
const DWORD  dwFlags 
)
static

Definition at line 573 of file peer.c.

575{
576 FIXME("(%p)->(%p,%lx,%lx): stub\n", iface, pvTerminateData, dwTerminateDataSize, dwFlags);
577
578 return DPNERR_GENERIC;
579}

◆ impl_from_IDirectPlay8Peer()

static IDirectPlay8PeerImpl * impl_from_IDirectPlay8Peer ( IDirectPlay8Peer *  iface)
inlinestatic

◆ init_dpn_sp_caps()

void init_dpn_sp_caps ( DPN_SP_CAPS *  dpnspcaps)

Definition at line 622 of file peer.c.

623{
624 dpnspcaps->dwSize = sizeof(DPN_SP_CAPS);
627 dpnspcaps->dwNumThreads = 3;
628 dpnspcaps->dwDefaultEnumCount = 5;
629 dpnspcaps->dwDefaultEnumRetryInterval = 1500;
630 dpnspcaps->dwDefaultEnumTimeout = 1500;
631 dpnspcaps->dwMaxEnumPayloadSize = 983;
632 dpnspcaps->dwBuffersPerThread = 1;
633 dpnspcaps->dwSystemBufferSize = 0x10000;
634};
#define DPNSPCAPS_SUPPORTSTHREADPOOL
Definition: dplay8.h:227
#define DPNSPCAPS_SUPPORTSALLADAPTERS
Definition: dplay8.h:226
struct _DPN_SP_CAPS DPN_SP_CAPS
#define DPNSPCAPS_SUPPORTSDPNSRV
Definition: dplay8.h:224
#define DPNSPCAPS_SUPPORTSBROADCAST
Definition: dplay8.h:225
DWORD dwNumThreads
Definition: dplay8.h:333
DWORD dwDefaultEnumRetryInterval
Definition: dplay8.h:335
DWORD dwDefaultEnumCount
Definition: dplay8.h:334
DWORD dwDefaultEnumTimeout
Definition: dplay8.h:336
DWORD dwFlags
Definition: dplay8.h:332
DWORD dwMaxEnumPayloadSize
Definition: dplay8.h:337
DWORD dwBuffersPerThread
Definition: dplay8.h:338

Referenced by DPNET_CreateDirectPlay8Client(), and DPNET_CreateDirectPlay8Peer().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( dpnet  )

Variable Documentation

◆ DirectPlay8Peer_Vtbl

const IDirectPlay8PeerVtbl DirectPlay8Peer_Vtbl
static

Definition at line 581 of file peer.c.

Referenced by DPNET_CreateDirectPlay8Peer().