114 FIXME(
"(%p)->(%p,%p%p,0x%08lx,0x%08lx): stub\n",
115 This, lpSection,
lpKey, lpData, dwDataSize, dwMaxEntries );
121 REFGUID guidDataType,
const void *lpData,
DWORD dwDataSize,
void *lpAddress,
122 DWORD *lpdwAddressSize )
126 FIXME(
"(%p)->(%s,%s,%p,0x%08lx,%p,%p): stub\n",
128 lpData, dwDataSize, lpAddress, lpdwAddressSize );
139 TRACE(
"(%p)->(%p,%p,0x%08lx,%p)\n",
140 This, lpEnumAddressCallback, lpAddress, dwAddressSize, lpContext );
142 DPL_EnumAddress( lpEnumAddressCallback, lpAddress, dwAddressSize, lpContext );
154 FIXME(
"(%p)->(%p,%p,%p,%p): stub\n",
155 This, lpSection,
lpKey, lpEnumMRUCallback, lpContext );
161 DWORD *lpdwPlayerFlags )
165 FIXME(
"(%p)->(0x%08lx,%p): stub\n",
166 This, idPlayer, lpdwPlayerFlags );
178 TRACE(
"(%p)->(0x%08lx,%p,%p,0x%08lx)\n",
201 if( *lplpData ==
NULL )
210 DWORD dwMessageBodySize,
void *lpMessageHeader )
219 TRACE(
"(%p)->(%p,0x%08lx,%p)\n",
220 This, lpMessageBody, dwMessageBodySize, lpMessageHeader );
235 TRACE(
"Incoming message has envelope of 0x%08lx, %u, %u\n",
236 lpMsg->
dwMagic, wCommandId, wVersion );
240 ERR(
"Unknown magic 0x%08lx!\n", lpMsg->
dwMagic );
246 const LPDWORD lpcHeader = lpMessageHeader;
248 TRACE(
"lpMessageHeader = [0x%08lx] [0x%08lx] [0x%08lx] [0x%08lx] [0x%08lx]\n",
249 lpcHeader[0], lpcHeader[1], lpcHeader[2], lpcHeader[3], lpcHeader[4] );
255 data.dwMessageSize = 0;
259 wCommandId, wVersion, &
data.lpMessage, &
data.dwMessageSize );
269 data.lpSPMessageHeader = lpMessageHeader;
270 data.idNameServer = 0;
273 hr =
This->dplay->dp2->spData.lpCB->Reply( &
data );
291 switch( lpMsg->dwType )
300 &
msg->dpnName, 0,
msg->lpData,
301 msg->dwDataSize,
msg->dwFlags, ... );
309 &
msg->dpnName, 0,
msg->lpData,
310 msg->dwDataSize,
msg->dwFlags, ... );
315 &
msg->dpnName, 0,
msg->lpData,
316 msg->dwDataSize,
msg->dwFlags, ... );
321 ERR(
"Corrupt msg->dwPlayerType for DPSYS_CREATEPLAYERORGROUP\n" );
342 ERR(
"Corrupt msg->dwPlayerType for DPSYS_DESTROYPLAYERORGROUP\n" );
353 hr = DP_IF_AddPlayerToGroup(
This,
msg->dpIdGroup,
msg->dpIdPlayer, ... );
361 hr = DP_IF_DeletePlayerFromGroup(
This,
msg->dpIdGroup,
msg->dpIdPlayer,
371 FIXME(
"DPSYS_SESSIONLOST not handled\n" );
380 FIXME(
"DPSYS_HOST not handled\n" );
395 hr = DP_IF_SetGroupData(
This,
msg->dpId,
msg->lpData,
msg->dwDataSize,
400 ERR(
"Corrupt msg->dwPlayerType for LPDPMSG_SETPLAYERORGROUPDATA\n" );
421 ERR(
"Corrupt msg->dwPlayerType for LPDPMSG_SETPLAYERORGROUPDATA\n" );
432 hr = DP_IF_SetSessionDesc(
This, &
msg->dpDesc );
441 hr = DP_IF_AddGroupToGroup(
This,
msg->dpIdParentGroup,
msg->dpIdGroup,
451 hr = DP_IF_DeleteGroupFromGroup(
This,
msg->dpIdParentGroup,
452 msg->dpIdGroup, ... );
461 FIXME(
"DPSYS_SECUREMESSAGE not implemented\n" );
470 FIXME(
"DPSYS_STARTSESSION not implemented\n" );
479 FIXME(
"DPSYS_CHAT not implemented\n" );
488 FIXME(
"DPSYS_SETGROUPOWNER not implemented\n" );
497 FIXME(
"DPSYS_SENDCOMPLETE not implemented\n" );
507 TRACE(
"Received user message type(?) 0x%08lx through SP.\n",
513 FIXME(
"Queue message in the receive queue. Need some context data!\n" );
517 ERR(
"Unable to perform action for msg type 0x%08lx\n", lpMsg->dwType );
535 TRACE(
"(%p)->(0x%08lx,%p,0x%08lx,0x%08lx)\n",
This, idPlayer, lpData, dwDataSize,
dwFlags );
565 DWORD *lpdwAddressSize )
569 FIXME(
"(%p)->(%p,0x%08lx,%p,%p): stub\n",
570 This, lpElements, dwElementCount, lpAddress, lpdwAddressSize );
596 TRACE(
"Undocumented dwFlags 0x%08lx used\n",
dwFlags );
605 *lpdwDataSize =
This->remote_data_size;
606 *lplpData =
This->remote_data;
608 if( !
This->remote_data )
613 *lpdwDataSize =
This->local_data_size;
614 *lplpData =
This->local_data;
616 if( !
This->local_data )
644 TRACE(
"Undocumented dwFlags 0x%08lx used\n",
dwFlags );
648 lpSpData =
malloc( dwDataSize );
655 This->remote_data_size = dwDataSize;
656 This->remote_data = lpSpData;
661 This->local_data = lpSpData;
662 This->local_data_size = dwDataSize;
673 FIXME(
"(%p)->(%p,0x%08lx): stub\n",
674 This, unknownA, unknownB );
723 TRACE(
"Creating SPPlayer data struct\n" );
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static HRESULT DP_IF_DestroyPlayer(IDirectPlayImpl *This, void *lpMsgHdr, DPID idPlayer, BOOL bAnsi)
HRESULT DP_SetSPPlayerData(IDirectPlayImpl *lpDP, DPID idPlayer, void *lpData)
static HRESULT DP_IF_CreateGroup(IDirectPlayImpl *This, void *lpMsgHdr, DPID *lpidGroup, DPNAME *lpGroupName, void *lpData, DWORD dwDataSize, DWORD dwFlags, BOOL bAnsi)
HRESULT DP_HandleMessage(IDirectPlayImpl *This, void *messageBody, DWORD dwMessageBodySize, void *messageHeader, WORD wCommandId, WORD wVersion, void **lplpReply, DWORD *lpdwMsgSize)
static HRESULT DP_IF_CreateGroupInGroup(IDirectPlayImpl *This, void *lpMsgHdr, DPID idParentGroup, DPID *lpidGroup, DPNAME *lpGroupName, void *lpData, DWORD dwDataSize, DWORD dwFlags, BOOL bAnsi)
static HRESULT DP_IF_SetPlayerName(IDirectPlayImpl *This, DPID idPlayer, DPNAME *lpPlayerName, DWORD dwFlags, BOOL bAnsi)
static HRESULT DP_IF_CreatePlayer(IDirectPlayImpl *This, DPID *lpidPlayer, DPNAME *lpPlayerName, HANDLE hEvent, void *lpData, DWORD dwDataSize, DWORD dwFlags, BOOL bAnsi)
static HRESULT DP_IF_DestroyGroup(IDirectPlayImpl *This, void *lpMsgHdr, DPID idGroup, BOOL bAnsi)
#define DPID_NOPARENT_GROUP
static HRESULT DP_IF_SetGroupName(IDirectPlayImpl *This, DPID idGroup, DPNAME *lpGroupName, DWORD dwFlags, BOOL bAnsi)
HRESULT DP_HandleGameMessage(IDirectPlayImpl *This, void *messageBody, DWORD messageBodySize, DPID fromId, DPID toId)
HRESULT DP_GetSPPlayerData(IDirectPlayImpl *lpDP, DPID idPlayer, void **lplpData)
#define DPPLAYERTYPE_PLAYER
#define DPSYS_SETSESSIONDESC
#define DPSYS_DESTROYPLAYERORGROUP
#define DPSYS_SECUREMESSAGE
#define DPSYS_SENDCOMPLETE
#define DPSYS_SETGROUPOWNER
#define DPPLAYERTYPE_GROUP
#define DPSYS_SETPLAYERORGROUPDATA
#define DPSYS_ADDGROUPTOGROUP
#define DPSYS_DELETEPLAYERFROMGROUP
#define DPERR_INVALIDPLAYER
#define DPSYS_DELETEGROUPFROMGROUP
#define DPERR_INVALIDPARAMS
#define DPSYS_CREATEPLAYERORGROUP
#define DPERR_OUTOFMEMORY
#define DPSYS_SESSIONLOST
#define DPSYS_SETPLAYERORGROUPNAME
#define DPSYS_ADDPLAYERTOGROUP
#define DPSYS_STARTSESSION
struct PlayerData * lpPlayerData
HRESULT DPL_EnumAddress(LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, LPCVOID lpAddress, DWORD dwAddressSize, LPVOID lpContext)
static void WINAPI IDirectPlaySPImpl_SendComplete(IDirectPlaySP *iface, void *unknownA, DWORD unknownB)
static IDirectPlaySPImpl * impl_from_IDirectPlaySP(IDirectPlaySP *iface)
LPVOID DPSP_CreateSPPlayerData(void)
static HRESULT WINAPI IDirectPlaySPImpl_GetSPData(IDirectPlaySP *iface, void **lplpData, DWORD *lpdwDataSize, DWORD dwFlags)
static HRESULT WINAPI IDirectPlaySPImpl_HandleMessage(IDirectPlaySP *iface, void *lpMessageBody, DWORD dwMessageBodySize, void *lpMessageHeader)
static HRESULT WINAPI IDirectPlaySPImpl_CreateCompoundAddress(IDirectPlaySP *iface, const DPCOMPOUNDADDRESSELEMENT *lpElements, DWORD dwElementCount, void *lpAddress, DWORD *lpdwAddressSize)
static HRESULT WINAPI IDirectPlaySPImpl_GetPlayerFlags(IDirectPlaySP *iface, DPID idPlayer, DWORD *lpdwPlayerFlags)
static ULONG WINAPI IDirectPlaySPImpl_AddRef(IDirectPlaySP *iface)
static ULONG WINAPI IDirectPlaySPImpl_Release(IDirectPlaySP *iface)
struct tagDP_SPPLAYERDATA * LPDP_SPPLAYERDATA
static HRESULT WINAPI IDirectPlaySPImpl_EnumMRUEntries(IDirectPlaySP *iface, LPCWSTR lpSection, LPCWSTR lpKey, LPENUMMRUCALLBACK lpEnumMRUCallback, void *lpContext)
static HRESULT WINAPI IDirectPlaySPImpl_SetSPPlayerData(IDirectPlaySP *iface, DPID idPlayer, void *lpData, DWORD dwDataSize, DWORD dwFlags)
static HRESULT WINAPI IDirectPlaySPImpl_QueryInterface(IDirectPlaySP *iface, REFIID riid, void **ppv)
static const IDirectPlaySPVtbl directPlaySPVT
static HRESULT WINAPI IDirectPlaySPImpl_EnumAddress(IDirectPlaySP *iface, LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, const void *lpAddress, DWORD dwAddressSize, void *lpContext)
HRESULT dplaysp_create(REFIID riid, void **ppv, IDirectPlayImpl *dp)
static HRESULT WINAPI IDirectPlaySPImpl_CreateAddress(IDirectPlaySP *iface, REFGUID guidSP, REFGUID guidDataType, const void *lpData, DWORD dwDataSize, void *lpAddress, DWORD *lpdwAddressSize)
struct tagDP_SPPLAYERDATA DP_SPPLAYERDATA
static HRESULT WINAPI IDirectPlaySPImpl_SetSPData(IDirectPlaySP *iface, void *lpData, DWORD dwDataSize, DWORD dwFlags)
static HRESULT WINAPI IDirectPlaySPImpl_AddMRUEntry(IDirectPlaySP *iface, LPCWSTR lpSection, LPCWSTR lpKey, const void *lpData, DWORD dwDataSize, DWORD dwMaxEntries)
static HRESULT WINAPI IDirectPlaySPImpl_GetSPPlayerData(IDirectPlaySP *iface, DPID idPlayer, void **lplpData, DWORD *lpdwDataSize, DWORD dwFlags)
#define IDirectPlaySP_QueryInterface(p, a, b)
BOOL(CALLBACK * LPENUMMRUCALLBACK)(LPCVOID lpData, DWORD dwDataSize, LPVOID lpContext)
#define IDirectPlaySP_Release(p)
#define IDirectPlaySP_AddRef(p)
LPCSTR DPLAYX_HresultToString(HRESULT hr)
#define DPMSGMAGIC_DPLAYMSG
BOOL(CALLBACK * LPDPENUMADDRESSCALLBACK)(REFGUID guidDataType, DWORD dwDataSize, LPCVOID lpData, LPVOID lpContext)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define IsEqualGUID(rguid1, rguid2)
IDirectPlaySP IDirectPlaySP_iface
DWORD dwPlayerRemoteDataSize
DWORD dwPlayerLocalDataSize
LPVOID lpPlayerRemoteData
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
#define CONTAINING_RECORD(address, type, field)