74#define DPID_NOPARENT_GROUP 0
75#define DPID_SYSTEM_GROUP DPID_NOPARENT_GROUP
77#define DPID_NAME_SERVER 0x19a9d65b
80#define DPMSG_CREATEGROUP_DWFLAGS(x) ( (x) & DPGROUP_HIDDEN )
83#define DPMSG_CREATEPLAYER_DWFLAGS(x) 0
136 This->dp2->dwEnumSessionLock = 0;
150 This->dp2->lpSessionDesc =
calloc( 1,
sizeof( *
This->dp2->lpSessionDesc ) );
151 if(
This->dp2->lpSessionDesc ==
NULL )
156 This->dp2->lpSessionDesc->dwSize =
sizeof( *
This->dp2->lpSessionDesc );
161 This->dp2->spData.lpCB =
calloc( 1,
sizeof( *
This->dp2->spData.lpCB ) );
162 This->dp2->spData.lpCB->dwSize =
sizeof( *
This->dp2->spData.lpCB );
174 This->dp2->dplspData.lpCB =
calloc( 1,
sizeof( *
This->dp2->dplspData.lpCB ) );
175 This->dp2->dplspData.lpCB->dwSize =
sizeof( *
This->dp2->dplspData.lpCB );
205 if(
This->dp2->spData.lpCB->ShutdownEx )
209 TRACE(
"Calling SP ShutdownEx\n" );
211 data.lpISP =
This->dp2->spData.lpISP;
213 (*
This->dp2->spData.lpCB->ShutdownEx)( &
data );
215 else if (
This->dp2->spData.lpCB->Shutdown )
217 TRACE(
"Calling obsolete SP Shutdown\n" );
218 (*
This->dp2->spData.lpCB->Shutdown)();
222 if(
This->dp2->hServiceProvider != 0 )
228 if(
This->dp2->hDPLobbyProvider != 0 )
251 obj->lock.DebugInfo->Spare[0] = 0;
282 if ( dstAnsi == srcAnsi )
333 if ( player->
dpid == excludeId )
397 memcpy( genericDst, genericSrc, genericSize );
455 DWORD dwMessageBodySize,
void *messageHeader,
WORD wCommandId,
WORD wVersion,
456 void **lplpReply,
DWORD *lpdwMsgSize )
458 TRACE(
"(%p)->(%p,0x%08lx,%p,%u,%u)\n",
459 This, messageBody, dwMessageBodySize, messageHeader, wCommandId,
476 This->dp2->spData.dwSPHeaderSize,
479 This->dp2->lpNameServerData );
490 *lpdwMsgSize =
This->dp2->spData.dwSPHeaderSize +
sizeof( *lpReply );
492 *lplpReply =
calloc( 1, *lpdwMsgSize );
494 FIXME(
"Ignoring dwFlags 0x%08lx in request msg\n",
499 This->dp2->spData.dwSPHeaderSize );
507 TRACE(
"Allocating new playerid 0x%08lx from remote request\n",
527 if ( dwMessageBodySize -
offset < 6 )
532 if ( !
This->dp2->bConnectionOpen )
572 if( dwMessageBodySize < msg->dataOffset )
574 if( dwMessageBodySize -
msg->dataOffset <
msg->dataSize )
576 data = (
char *)messageBody +
msg->dataOffset;
580 if( !
This->dp2->bConnectionOpen )
597 setPlayerOrGroupDataMsg.
dpId =
msg->groupId;
615 TRACE(
"GOT THE SELF MESSAGE: %p -> 0x%08lx\n", messageHeader, ((
const DWORD *)messageHeader)[1] );
620 TRACE(
"Sending message to self to get my addr\n" );
633 if ( !
This->dp2->bConnectionOpen )
663 if ( !
This->dp2->bConnectionOpen )
687 FIXME(
"Unknown wCommandId %u. Ignoring message\n", wCommandId );
703 TRACE(
"(%p)->(%p,0x%08lx,0x%08lx,0x%08lx)\n",
This, messageBody, messageBodySize, fromId, toId );
789 FIXME(
"(%p)->(0x%08lx): stub\n",
This, player );
835 FIXME(
"(%p)->(%p,%lu,%p,%p,0x%08lx): stub\n",
This, sdesc,
timeout, enumsessioncb,
context,
843 FIXME(
"(%p)->(%p): stub\n",
This, caps );
858 FIXME(
"(%p)->(0x%08lx,%p): stub\n",
This, player, caps );
866 FIXME(
"(%p)->(0x%08lx,%p,%p,%p,%p): stub\n",
This, player,
name, size_name,
fullname,
881 FIXME(
"(%p)->(%p): stub\n",
This, sdesc );
889 FIXME(
"(%p)->(%p,%p,0x%08lx,%p,%p): stub\n",
This,
from, to,
flags,
data,
size );
904 FIXME(
"(%p)->(0x%08lx,0x%08lx,0x%08lx,%p,%lu): stub\n",
This,
from, to,
flags,
data,
size );
917static const IDirectPlayVtbl
dp_vt =
990 *
ppv = &
This->IDirectPlay_iface;
995 *
ppv = &
This->IDirectPlay_iface;
1000 *
ppv = &
This->IDirectPlay2A_iface;
1005 *
ppv = &
This->IDirectPlay2_iface;
1010 *
ppv = &
This->IDirectPlay3A_iface;
1015 *
ppv = &
This->IDirectPlay3_iface;
1020 *
ppv = &
This->IDirectPlay4A_iface;
1025 *
ppv = &
This->IDirectPlay4_iface;
1228 newplist =
calloc( 1,
sizeof( *newplist ) );
1233 plist->lpPData->uRef++;
1237 DPQ_INSERT(gdata->players, newplist, players);
1240 if (
This->dp2->spData.lpCB->AddPlayerToGroup )
1244 TRACE(
"Calling SP AddPlayerToGroup\n" );
1246 data.idPlayer = player;
1248 data.lpISP =
This->dp2->spData.lpISP;
1250 hr = (*
This->dp2->spData.lpCB->AddPlayerToGroup)( &
data );
1253 DPQ_REMOVE( gdata->players, newplist, players );
1254 --
plist->lpPData->uRef;
1268 if (
This->dp2->spData.lpCB->RemovePlayerFromGroup )
1271 data.idPlayer = player;
1273 data.lpISP =
This->dp2->spData.lpISP;
1274 This->dp2->spData.lpCB->RemovePlayerFromGroup( &
data );
1276 DPQ_REMOVE( gdata->players, newplist, players );
1277 --
plist->lpPData->uRef;
1370 if(
This->dp2->spData.lpCB->CloseEx )
1374 TRACE(
"Calling SP CloseEx\n" );
1375 data.lpISP =
This->dp2->spData.lpISP;
1376 hr = (*
This->dp2->spData.lpCB->CloseEx)( &
data );
1378 else if (
This->dp2->spData.lpCB->Close )
1380 TRACE(
"Calling SP Close (obsolete interface)\n" );
1381 hr = (*
This->dp2->spData.lpCB->Close)();
1404 lpGData =
calloc( 1,
sizeof( *lpGData ) );
1406 if( lpGData ==
NULL )
1415 lpGData->
dpid = *lpid;
1418 if ( !lpGData->
name )
1425 if ( !lpGData->
nameA )
1432 lpGData->
parent = idParent;
1449 This->dp2->lpSysGroup = lpGData;
1450 TRACE(
"Inserting system group\n" );
1455 groupList =
calloc( 1,
sizeof( *groupList ) );
1478 if(
This->dp2->spData.lpCB->CreateGroup )
1481 DWORD dwCreateFlags = 0;
1483 TRACE(
"Calling SP CreateGroup\n" );
1494 data.idGroup = *lpid;
1495 data.dwFlags = dwCreateFlags;
1496 data.lpSPMessageHeader = msgHeader;
1497 data.lpISP =
This->dp2->spData.lpISP;
1499 hr = (*
This->dp2->spData.lpCB->CreateGroup)( &
data );
1518 TRACE(
"Created group id 0x%08lx\n", *lpid );
1532 if( lpGList ==
NULL )
1534 ERR(
"DPID 0x%08lx not found\n",
dpid );
1540 FIXME(
"Why is this not the last reference to group?\n" );
1563 return This->dp2->lpSysGroup;
1566 if(
This->dp2->lpSysGroup ==
NULL )
1571 if( lpGroups ==
NULL )
1584 TRACE(
"(%p)->(%p,%p,%p,%p,0x%08lx,0x%08lx,%u)\n",
1585 This, lpMsgHdr, lpidGroup, lpGroupName, lpData, dwDataSize,
1601 if(
This->dp2->bHostInterface )
1624 if( ( lpMsgHdr ==
NULL ) &&
1625 This->dp2->lpSessionDesc &&
1632 msg.dpId = *lpidGroup;
1633 msg.dwCurrentPlayers = 0;
1634 msg.lpData = lpData;
1635 msg.dwDataSize = dwDataSize;
1636 msg.dpnName = *lpGroupName;
1732 if( lpData !=
NULL )
1754 if(
This->dp2->spData.lpCB->CreatePlayer )
1760 data.lpSPMessageHeader = msgHeader;
1761 data.lpISP =
This->dp2->spData.lpISP;
1763 TRACE(
"Calling SP CreatePlayer 0x%08lx: dwFlags: 0x%08lx lpMsgHdr: %p\n",
dpid,
flags,
1766 hr = (*
This->dp2->spData.lpCB->CreatePlayer)( &
data );
1775 if(
This->dp2->spData.lpCB->AddPlayerToGroup )
1781 data.lpISP =
This->dp2->spData.lpISP;
1783 TRACE(
"Calling SP AddPlayerToGroup (sys group)\n" );
1785 hr = (*
This->dp2->spData.lpCB->AddPlayerToGroup)( &
data );
1789 if (
This->dp2->spData.lpCB->DeletePlayer )
1794 data.lpISP =
This->dp2->spData.lpISP;
1795 This->dp2->spData.lpCB->DeletePlayer( &
data );
1806 if (
This->dp2->spData.lpCB->RemovePlayerFromGroup )
1811 data.lpISP =
This->dp2->spData.lpISP;
1812 This->dp2->spData.lpCB->RemovePlayerFromGroup( &
data );
1814 if (
This->dp2->spData.lpCB->DeletePlayer )
1819 data.lpISP =
This->dp2->spData.lpISP;
1820 This->dp2->spData.lpCB->DeletePlayer( &
data );
1835 lpPData =
calloc( 1,
sizeof( *lpPData ) );
1836 if( lpPData ==
NULL )
1840 lpPData->
dpid = *lpid;
1843 if ( !lpPData->
name )
1850 if ( !lpPData->
nameA )
1868 ERR(
"Can't duplicate player msg handle %p\n",
hEvent );
1876 lpPList =
calloc( 1,
sizeof( *lpPList ) );
1927 DWORD currentPlayers;
1929 currentPlayers =
This->dp2->lpSessionDesc->dwCurrentPlayers;
1936 msg.dwCurrentPlayers = currentPlayers;
1959 This->dp2->lpSessionDesc->dwCurrentPlayers++;
1962 TRACE(
"Created player id 0x%08lx\n", *lpid );
1965 *playerData = lpPData;
1979 if( lpPList ==
NULL )
1981 ERR(
"DPID 0x%08lx not found\n",
dpid );
1988 FIXME(
"Why is this not the last reference to player?\n" );
2086 if( lpData !=
NULL )
2110 DWORD dwCreateFlags;
2112 TRACE(
"(%p)->(%p,%p,%p,%p,0x%08lx,0x%08lx,%u)\n",
2113 This, lpidPlayer, lpPlayerName,
hEvent, lpData,
2121 if( !
This->dp2->bConnectionOpen )
2128 if( lpidPlayer ==
NULL )
2147 ERR(
"unknown dwFlags = 0x%08lx\n",
dwFlags );
2154 if(
This->dp2->bHostInterface )
2182 dwCreateFlags,
hEvent, &player, bAnsi );
2190 lpData, dwDataSize,
This->dp2->systemPlayerId );
2330 plist->lpPData->uRef--;
2336 if (
This->dp2->spData.lpCB->RemovePlayerFromGroup )
2340 TRACE(
"Calling SP RemovePlayerFromGroup\n" );
2341 data.idPlayer = player;
2343 data.lpISP =
This->dp2->spData.lpISP;
2344 hr = (*
This->dp2->spData.lpCB->RemovePlayerFromGroup)( &
data );
2348 FIXME(
"Need to send a message\n" );
2372 TRACE(
"Removing element:0x%08lx (type:0x%08lx) from element:0x%08lx\n",
2373 dpId, dwPlayerType, lpCtxt->
idGroup );
2379 ERR(
"Unable to delete group 0x%08lx from group 0x%08lx\n", dpId, lpCtxt->
idGroup );
2383 ERR(
"Unable to delete player 0x%08lx from grp 0x%08lx\n", dpId, lpCtxt->
idGroup );
2393 FIXME(
"(%p)->(%p,0x%08lx,%u): semi stub\n",
2394 This, lpMsgHdr, idGroup, bAnsi );
2425 if(
This->dp2->spData.lpCB->DeleteGroup )
2429 FIXME(
"data.dwFlags is incorrect\n" );
2431 data.idGroup = idGroup;
2433 data.lpISP =
This->dp2->spData.lpISP;
2435 (*
This->dp2->spData.lpCB->DeleteGroup)( &
data );
2438 FIXME(
"Send out a DESTORYPLAYERORGROUP message\n" );
2493 FIXME(
"(%p)->(%p,0x%08lx,%u): semi stub\n",
2494 This, lpMsgHdr, idPlayer, bAnsi );
2513 cbContext.
bAnsi = bAnsi;
2524 if(
This->dp2->spData.lpCB->DeletePlayer )
2528 FIXME(
"data.dwFlags is incorrect\n" );
2530 data.idPlayer = idPlayer;
2532 data.lpISP =
This->dp2->spData.lpISP;
2534 (*
This->dp2->spData.lpCB->DeletePlayer)( &
data );
2537 FIXME(
"Send a DELETEPLAYERORGROUP msg\n" );
2567 ERR(
"Group callback has dwPlayerType = 0x%08lx\n", dwPlayerType );
2678 playerFlags =
plist->lpPData->dwFlags;
2680 playerFlags |=
flags;
2813 FIXME(
": not checking for conditions\n" );
2819 TRACE(
"EnumSessionsCallback2 invoked\n" );
2820 if( !lpEnumSessionsCallback2( lpSessionDesc,
timeout, 0, lpContext ) )
2831 HANDLE hSuicideRequest =
data->hSuicideRequest;
2834 TRACE(
"Thread started with timeout = 0x%08lx\n", dwTimeout );
2843 TRACE(
"Thread terminating on terminate request\n" );
2849 data->dwEnumSessionFlags,
2861 TRACE(
"Thread terminating\n" );
2883 TRACE(
"Killing EnumSession thread %p\n",
2884 This->dp2->hEnumSessionThread );
2935 DWORD defaultTimeout;
2942 TRACE(
"(%p)->(%p,0x%08lx,%p,%p,0x%08lx)\n",
This, sdesc,
timeout, enumsessioncb,
2956 if (
This->dp2->bConnectionOpen )
2974 if (
This->dp2->bDPLSPInitialized && !
This->dp2->bSPInitialized )
2976 WARN(
"Hack providing TCP/IP SP for lobby provider activated\n" );
2980 ERR(
"Can't build compound addr\n" );
2992 caps.
dwSize =
sizeof( caps );
2995 if ( !defaultTimeout )
3021 &
This->dp2->spData );
3050 if (
This->dp2->dwEnumSessionLock )
3063 This->dp2->dwEnumSessionLock++;
3069 &
This->dp2->spData );
3072 This->dp2->dwEnumSessionLock--;
3079 data->lpSpData = &
This->dp2->spData;
3089 ERR(
"Can't duplicate thread killing handle\n" );
3091 TRACE(
": creating EnumSessionsRequest thread\n" );
3094 if ( !
This->dp2->hEnumSessionThread )
3097 This->dp2->dwEnumSessionLock--;
3235 DWORD dwRequiredDataSize;
3237 FIXME(
"(%p)->(0x%08lx,%p,%p,%u) ANSI ignored\n",
3238 This, idGroup, lpData, lpdwDataSize, bAnsi );
3250 if( ( lpData ==
NULL ) ||
3251 ( *lpdwDataSize < dwRequiredDataSize )
3254 *lpdwDataSize = dwRequiredDataSize;
3295 void *lpData,
DWORD *lpdwDataSize )
3302 void *lpData,
DWORD *lpdwDataSize )
3433 TRACE(
"(%p)->(0x%08lx,%p,0x%08lx)\n",
This, player, caps,
flags);
3445 data.idPlayer = player;
3448 data.lpISP =
This->dp2->spData.lpISP;
3450 return (*
This->dp2->spData.lpCB->GetCaps)( &
data );
3517 src =
plist->lpPData->lpRemoteData;
3540 DWORD dwRequiredDataSize;
3542 FIXME(
"(%p)->(0x%08lx,%p,%p,%u): ANSI\n",
3543 This, idPlayer, lpData, lpdwDataSize, bAnsi );
3561 if( ( lpData ==
NULL ) ||
3562 ( *lpdwDataSize < dwRequiredDataSize )
3565 *lpdwDataSize = dwRequiredDataSize;
3606 void *lpData,
DWORD *lpdwDataSize )
3613 void *lpData,
DWORD *lpdwDataSize )
3622 DWORD dwRequiredSize;
3624 TRACE(
"(%p)->(%p,%p,%u)\n",
This, lpData, lpdwDataSize, bAnsi );
3631 if( ( lpData ==
NULL ) && ( lpdwDataSize ==
NULL ) )
3640 if ( ( lpData ==
NULL ) ||
3641 ( *lpdwDataSize < dwRequiredSize )
3644 *lpdwDataSize = dwRequiredSize;
3685 DWORD *lpdwDataSize )
3692 DWORD *lpdwDataSize )
3741 void *spMessageHeader =
NULL;
3744 FIXME(
"(%p)->(%p,0x%08lx,%p,%p): partial stub\n",
3749 TRACE(
": rejecting invalid dpsd size (%ld).\n", lpsd->
dwSize );
3759 if(
This->dp2->bConnectionOpen )
3761 TRACE(
": rejecting already open connection.\n" );
3809 if ( !
This->dp2->lpSessionDesc )
3814 if(
This->dp2->spData.lpCB->Open )
3818 FIXME(
"Not all data fields are correct. Need new parameter\n" );
3821 data.lpSPMessageHeader = spMessageHeader;
3822 data.lpISP =
This->dp2->spData.lpISP;
3825 data.dwSessionFlags =
This->dp2->lpSessionDesc->dwFlags;
3843 if(
This->dp2->spData.lpCB->CloseEx )
3846 data.lpISP =
This->dp2->spData.lpISP;
3847 (*
This->dp2->spData.lpCB->CloseEx)( &
data );
3862 if(
This->dp2->spData.lpCB->CloseEx )
3865 data.lpISP =
This->dp2->spData.lpISP;
3866 (*
This->dp2->spData.lpCB->CloseEx)( &
data );
3885 if(
This->dp2->spData.lpCB->CloseEx )
3888 data.lpISP =
This->dp2->spData.lpISP;
3889 (*
This->dp2->spData.lpCB->CloseEx)( &
data );
3903 if(
This->dp2->spData.lpCB->CloseEx )
3906 data.lpISP =
This->dp2->spData.lpISP;
3907 (*
This->dp2->spData.lpCB->CloseEx)( &
data );
3918 if(
This->dp2->spData.lpCB->CloseEx )
3921 data.lpISP =
This->dp2->spData.lpISP;
3922 (*
This->dp2->spData.lpCB->CloseEx)( &
data );
3938 if(
This->dp2->spData.lpCB->CloseEx )
3941 data.lpISP =
This->dp2->spData.lpISP;
3942 (*
This->dp2->spData.lpCB->CloseEx)( &
data );
3998 void *lpData,
DWORD *lpdwDataSize,
BOOL bAnsi )
4003 TRACE(
"(%p)->(%p,%p,0x%08lx,%p,%p,%u)\n",
4004 This, lpidFrom, lpidTo,
dwFlags, lpData, lpdwDataSize, bAnsi );
4030 if( *lpdwDataSize < msgSize || !lpData )
4032 *lpdwDataSize = msgSize;
4037 *lpidFrom = lpMsg->
fromId;
4038 *lpidTo = lpMsg->
toId;
4039 *lpdwDataSize = msgSize;
4196 FIXME(
"Was this group created by this interface?\n" );
4208 FIXME(
"Send msg?\n" );
4222 TRACE(
"(%p)->(0x%08lx,%p,0x%08lx,%u)\n",
This, idGroup,
4223 lpGroupName,
dwFlags, bAnsi );
4249 lpGData->
nameA = nameA;
4252 FIXME(
"Message not sent and dwFlags ignored\n" );
4362 FIXME(
"Was this group created by this interface?\n" );
4371 FIXME(
"Send msg?\n" );
4385 TRACE(
"(%p)->(0x%08lx,%p,0x%08lx,%u)\n",
4420 FIXME(
"Message not sent and dwFlags ignored\n" );
4474 TRACE(
"(%p)->(%p,0x%08lx,%u,%u)\n",
4488 if( !
This->dp2->bHostInterface )
4497 if( lpTempSessDesc ==
NULL )
4506 This->dp2->lpSessionDesc = lpTempSessDesc;
4514 FIXME(
"Need to send a DPMSG_SETSESSIONDESC msg to everyone\n" );
4570 CopyMemory( lpSessionDest, lpSessionSrc,
sizeof( *lpSessionSrc ) );
4573 dstAnsi, srcAnsi, lpSessionDest,
offset );
4575 dstAnsi, srcAnsi, lpSessionDest,
offset );
4653 glist->lpGData = gdata;
4659 FIXME(
"Not sending message\n" );
4672 TRACE(
"(%p)->(0x%08lx,%p,%p,%p,0x%08lx,0x%08lx,%u)\n",
4673 This, idParentGroup, lpidGroup, lpGroupName, lpData,
4684 idParentGroup, bAnsi );
4695 if(
This->dp2->lpSessionDesc &&
4702 msg.dpId = *lpidGroup;
4703 msg.dwCurrentPlayers = idParentGroup;
4704 msg.lpData = lpData;
4705 msg.dwDataSize = dwDataSize;
4706 msg.dpnName = *lpGroupName;
4808 glist->lpGData->uRef--;
4814 FIXME(
"message not sent\n" );
4828 dpCompoundAddress.
guidDataType = DPAID_ServiceProvider;
4829 dpCompoundAddress.
lpData = lpcSpGuid;
4831 *lplpAddrBuf =
NULL;
4835 lpdwBufSize,
TRUE );
4844 *lplpAddrBuf =
calloc( 1, *lpdwBufSize );
4847 lpdwBufSize,
TRUE );
4851 free( *lplpAddrBuf );
4957 char subKeyName[51];
4958 DWORD dwIndex, sizeOfSubKeyName=50;
4966 ERR(
": no service providers?\n");
4973 RegEnumKeyExA( hkResult, dwIndex, subKeyName, &sizeOfSubKeyName,
4975 ++dwIndex, sizeOfSubKeyName=51 )
4978 HKEY hkServiceProvider;
4985 TRACE(
" this time through: %s\n", subKeyName );
4991 ERR(
": what the heck is going on?\n" );
5006 ERR(
": missing GUID registry data members\n" );
5163 TRACE(
"(%p)->(%p,%p,%p,0x%08lx)\n",
This, lpguidApplication, lpEnumCallback, lpContext,
dwFlags );
5178 if( !lpEnumCallback )
5258 groupFlags =
glist->lpGData->dwFlags;
5260 groupFlags |=
flags;
5325 if( (
IsEqualGUID( guidDataType, &DPAID_ServiceProvider ) ) ||
5326 (
IsEqualGUID( guidDataType, &DPAID_LobbyProvider ) )
5329 TRACE(
"Found SP/LP (%s) %s (data size = 0x%08lx)\n",
5332 if( dwDataSize !=
sizeof(
GUID ) )
5334 ERR(
"Invalid sp/lp guid size 0x%08lx\n", dwDataSize );
5337 memcpy( lpContext, lpData, dwDataSize );
5392 ERR(
"Service provider doesn't provide SPInit interface?\n" );
5397 TRACE(
"Calling SPInit (DP SP entry point)\n" );
5399 hr = (*SPInit)( &
This->dp2->spData );
5416 This->dp2->hServiceProvider = hServiceProvider;
5429 if( DPLSPInit ==
NULL )
5431 ERR(
"Service provider doesn't provide DPLSPInit interface?\n" );
5436 TRACE(
"Calling DPLSPInit (DPL SP entry point)\n" );
5438 hr = (*DPLSPInit)( &
This->dp2->dplspData );
5450 This->dp2->bDPLSPInitialized =
TRUE;
5456 This->dp2->hDPLobbyProvider = hLobbyProvider;
5508 ERR(
"Invalid compound address?\n" );
5527 This->dp2->spData.dwAddressSize =
size;
5528 This->dp2->spData.lpGuid = &
sp;
5595 FIXME(
"(%p)->(0x%08lx,0x%08lx,0x%08lx,%p): stub\n",
This,
from, to,
flags, chatmsg );
5603 FIXME(
"(%p)->(0x%08lx,0x%08lx,0x%08lx,%p): stub\n",
This,
from, to,
flags, chatmsg );
5847 TRACE(
"(%p)->(0x%08lx,0x%08lx,0x%08lx,%p,0x%08lx,0x%08lx,0x%08lx,%p,%p)\n",
5867 WARN(
"INFO: Invalid from player 0x%08lx\n",
from );
5882 buffers[ 0 ].len =
This->dp2->spData.dwSPHeaderSize;
5884 buffers[ 1 ].len =
sizeof( envelope );
5894 if (
This->dp2->spData.lpCB->SendEx )
5898 sendData.
lpISP =
This->dp2->spData.lpISP;
5912 hr =
This->dp2->spData.lpCB->SendEx( &sendData );
5919 FIXME(
"Use obsolete send\n" );
5924 if (
This->dp2->spData.lpCB->SendToGroupEx )
5928 sendData.
lpISP =
This->dp2->spData.lpISP;
5941 hr =
This->dp2->spData.lpCB->SendToGroupEx( &sendData );
5947 else if (
This->dp2->spData.lpCB->SendToGroup )
5948 FIXME(
"Use obsolete group send to group\n" );
5950 FIXME(
"Send to all players using EnumPlayersInGroup\n" );
5979 TRACE(
"(%p)->(0x%08lx,0x%08lx,0x%08lx,%p,%p)\n",
This,
from, to,
flags, msgs,
bytes );
6028 if( to &&
msg->toId != to )
6048 if (
This->dp2->spData.lpCB->GetMessageQueue )
6052 FIXME(
"Calling SP GetMessageQueue - is it right?\n" );
6055 data.lpISP =
This->dp2->spData.lpISP;
6059 data.lpdwNumMsgs = msgs;
6062 hr = (*
This->dp2->spData.lpCB->GetMessageQueue)( &
data );
6065 FIXME(
"No SP for GetMessageQueue - fake some data\n" );
6077 FIXME(
"(%p)->(0x%08lx,0x%08lx): semi stub\n",
This, msgid,
flags );
6079 if (
This->dp2->spData.lpCB->Cancel )
6083 TRACE(
"Calling SP Cancel\n" );
6087 data.lpISP =
This->dp2->spData.lpISP;
6090 data.cSPMsgID = msgid;
6091 data.dwMinPriority = minprio;
6092 data.dwMaxPriority = maxprio;
6094 hr = (*
This->dp2->spData.lpCB->Cancel)( &
data );
6097 FIXME(
"SP doesn't implement Cancel\n" );
6141static const IDirectPlay2Vtbl
dp2_vt =
6177static const IDirectPlay2Vtbl
dp2A_vt =
6213static const IDirectPlay3Vtbl
dp3_vt =
6264static const IDirectPlay3Vtbl
dp3A_vt =
6315static const IDirectPlay4Vtbl
dp4_vt =
6372static const IDirectPlay4Vtbl
dp4A_vt =
6441 obj->IDirectPlay_iface.lpVtbl = &
dp_vt;
6443 obj->IDirectPlay2_iface.lpVtbl = &
dp2_vt;
6445 obj->IDirectPlay3_iface.lpVtbl = &
dp3_vt;
6447 obj->IDirectPlay4_iface.lpVtbl = &
dp4_vt;
6451 obj->lock.DebugInfo->Spare[0] = (
DWORD_PTR)(__FILE__
": IDirectPlayImpl.lock");
6481 *lplpData =
group->lpSPPlayerData;
6509 group->lpSPPlayerData = lpData;
6548 if (!lpEnumCallbackA && !lpEnumCallbackW)
6566 if (lpEnumCallbackA)
6589 TRACE(
"(%p,%p)\n", lpEnumCallback, lpContext);
6599 TRACE(
"(%p,%p)\n", lpEnumCallback, lpContext);
6614 DWORD dwConnectionSize,
static unsigned char bytes[4]
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
#define RegCloseKey(hKey)
static const WCHAR connections[]
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
static HINSTANCE instance
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LSTATUS WINAPI RegGetValueA(HKEY hKey, LPCSTR pszSubKey, LPCSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
LONG WINAPI RegEnumKeyExA(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define GetCurrentProcess()
#define ERROR_NO_MORE_ITEMS
#define WideCharToMultiByte
#define MultiByteToWideChar
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
BOOL WINAPI TerminateThread(IN HANDLE hThread, IN DWORD dwExitCode)
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
_ACRTIMP int __cdecl swscanf(const wchar_t *, const wchar_t *,...)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP size_t __cdecl strlen(const char *)
static HRESULT WINAPI IDirectPlay4Impl_SecureOpen(IDirectPlay4 *iface, const DPSESSIONDESC2 *lpsd, DWORD dwFlags, const DPSECURITYDESC *lpSecurity, const DPCREDENTIALS *lpCredentials)
#define DPMSG_CREATEGROUP_DWFLAGS(x)
static HRESULT WINAPI IDirectPlay4AImpl_EnumGroupPlayers(IDirectPlay4A *iface, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay4AImpl_SetPlayerData(IDirectPlay4A *iface, DPID player, void *data, DWORD size, DWORD flags)
static HRESULT DP_IF_DestroyPlayer(IDirectPlayImpl *This, void *lpMsgHdr, DPID idPlayer, BOOL bAnsi)
static HRESULT WINAPI IDirectPlayImpl_SetPlayerName(IDirectPlay *iface, DPID player, LPSTR name, LPSTR fullname)
static HRESULT WINAPI IDirectPlay3Impl_GetPlayerData(IDirectPlay3 *iface, DPID player, void *data, DWORD *size, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_CreateGroup(IDirectPlay2A *iface, DPID *lpidGroup, DPNAME *name, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay4Impl_EnumSessions(IDirectPlay4 *iface, DPSESSIONDESC2 *sdesc, DWORD timeout, LPDPENUMSESSIONSCALLBACK2 enumsessioncb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay3AImpl_GetPlayerAccount(IDirectPlay3A *iface, DPID player, DWORD flags, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay2Impl_SetPlayerData(IDirectPlay2 *iface, DPID player, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay2Impl_SetGroupData(IDirectPlay2 *iface, DPID group, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_GetGroupName(IDirectPlay2A *iface, DPID group, void *data, DWORD *size)
#define DPID_SYSTEM_GROUP
static HRESULT WINAPI IDirectPlay4Impl_GetGroupFlags(IDirectPlay4 *iface, DPID group, DWORD *flags)
static HRESULT WINAPI IDirectPlay4AImpl_GetGroupParent(IDirectPlay4A *iface, DPID group, DPID *parent)
static HRESULT WINAPI IDirectPlayImpl_Close(IDirectPlay *iface)
static HRESULT WINAPI IDirectPlay3AImpl_DeletePlayerFromGroup(IDirectPlay3A *iface, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay4Impl_EnumGroupPlayers(IDirectPlay4 *iface, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_Open(IDirectPlay2A *iface, DPSESSIONDESC2 *sdesc, DWORD flags)
static HRESULT WINAPI IDirectPlay3AImpl_CreateGroup(IDirectPlay3A *iface, DPID *group, DPNAME *name, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay4Impl_AddPlayerToGroup(IDirectPlay4 *iface, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay3Impl_GetPlayerCaps(IDirectPlay3 *iface, DPID player, DPCAPS *caps, DWORD flags)
static IDirectPlayImpl * impl_from_IDirectPlay(IDirectPlay *iface)
static HRESULT WINAPI IDirectPlay2AImpl_GetMessageCount(IDirectPlay2A *iface, DPID player, DWORD *count)
static HRESULT WINAPI IDirectPlay4AImpl_DestroyGroup(IDirectPlay4A *iface, DPID idGroup)
static HRESULT WINAPI IDirectPlay3AImpl_Open(IDirectPlay3A *iface, DPSESSIONDESC2 *sdesc, DWORD flags)
static HRESULT WINAPI IDirectPlay3AImpl_Initialize(IDirectPlay3A *iface, GUID *guid)
static BOOL DP_CreateDirectPlay2(LPVOID lpDP)
static HRESULT WINAPI IDirectPlay4Impl_GetGroupData(IDirectPlay4 *iface, DPID group, void *data, DWORD *size, DWORD flags)
static HRESULT WINAPI IDirectPlay4Impl_GetMessageCount(IDirectPlay4 *iface, DPID player, DWORD *count)
static HRESULT WINAPI IDirectPlay3Impl_GetPlayerAccount(IDirectPlay3 *iface, DPID player, DWORD flags, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay4Impl_GetPlayerName(IDirectPlay4 *iface, DPID idPlayer, void *lpData, DWORD *lpdwDataSize)
static HRESULT WINAPI IDirectPlay4Impl_Send(IDirectPlay4 *iface, DPID from, DPID to, DWORD flags, void *data, DWORD size)
static HRESULT WINAPI IDirectPlayImpl_CreatePlayer(IDirectPlay *iface, DPID *player, LPSTR name, LPSTR fullname, HANDLE *event)
static HRESULT WINAPI IDirectPlay3Impl_GetGroupParent(IDirectPlay3 *iface, DPID group, DPID *parent)
static void dplay_destroy(IDirectPlayImpl *obj)
static HRESULT WINAPI IDirectPlay4AImpl_DeleteGroupFromGroup(IDirectPlay4A *iface, DPID parent, DPID group)
static HRESULT WINAPI IDirectPlay2Impl_EnumGroupPlayers(IDirectPlay2 *iface, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
HRESULT DP_SetSPPlayerData(IDirectPlayImpl *lpDP, DPID idPlayer, void *lpData)
static HRESULT WINAPI IDirectPlay3AImpl_GetGroupData(IDirectPlay3A *iface, DPID group, void *data, DWORD *size, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_Receive(IDirectPlay2A *iface, DPID *from, DPID *to, DWORD flags, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay4Impl_SetPlayerData(IDirectPlay4 *iface, DPID player, void *data, DWORD size, DWORD flags)
static BOOL DP_GetRegDword(HKEY key, const WCHAR *name, DWORD *value)
static HRESULT WINAPI IDirectPlay3Impl_SetSessionDesc(IDirectPlay3 *iface, DPSESSIONDESC2 *sdesc, DWORD flags)
static HRESULT WINAPI IDirectPlayImpl_Initialize(IDirectPlay *iface, GUID *guid)
static HRESULT WINAPI IDirectPlay2Impl_SetPlayerName(IDirectPlay2 *iface, DPID player, DPNAME *name, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_CreateGroupInGroup(IDirectPlay3 *iface, DPID parent, DPID *group, DPNAME *name, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay2Impl_GetPlayerName(IDirectPlay2 *iface, DPID player, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay4AImpl_GetPlayerCaps(IDirectPlay4A *iface, DPID player, DPCAPS *caps, DWORD flags)
static HRESULT WINAPI IDirectPlay3AImpl_EnumSessions(IDirectPlay3A *iface, DPSESSIONDESC2 *sdesc, DWORD timeout, LPDPENUMSESSIONSCALLBACK2 enumsessioncb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay4Impl_SetGroupConnectionSettings(IDirectPlay4 *iface, DWORD flags, DPID group, DPLCONNECTION *connection)
static HRESULT WINAPI IDirectPlay2Impl_GetPlayerAddress(IDirectPlay2 *iface, DPID player, void *data, DWORD *size)
static HRESULT DP_IF_CreateGroup(IDirectPlayImpl *This, void *lpMsgHdr, DPID *lpidGroup, DPNAME *lpGroupName, void *lpData, DWORD dwDataSize, DWORD dwFlags, BOOL bAnsi)
HRESULT WINAPI DirectPlayCreate(LPGUID lpGUID, LPDIRECTPLAY *lplpDP, IUnknown *pUnk)
HRESULT DP_HandleMessage(IDirectPlayImpl *This, void *messageBody, DWORD dwMessageBodySize, void *messageHeader, WORD wCommandId, WORD wVersion, void **lplpReply, DWORD *lpdwMsgSize)
static HRESULT DP_InitializeDPLSP(IDirectPlayImpl *This, HMODULE hLobbyProvider)
static HRESULT WINAPI IDirectPlay3Impl_SetPlayerName(IDirectPlay3 *iface, DPID player, DPNAME *name, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_SendChatMessage(IDirectPlay3 *iface, DPID from, DPID to, DWORD flags, DPCHAT *chatmsg)
static const IDirectPlay4Vtbl dp4_vt
static HRESULT WINAPI IDirectPlay4Impl_DeleteGroupFromGroup(IDirectPlay4 *iface, DPID parent, DPID group)
static HRESULT WINAPI IDirectPlay4Impl_DestroyPlayer(IDirectPlay4 *iface, DPID idPlayer)
static HRESULT WINAPI IDirectPlay4AImpl_AddGroupToGroup(IDirectPlay4A *iface, DPID parent, DPID group)
static HRESULT WINAPI IDirectPlay4AImpl_QueryInterface(IDirectPlay4A *iface, REFIID riid, void **ppv)
static HRESULT WINAPI IDirectPlay4AImpl_GetGroupFlags(IDirectPlay4A *iface, DPID group, DWORD *flags)
static HRESULT WINAPI IDirectPlay4AImpl_EnumGroups(IDirectPlay4A *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_Send(IDirectPlay3 *iface, DPID from, DPID to, DWORD flags, void *data, DWORD size)
static HRESULT WINAPI IDirectPlay2AImpl_EnumGroupPlayers(IDirectPlay2A *iface, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay2Impl_GetMessageCount(IDirectPlay2 *iface, DPID player, DWORD *count)
static HRESULT WINAPI IDirectPlay3AImpl_GetPlayerAddress(IDirectPlay3A *iface, DPID player, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay4AImpl_CreateGroupInGroup(IDirectPlay4A *iface, DPID idParentGroup, DPID *lpidGroup, DPNAME *lpGroupName, void *lpData, DWORD dwDataSize, DWORD dwFlags)
static HRESULT WINAPI IDirectPlay4Impl_GetPlayerAddress(IDirectPlay4 *iface, DPID player, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3Impl_GetPlayerAddress(IDirectPlay3 *iface, DPID player, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3Impl_EnumGroups(IDirectPlay3 *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_CreatePlayer(IDirectPlay3 *iface, DPID *lpidPlayer, DPNAME *name, HANDLE event, void *data, DWORD size, DWORD flags)
static void DP_KillEnumSessionThread(IDirectPlayImpl *This)
static HRESULT WINAPI IDirectPlay2Impl_QueryInterface(IDirectPlay2 *iface, REFIID riid, void **ppv)
static HRESULT WINAPI IDirectPlay3AImpl_GetPlayerFlags(IDirectPlay3A *iface, DPID player, DWORD *flags)
struct tagCreateEnum * lpCreateEnumData
static ULONG WINAPI IDirectPlay2AImpl_Release(IDirectPlay2A *iface)
static HRESULT WINAPI IDirectPlay2Impl_GetPlayerData(IDirectPlay2 *iface, DPID player, void *data, DWORD *size, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_GetMessageCount(IDirectPlay3 *iface, DPID player, DWORD *count)
static HRESULT WINAPI IDirectPlay3AImpl_EnumConnections(IDirectPlay3A *iface, const GUID *application, LPDPENUMCONNECTIONSCALLBACK enumcb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay2Impl_GetSessionDesc(IDirectPlay2 *iface, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3AImpl_StartSession(IDirectPlay3A *iface, DWORD flags, DPID group)
static HRESULT WINAPI IDirectPlay3AImpl_DestroyGroup(IDirectPlay3A *iface, DPID group)
static HRESULT WINAPI IDirectPlay3Impl_QueryInterface(IDirectPlay3 *iface, REFIID riid, void **ppv)
static HRESULT WINAPI IDirectPlay4AImpl_GetPlayerAddress(IDirectPlay4A *iface, DPID player, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3Impl_StartSession(IDirectPlay3 *iface, DWORD flags, DPID group)
static HRESULT WINAPI IDirectPlay2Impl_DestroyPlayer(IDirectPlay2 *iface, DPID player)
static HRESULT WINAPI IDirectPlay3AImpl_GetGroupConnectionSettings(IDirectPlay3A *iface, DWORD flags, DPID group, void *data, DWORD *size)
struct _DPFAGContext * lpDPFAGContext
static HRESULT WINAPI IDirectPlayImpl_Receive(IDirectPlay *iface, DPID *from, DPID *to, DWORD flags, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay2Impl_SetGroupName(IDirectPlay2 *iface, DPID group, DPNAME *name, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_SetPlayerData(IDirectPlay3 *iface, DPID player, void *data, DWORD size, DWORD flags)
static void DP_DeleteGroup(IDirectPlayImpl *This, DPID dpid)
static HRESULT WINAPI IDirectPlay3AImpl_Send(IDirectPlay3A *iface, DPID from, DPID to, DWORD flags, void *data, DWORD size)
static HRESULT WINAPI IDirectPlay3AImpl_EnumPlayers(IDirectPlay3A *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_CreatePlayer(IDirectPlay2A *iface, DPID *lpidPlayer, DPNAME *name, HANDLE event, void *data, DWORD size, DWORD flags)
static BOOL CALLBACK cbRemoveGroupOrPlayer(DPID dpId, DWORD dwPlayerType, LPCDPNAME lpName, DWORD dwFlags, LPVOID lpContext)
static HRESULT WINAPI IDirectPlay4AImpl_EnumSessions(IDirectPlay4A *iface, DPSESSIONDESC2 *sdesc, DWORD timeout, LPDPENUMSESSIONSCALLBACK2 enumsessioncb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay2Impl_Close(IDirectPlay2 *iface)
static lpGroupData DP_FindAnyGroup(IDirectPlayImpl *This, DPID dpid)
static HRESULT WINAPI IDirectPlay3Impl_DeletePlayerFromGroup(IDirectPlay3 *iface, DPID group, DPID player)
static BOOL DP_BuildSPCompoundAddr(LPGUID lpcSpGuid, LPVOID *lplpAddrBuf, LPDWORD lpdwBufSize)
static HRESULT dplay_cancelmsg(IDirectPlayImpl *This, DWORD msgid, DWORD flags, DWORD minprio, DWORD maxprio)
static HRESULT WINAPI IDirectPlay2Impl_EnumSessions(IDirectPlay2 *iface, DPSESSIONDESC2 *sdesc, DWORD timeout, LPDPENUMSESSIONSCALLBACK2 enumsessioncb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_AddPlayerToGroup(IDirectPlay2A *iface, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay2AImpl_Close(IDirectPlay2A *iface)
static HRESULT WINAPI IDirectPlay3Impl_GetPlayerFlags(IDirectPlay3 *iface, DPID player, DWORD *flags)
static DWORD DP_CopySessionDesc(LPDPSESSIONDESC2 destSessionDesc, LPCDPSESSIONDESC2 srcSessDesc, BOOL dstAnsi, BOOL srcAnsi)
static HRESULT DP_IF_EnumGroupPlayers(IDirectPlayImpl *This, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags, BOOL ansi)
static HRESULT WINAPI IDirectPlay2AImpl_Send(IDirectPlay2A *iface, DPID from, DPID to, DWORD flags, void *data, DWORD size)
static ULONG WINAPI IDirectPlay2Impl_Release(IDirectPlay2 *iface)
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_EnumGroupsInGroup(IDirectPlayImpl *This, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags, BOOL ansi)
static struct list * DP_GetConnections(void)
static void * DP_DuplicateString(const void *src, BOOL dstAnsi, BOOL srcAnsi)
static HRESULT WINAPI IDirectPlay2AImpl_GetGroupData(IDirectPlay2A *iface, DPID group, void *data, DWORD *size, DWORD flags)
struct _DPRGOPContext DPRGOPContext
static ULONG WINAPI IDirectPlay3Impl_AddRef(IDirectPlay3 *iface)
static HRESULT WINAPI IDirectPlay3AImpl_CreateGroupInGroup(IDirectPlay3A *iface, DPID parent, DPID *group, DPNAME *name, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay2Impl_EnumGroups(IDirectPlay2 *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_GetGroupFlags(IDirectPlay3 *iface, DPID group, DWORD *flags)
static HRESULT WINAPI IDirectPlay4AImpl_SetGroupOwner(IDirectPlay4A *iface, DPID group, DPID owner)
static HRESULT WINAPI IDirectPlay2Impl_Open(IDirectPlay2 *iface, DPSESSIONDESC2 *sdesc, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_DestroyPlayer(IDirectPlay3 *iface, DPID player)
static HRESULT WINAPI IDirectPlay3Impl_AddPlayerToGroup(IDirectPlay3 *iface, DPID group, DPID player)
static HRESULT DirectPlayEnumerateAW(LPDPENUMDPCALLBACKA lpEnumCallbackA, LPDPENUMDPCALLBACKW lpEnumCallbackW, LPVOID lpContext)
static HRESULT WINAPI IDirectPlay2AImpl_SetGroupData(IDirectPlay2A *iface, DPID group, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_GetGroupName(IDirectPlay3 *iface, DPID group, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3Impl_InitializeConnection(IDirectPlay3 *iface, void *connection, DWORD flags)
static HRESULT WINAPI IDirectPlay4Impl_QueryInterface(IDirectPlay4 *iface, REFIID riid, void **ppv)
static HRESULT WINAPI IDirectPlay2Impl_DeletePlayerFromGroup(IDirectPlay2 *iface, DPID group, DPID player)
static HRESULT DP_QueueMessage(IDirectPlayImpl *This, DPID fromId, DPID toId, DPID excludeId, void *msg, FN_COPY_MESSAGE *copyMessage, DWORD genericSize)
static HRESULT WINAPI IDirectPlay4AImpl_GetPlayerAccount(IDirectPlay4A *iface, DPID player, DWORD flags, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3AImpl_GetGroupParent(IDirectPlay3A *iface, DPID group, DPID *parent)
static HRESULT WINAPI IDirectPlay3Impl_SetGroupName(IDirectPlay3 *iface, DPID group, DPNAME *name, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_DeleteGroupFromGroup(IDirectPlay3 *iface, DPID parent, DPID group)
static HRESULT WINAPI IDirectPlay4AImpl_Send(IDirectPlay4A *iface, DPID from, DPID to, DWORD flags, void *data, DWORD size)
static ULONG WINAPI IDirectPlay4Impl_AddRef(IDirectPlay4 *iface)
static HRESULT WINAPI IDirectPlay4Impl_SendChatMessage(IDirectPlay4 *iface, DPID from, DPID to, DWORD flags, DPCHAT *chatmsg)
static HRESULT WINAPI IDirectPlay4Impl_SetGroupOwner(IDirectPlay4 *iface, DPID group, DPID owner)
static HRESULT WINAPI IDirectPlay4Impl_GetSessionDesc(IDirectPlay4 *iface, void *lpData, DWORD *lpdwDataSize)
static LONG kludgePlayerGroupId
static HRESULT WINAPI IDirectPlay3Impl_EnumPlayers(IDirectPlay3 *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static void DP_SetGroupData(lpGroupData lpGData, DWORD dwFlags, LPVOID lpData, DWORD dwDataSize)
static HRESULT WINAPI IDirectPlay4Impl_CancelMessage(IDirectPlay4 *iface, DWORD msgid, DWORD flags)
static BOOL DP_InvokeEnumSessionCallbacks(LPDPENUMSESSIONSCALLBACK2 lpEnumSessionsCallback2, LPVOID lpNSInfo, DWORD *timeout, LPVOID lpContext, BOOL ansi)
static HRESULT DP_GetSessionDesc(IDirectPlayImpl *This, void *lpData, DWORD *lpdwDataSize, BOOL bAnsi)
static HRESULT WINAPI IDirectPlay4Impl_CreateGroup(IDirectPlay4 *iface, DPID *lpidGroup, DPNAME *lpGroupName, void *lpData, DWORD dwDataSize, DWORD dwFlags)
static const IDirectPlay2Vtbl dp2_vt
static HRESULT WINAPI IDirectPlay4Impl_DeletePlayerFromGroup(IDirectPlay4 *iface, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay4Impl_SetPlayerName(IDirectPlay4 *iface, DPID idPlayer, DPNAME *lpPlayerName, DWORD dwFlags)
static IDirectPlayImpl * impl_from_IDirectPlay4A(IDirectPlay4A *iface)
static HRESULT WINAPI IDirectPlay2Impl_CreatePlayer(IDirectPlay2 *iface, DPID *lpidPlayer, DPNAME *name, HANDLE event, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay3AImpl_AddGroupToGroup(IDirectPlay3A *iface, DPID parent, DPID group)
static HRESULT WINAPI IDirectPlayImpl_AddPlayerToGroup(IDirectPlay *iface, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay3AImpl_SetSessionDesc(IDirectPlay3A *iface, DPSESSIONDESC2 *sdesc, DWORD flags)
static HRESULT DP_IF_SetPlayerName(IDirectPlayImpl *This, DPID idPlayer, DPNAME *lpPlayerName, DWORD dwFlags, BOOL bAnsi)
static HRESULT WINAPI IDirectPlay4Impl_EnumGroups(IDirectPlay4 *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay4AImpl_SetPlayerName(IDirectPlay4A *iface, DPID idPlayer, DPNAME *lpPlayerName, DWORD dwFlags)
static HRESULT WINAPI IDirectPlay4Impl_DestroyGroup(IDirectPlay4 *iface, DPID idGroup)
static HRESULT WINAPI IDirectPlay2Impl_GetGroupData(IDirectPlay2 *iface, DPID group, void *data, DWORD *size, DWORD flags)
static HRESULT WINAPI IDirectPlay4AImpl_Initialize(IDirectPlay4A *iface, GUID *guid)
static HRESULT WINAPI IDirectPlay2Impl_AddPlayerToGroup(IDirectPlay2 *iface, DPID group, DPID player)
static HRESULT DP_CreateSPPlayer(IDirectPlayImpl *This, DPID dpid, DWORD flags, void *msgHeader)
static IDirectPlayImpl * impl_from_IDirectPlay3A(IDirectPlay3A *iface)
static HRESULT DP_InitializeDPSP(IDirectPlayImpl *This, HMODULE hServiceProvider)
static HRESULT WINAPI IDirectPlay4AImpl_CreatePlayer(IDirectPlay4A *iface, DPID *lpidPlayer, DPNAME *lpPlayerName, HANDLE hEvent, void *lpData, DWORD dwDataSize, DWORD dwFlags)
static HRESULT WINAPI IDirectPlay3AImpl_AddPlayerToGroup(IDirectPlay3A *iface, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay4AImpl_AddPlayerToGroup(IDirectPlay4A *iface, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay2AImpl_GetPlayerData(IDirectPlay2A *iface, DPID player, void *data, DWORD *size, DWORD flags)
static HRESULT WINAPI IDirectPlayImpl_EnumGroupPlayers(IDirectPlay *iface, DPID group, LPDPENUMPLAYERSCALLBACK enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_SetGroupData(IDirectPlay3 *iface, DPID group, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_GetGroupConnectionSettings(IDirectPlay3 *iface, DWORD flags, DPID group, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3AImpl_GetCaps(IDirectPlay3A *iface, DPCAPS *caps, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_DestroyGroup(IDirectPlay3 *iface, DPID group)
static HMODULE DP_LoadSP(LPCGUID lpcGuid, LPSPINITDATA lpSpData, LPBOOL lpbIsDpSp)
static HRESULT WINAPI IDirectPlay4Impl_SetGroupData(IDirectPlay4 *iface, DPID group, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay2Impl_GetPlayerCaps(IDirectPlay2 *iface, DPID player, DPCAPS *caps, DWORD flags)
static ULONG WINAPI IDirectPlay4AImpl_AddRef(IDirectPlay4A *iface)
static HRESULT WINAPI IDirectPlay3AImpl_QueryInterface(IDirectPlay3A *iface, REFIID riid, void **ppv)
static HRESULT WINAPI IDirectPlay2Impl_CreateGroup(IDirectPlay2 *iface, DPID *lpidGroup, DPNAME *name, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay4AImpl_EnumPlayers(IDirectPlay4A *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay4AImpl_Close(IDirectPlay4A *iface)
HRESULT DPL_CreateCompoundAddress(LPCDPCOMPOUNDADDRESSELEMENT lpElements, DWORD dwElementCount, LPVOID lpAddress, LPDWORD lpdwAddressSize, BOOL bAnsiInterface)
static HRESULT WINAPI IDirectPlay2Impl_EnumPlayers(IDirectPlay2 *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_GetPlayerCaps(IDirectPlay2A *iface, DPID player, DPCAPS *caps, DWORD flags)
static HRESULT WINAPI IDirectPlay3AImpl_DeleteGroupFromGroup(IDirectPlay3A *iface, DPID parent, DPID group)
static HRESULT WINAPI IDirectPlay2Impl_Initialize(IDirectPlay2 *iface, GUID *guid)
static HRESULT WINAPI IDirectPlay3AImpl_GetPlayerName(IDirectPlay3A *iface, DPID player, void *data, DWORD *size)
static const IDirectPlay3Vtbl dp3_vt
static HRESULT WINAPI IDirectPlay4Impl_GetGroupConnectionSettings(IDirectPlay4 *iface, DWORD flags, DPID group, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay4Impl_GetPlayerCaps(IDirectPlay4 *iface, DPID player, DPCAPS *caps, DWORD flags)
static DWORD DP_CopyGeneric(DPMSG_GENERIC *genericDst, DPMSG_GENERIC *genericSrc, DWORD genericSize, BOOL ansi)
static HRESULT WINAPI IDirectPlay2Impl_Send(IDirectPlay2 *iface, DPID from, DPID to, DWORD flags, void *data, DWORD size)
static HRESULT WINAPI IDirectPlay4AImpl_DestroyPlayer(IDirectPlay4A *iface, DPID idPlayer)
static HRESULT WINAPI IDirectPlay4AImpl_GetGroupOwner(IDirectPlay4A *iface, DPID group, DPID *owner)
static HRESULT WINAPI IDirectPlay3Impl_GetPlayerName(IDirectPlay3 *iface, DPID player, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3Impl_EnumConnections(IDirectPlay3 *iface, const GUID *application, LPDPENUMCONNECTIONSCALLBACK enumcb, void *context, DWORD flags)
static ULONG WINAPI IDirectPlay2AImpl_AddRef(IDirectPlay2A *iface)
HRESULT DP_CreatePlayer(IDirectPlayImpl *This, void *msgHeader, DPID *lpid, DPNAME *lpName, void *data, DWORD dataSize, void *spData, DWORD spDataSize, DWORD dwFlags, HANDLE hEvent, struct PlayerData **playerData, BOOL bAnsi)
static HRESULT WINAPI IDirectPlay3AImpl_InitializeConnection(IDirectPlay3A *iface, void *connection, DWORD flags)
static HRESULT WINAPI IDirectPlay4Impl_InitializeConnection(IDirectPlay4 *iface, void *connection, DWORD flags)
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)
static HRESULT DP_IF_EnumConnections(IDirectPlayImpl *This, const GUID *lpguidApplication, LPDPENUMCONNECTIONSCALLBACK lpEnumCallback, void *lpContext, DWORD dwFlags, BOOL ansi)
static DWORD DP_CopySetPlayerOrGroupData(DPMSG_GENERIC *genericDst, DPMSG_GENERIC *genericSrc, DWORD genericSize, BOOL ansi)
static HRESULT WINAPI IDirectPlay4AImpl_GetMessageQueue(IDirectPlay4A *iface, DPID from, DPID to, DWORD flags, DWORD *msgs, DWORD *bytes)
static HRESULT WINAPI IDirectPlay4AImpl_CreateGroup(IDirectPlay4A *iface, DPID *lpidGroup, DPNAME *lpGroupName, void *lpData, DWORD dwDataSize, DWORD dwFlags)
static BOOL CALLBACK DP_GetSpLpGuidFromCompoundAddress(REFGUID guidDataType, DWORD dwDataSize, LPCVOID lpData, LPVOID lpContext)
static HRESULT WINAPI IDirectPlay3AImpl_EnumGroups(IDirectPlay3A *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static IDirectPlayImpl * impl_from_IDirectPlay4(IDirectPlay4 *iface)
static HRESULT DP_IF_EnumSessions(IDirectPlayImpl *This, DPSESSIONDESC2 *sdesc, DWORD timeout, LPDPENUMSESSIONSCALLBACK2 enumsessioncb, void *context, DWORD flags, BOOL ansi)
HRESULT WINAPI DirectPlayEnumerateA(LPDPENUMDPCALLBACKA lpEnumCallback, LPVOID lpContext)
static HRESULT WINAPI IDirectPlayImpl_DeletePlayerFromGroup(IDirectPlay *iface, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay4Impl_EnumConnections(IDirectPlay4 *iface, const GUID *application, LPDPENUMCONNECTIONSCALLBACK enumcb, void *context, DWORD flags)
static const IDirectPlay2Vtbl dp2A_vt
static HRESULT WINAPI IDirectPlay2Impl_GetGroupName(IDirectPlay2 *iface, DPID group, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlayImpl_Open(IDirectPlay *iface, DPSESSIONDESC *sdesc)
static HRESULT WINAPI IDirectPlay3AImpl_GetMessageCount(IDirectPlay3A *iface, DPID player, DWORD *count)
static HRESULT WINAPI IDirectPlay3Impl_Open(IDirectPlay3 *iface, DPSESSIONDESC2 *sdesc, DWORD flags)
static HRESULT WINAPI IDirectPlay2Impl_SetSessionDesc(IDirectPlay2 *iface, DPSESSIONDESC2 *sdesc, DWORD flags)
static HRESULT WINAPI IDirectPlay3AImpl_GetPlayerData(IDirectPlay3A *iface, DPID player, void *data, DWORD *size, DWORD flags)
static HRESULT WINAPI IDirectPlay4AImpl_Receive(IDirectPlay4A *iface, DPID *lpidFrom, DPID *lpidTo, DWORD dwFlags, void *lpData, DWORD *lpdwDataSize)
static HRESULT WINAPI IDirectPlay4AImpl_GetPlayerData(IDirectPlay4A *iface, DPID player, void *data, DWORD *size, DWORD flags)
static HRESULT WINAPI IDirectPlay4AImpl_GetPlayerName(IDirectPlay4A *iface, DPID idPlayer, void *lpData, DWORD *lpdwDataSize)
static BOOL CALLBACK cbDPCreateEnumConnections(LPCGUID lpguidSP, LPVOID lpConnection, DWORD dwConnectionSize, LPCDPNAME lpName, DWORD dwFlags, LPVOID lpContext)
static HRESULT DP_IF_GetPlayerName(IDirectPlayImpl *This, DPID idPlayer, void *lpData, DWORD *lpdwDataSize, BOOL bAnsi)
static HRESULT DP_IF_GetGroupName(IDirectPlayImpl *This, DPID idGroup, void *lpData, DWORD *lpdwDataSize, BOOL bAnsi)
static ULONG WINAPI IDirectPlay3AImpl_AddRef(IDirectPlay3A *iface)
#define DPID_NOPARENT_GROUP
static HRESULT WINAPI IDirectPlayImpl_CreateGroup(IDirectPlay *iface, DPID *group, LPSTR name, LPSTR fullname)
static HRESULT WINAPI IDirectPlay3Impl_Receive(IDirectPlay3 *iface, DPID *from, DPID *to, DWORD flags, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3Impl_CreateGroup(IDirectPlay3 *iface, DPID *lpidGroup, DPNAME *name, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_Initialize(IDirectPlay2A *iface, GUID *guid)
struct tagCreateEnum CreateEnumData
static HRESULT WINAPI IDirectPlay4AImpl_Open(IDirectPlay4A *iface, DPSESSIONDESC2 *sdesc, DWORD flags)
static HRESULT WINAPI IDirectPlayImpl_EnumGroups(IDirectPlay *iface, DWORD session, LPDPENUMPLAYERSCALLBACK enumplayercb, void *context, DWORD flags)
static HRESULT DP_IF_SetGroupName(IDirectPlayImpl *This, DPID idGroup, DPNAME *lpGroupName, DWORD dwFlags, BOOL bAnsi)
static HRESULT WINAPI IDirectPlay2AImpl_GetPlayerName(IDirectPlay2A *iface, DPID player, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay4Impl_GetPlayerData(IDirectPlay4 *iface, DPID player, void *data, DWORD *size, DWORD flags)
static DWORD DP_CopyName(DPNAME *dst, const DPNAME *src, BOOL dstAnsi, BOOL srcAnsi)
static BOOL DP_GetRegStringA(HKEY key, const char *name, const char *defaultValue, char **outValue)
static HRESULT WINAPI IDirectPlayImpl_EnumSessions(IDirectPlay *iface, DPSESSIONDESC *sdesc, DWORD timeout, LPDPENUMSESSIONSCALLBACK enumsessioncb, void *context, DWORD flags)
static DPID DP_NextObjectId(void)
HRESULT DP_HandleGameMessage(IDirectPlayImpl *This, void *messageBody, DWORD messageBodySize, DPID fromId, DPID toId)
static HRESULT WINAPI IDirectPlay4AImpl_EnumConnections(IDirectPlay4A *iface, const GUID *lpguidApplication, LPDPENUMCONNECTIONSCALLBACK lpEnumCallback, void *lpContext, DWORD dwFlags)
static HRESULT WINAPI IDirectPlay4AImpl_InitializeConnection(IDirectPlay4A *iface, void *connection, DWORD flags)
static HRESULT WINAPI IDirectPlay4Impl_StartSession(IDirectPlay4 *iface, DWORD flags, DPID group)
static HRESULT WINAPI IDirectPlay3AImpl_CreatePlayer(IDirectPlay3A *iface, DPID *lpidPlayer, DPNAME *name, HANDLE event, void *data, DWORD size, DWORD flags)
static DWORD DP_CopyString(char **dst, const void *src, BOOL dstAnsi, BOOL srcAnsi, void *buffer, DWORD offset)
static HRESULT WINAPI IDirectPlay4AImpl_GetSessionDesc(IDirectPlay4A *iface, void *lpData, DWORD *lpdwDataSize)
static HRESULT WINAPI IDirectPlay4AImpl_SendEx(IDirectPlay4A *iface, DPID from, DPID to, DWORD flags, void *data, DWORD size, DWORD priority, DWORD timeout, void *context, DWORD *msgid)
static HRESULT WINAPI IDirectPlay2AImpl_QueryInterface(IDirectPlay2A *iface, REFIID riid, void **ppv)
static HRESULT WINAPI IDirectPlay4Impl_CreatePlayer(IDirectPlay4 *iface, DPID *lpidPlayer, DPNAME *lpPlayerName, HANDLE hEvent, void *lpData, DWORD dwDataSize, DWORD dwFlags)
static HRESULT WINAPI IDirectPlayImpl_EnableNewPlayers(IDirectPlay *iface, BOOL enable)
static HRESULT WINAPI IDirectPlay4Impl_AddGroupToGroup(IDirectPlay4 *iface, DPID parent, DPID group)
static IDirectPlayImpl * impl_from_IDirectPlay2A(IDirectPlay2A *iface)
static HRESULT WINAPI IDirectPlay3Impl_Close(IDirectPlay3 *iface)
static HRESULT WINAPI IDirectPlay3AImpl_SendChatMessage(IDirectPlay3A *iface, DPID from, DPID to, DWORD flags, DPCHAT *chatmsg)
static HRESULT WINAPI IDirectPlay4AImpl_GetMessageCount(IDirectPlay4A *iface, DPID player, DWORD *count)
struct _DPRGOPContext * lpDPRGOPContext
HRESULT DP_AddPlayerToGroup(IDirectPlayImpl *This, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay4Impl_GetMessageQueue(IDirectPlay4 *iface, DPID from, DPID to, DWORD flags, DWORD *msgs, DWORD *bytes)
static HRESULT WINAPI IDirectPlay4Impl_Open(IDirectPlay4 *iface, DPSESSIONDESC2 *sdesc, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_DestroyGroup(IDirectPlay2A *iface, DPID group)
static DWORD DP_CopyCreatePlayerOrGroup(DPMSG_GENERIC *genericDst, DPMSG_GENERIC *genericSrc, DWORD genericSize, BOOL ansi)
static HRESULT WINAPI IDirectPlay3AImpl_SetPlayerName(IDirectPlay3A *iface, DPID player, DPNAME *name, DWORD flags)
HRESULT dplay_create(REFIID riid, void **ppv)
static HRESULT WINAPI IDirectPlayImpl_GetPlayerCaps(IDirectPlay *iface, DPID player, DPCAPS *caps)
static ULONG WINAPI IDirectPlay3AImpl_Release(IDirectPlay3A *iface)
static HRESULT WINAPI IDirectPlay3Impl_GetSessionDesc(IDirectPlay3 *iface, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlayImpl_DestroyPlayer(IDirectPlay *iface, DPID player)
static HRESULT WINAPI IDirectPlay4AImpl_SetGroupData(IDirectPlay4A *iface, DPID group, void *data, DWORD size, DWORD flags)
static HRESULT DP_SetSessionDesc(IDirectPlayImpl *This, const DPSESSIONDESC2 *lpSessDesc, DWORD dwFlags, BOOL bInitial, BOOL bAnsi)
static HRESULT WINAPI IDirectPlay2Impl_GetCaps(IDirectPlay2 *iface, DPCAPS *caps, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_EnumSessions(IDirectPlay3 *iface, DPSESSIONDESC2 *sdesc, DWORD timeout, LPDPENUMSESSIONSCALLBACK2 enumsessioncb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay4Impl_Initialize(IDirectPlay4 *iface, GUID *guid)
static HRESULT WINAPI IDirectPlay3AImpl_SetGroupData(IDirectPlay3A *iface, DPID group, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_SetSessionDesc(IDirectPlay2A *iface, DPSESSIONDESC2 *sdesc, DWORD flags)
HRESULT DP_CreateGroup(IDirectPlayImpl *This, void *msgHeader, const DPID *lpid, const DPNAME *lpName, void *data, DWORD dataSize, DWORD dwFlags, DPID idParent, BOOL bAnsi)
static HRESULT WINAPI IDirectPlay2AImpl_GetPlayerAddress(IDirectPlay2A *iface, DPID player, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3Impl_EnumGroupPlayers(IDirectPlay3 *iface, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static ULONG WINAPI IDirectPlay2Impl_AddRef(IDirectPlay2 *iface)
static HRESULT WINAPI IDirectPlayImpl_GetMessageCount(IDirectPlay *iface, DPID player, DWORD *count)
static HRESULT WINAPI IDirectPlay3AImpl_SecureOpen(IDirectPlay3A *iface, const DPSESSIONDESC2 *sdesc, DWORD flags, const DPSECURITYDESC *security, const DPCREDENTIALS *credentials)
static BOOL connectionsInitialized
static HRESULT WINAPI IDirectPlay3Impl_Initialize(IDirectPlay3 *iface, GUID *guid)
static HRESULT WINAPI IDirectPlay4AImpl_SetGroupName(IDirectPlay4A *iface, DPID idGroup, DPNAME *lpGroupName, DWORD dwFlags)
static HRESULT WINAPI IDirectPlay4AImpl_SecureOpen(IDirectPlay4A *iface, const DPSESSIONDESC2 *lpsd, DWORD dwFlags, const DPSECURITYDESC *lpSecurity, const DPCREDENTIALS *lpCredentials)
static ULONG WINAPI IDirectPlayImpl_AddRef(IDirectPlay *iface)
static HRESULT WINAPI IDirectPlay3AImpl_Receive(IDirectPlay3A *iface, DPID *from, DPID *to, DWORD flags, void *data, DWORD *size)
static BOOL CALLBACK cbDeletePlayerFromAllGroups(DPID dpId, DWORD dwPlayerType, LPCDPNAME lpName, DWORD dwFlags, LPVOID lpContext)
static HRESULT WINAPI IDirectPlay3AImpl_GetPlayerCaps(IDirectPlay3A *iface, DPID player, DPCAPS *caps, DWORD flags)
static BOOL WINAPI DP_InitConnections(INIT_ONCE *initOnce, void *param, void **context)
static HRESULT WINAPI IDirectPlayImpl_GetPlayerName(IDirectPlay *iface, DPID player, LPSTR name, DWORD *size_name, LPSTR fullname, DWORD *size_fullname)
static BOOL DP_DestroyDirectPlay2(LPVOID lpDP)
static HRESULT WINAPI IDirectPlayImpl_Send(IDirectPlay *iface, DPID from, DPID to, DWORD flags, void *data, DWORD size)
static HRESULT WINAPI IDirectPlay3AImpl_DestroyPlayer(IDirectPlay3A *iface, DPID player)
static IDirectPlayImpl * impl_from_IDirectPlay2(IDirectPlay2 *iface)
static ULONG WINAPI IDirectPlayImpl_Release(IDirectPlay *iface)
static HRESULT WINAPI IDirectPlay3Impl_SecureOpen(IDirectPlay3 *iface, const DPSESSIONDESC2 *sdesc, DWORD flags, const DPSECURITYDESC *security, const DPCREDENTIALS *credentials)
static HRESULT WINAPI IDirectPlayImpl_QueryInterface(IDirectPlay *iface, REFIID riid, void **ppv)
HRESULT WINAPI DirectPlayEnumerateW(LPDPENUMDPCALLBACKW lpEnumCallback, LPVOID lpContext)
static HRESULT WINAPI IDirectPlay4Impl_GetPlayerFlags(IDirectPlay4 *iface, DPID player, DWORD *flags)
static HRESULT WINAPI IDirectPlay3AImpl_EnumGroupsInGroup(IDirectPlay3A *iface, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_SetGroupName(IDirectPlay2A *iface, DPID group, DPNAME *name, DWORD flags)
static HRESULT WINAPI IDirectPlayImpl_DestroyGroup(IDirectPlay *iface, DPID group)
static HRESULT WINAPI IDirectPlay4Impl_GetPlayerAccount(IDirectPlay4 *iface, DPID player, DWORD flags, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay4Impl_CancelPriority(IDirectPlay4 *iface, DWORD minprio, DWORD maxprio, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_SetGroupConnectionSettings(IDirectPlay3 *iface, DWORD flags, DPID group, DPLCONNECTION *connection)
static HRESULT WINAPI IDirectPlay4Impl_EnumGroupsInGroup(IDirectPlay4 *iface, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static void DP_DeletePlayer(IDirectPlayImpl *This, DPID dpid)
static HRESULT WINAPI IDirectPlayImpl_EnumPlayers(IDirectPlay *iface, DWORD session, LPDPENUMPLAYERSCALLBACK enumplayercb, void *context, DWORD flags)
static DWORD CALLBACK DP_EnumSessionsSendAsyncRequestThread(LPVOID lpContext)
static HRESULT WINAPI IDirectPlay4Impl_GetGroupName(IDirectPlay4 *iface, DPID idGroup, void *lpData, DWORD *lpdwDataSize)
static HRESULT WINAPI IDirectPlay4AImpl_CancelMessage(IDirectPlay4A *iface, DWORD msgid, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_EnumPlayers(IDirectPlay2A *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static BOOL DP_GetRegStringW(HKEY key, const WCHAR *name, const char *defaultValue, WCHAR **outValue)
static HRESULT WINAPI IDirectPlay4Impl_SendEx(IDirectPlay4 *iface, DPID from, DPID to, DWORD flags, void *data, DWORD size, DWORD priority, DWORD timeout, void *context, DWORD *msgid)
static HRESULT WINAPI IDirectPlay3AImpl_GetGroupName(IDirectPlay3A *iface, DPID group, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay4AImpl_GetPlayerFlags(IDirectPlay4A *iface, DPID player, DWORD *flags)
static HRESULT WINAPI IDirectPlayImpl_SaveSession(IDirectPlay *iface, LPSTR reserved)
static HRESULT WINAPI IDirectPlay4Impl_SetGroupName(IDirectPlay4 *iface, DPID idGroup, DPNAME *lpGroupName, DWORD dwFlags)
static HRESULT WINAPI IDirectPlay3AImpl_GetSessionDesc(IDirectPlay3A *iface, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3AImpl_SetPlayerData(IDirectPlay3A *iface, DPID player, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay4Impl_CreateGroupInGroup(IDirectPlay4 *iface, DPID idParentGroup, DPID *lpidGroup, DPNAME *lpGroupName, void *lpData, DWORD dwDataSize, DWORD dwFlags)
static HRESULT WINAPI IDirectPlay3Impl_GetGroupData(IDirectPlay3 *iface, DPID group, void *data, DWORD *size, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_EnumSessions(IDirectPlay2A *iface, DPSESSIONDESC2 *sdesc, DWORD timeout, LPDPENUMSESSIONSCALLBACK2 enumsessioncb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_AddGroupToGroup(IDirectPlay3 *iface, DPID parent, DPID group)
static void DP_ReadConnections(const char *searchSubKey, DWORD dwFlags, const GUID *addressDataType, struct list *connections)
static lpPlayerList DP_FindPlayer(IDirectPlayImpl *This, DPID dpid)
static HRESULT WINAPI IDirectPlay4Impl_GetGroupParent(IDirectPlay4 *iface, DPID group, DPID *parent)
static DPNAME * DP_DuplicateName(const DPNAME *src, BOOL dstAnsi, BOOL srcAnsi)
static void DP_SetPlayerData(lpPlayerData lpPData, DWORD dwFlags, LPVOID lpData, DWORD dwDataSize)
static IDirectPlayImpl * impl_from_IDirectPlay3(IDirectPlay3 *iface)
static HRESULT WINAPI IDirectPlay4Impl_Close(IDirectPlay4 *iface)
static HRESULT WINAPI IDirectPlay2AImpl_EnumGroups(IDirectPlay2A *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_GetSessionDesc(IDirectPlay2A *iface, void *data, DWORD *size)
static const IDirectPlay3Vtbl dp3A_vt
struct _DPFAGContext DPFAGContext
static HRESULT WINAPI IDirectPlay2AImpl_SetPlayerData(IDirectPlay2A *iface, DPID player, void *data, DWORD size, DWORD flags)
static HRESULT WINAPI IDirectPlay2Impl_Receive(IDirectPlay2 *iface, DPID *from, DPID *to, DWORD flags, void *data, DWORD *size)
static const IDirectPlayVtbl dp_vt
static HRESULT WINAPI IDirectPlay2AImpl_SetPlayerName(IDirectPlay2A *iface, DPID player, DPNAME *name, DWORD flags)
static HRESULT WINAPI IDirectPlay4AImpl_DeletePlayerFromGroup(IDirectPlay4A *iface, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay3Impl_EnumGroupsInGroup(IDirectPlay3 *iface, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT WINAPI IDirectPlay2AImpl_DeletePlayerFromGroup(IDirectPlay2A *iface, DPID group, DPID player)
static HRESULT WINAPI IDirectPlay4Impl_SetSessionDesc(IDirectPlay4 *iface, DPSESSIONDESC2 *lpSessDesc, DWORD dwFlags)
void DP_FreeConnections(void)
HRESULT DP_GetSPPlayerData(IDirectPlayImpl *lpDP, DPID idPlayer, void **lplpData)
static HRESULT WINAPI IDirectPlay4AImpl_SetSessionDesc(IDirectPlay4A *iface, DPSESSIONDESC2 *lpSessDesc, DWORD dwFlags)
static HRESULT WINAPI IDirectPlay4AImpl_GetGroupConnectionSettings(IDirectPlay4A *iface, DWORD flags, DPID group, void *data, DWORD *size)
static HRESULT WINAPI IDirectPlay3AImpl_EnumGroupPlayers(IDirectPlay3A *iface, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static const IDirectPlay4Vtbl dp4A_vt
static HRESULT WINAPI IDirectPlay2AImpl_DestroyPlayer(IDirectPlay2A *iface, DPID player)
static HRESULT WINAPI IDirectPlay2AImpl_GetCaps(IDirectPlay2A *iface, DPCAPS *caps, DWORD flags)
static HRESULT WINAPI IDirectPlay4AImpl_SendChatMessage(IDirectPlay4A *iface, DPID from, DPID to, DWORD flags, DPCHAT *chatmsg)
static HRESULT DP_IF_Receive(IDirectPlayImpl *This, DPID *lpidFrom, DPID *lpidTo, DWORD dwFlags, void *lpData, DWORD *lpdwDataSize, BOOL bAnsi)
static HRESULT WINAPI IDirectPlay3AImpl_SetGroupConnectionSettings(IDirectPlay3A *iface, DWORD flags, DPID group, DPLCONNECTION *connection)
static HRESULT WINAPI IDirectPlay4Impl_GetCaps(IDirectPlay4 *iface, DPCAPS *caps, DWORD flags)
static HRESULT WINAPI IDirectPlay4AImpl_SetGroupConnectionSettings(IDirectPlay4A *iface, DWORD flags, DPID group, DPLCONNECTION *connection)
static HRESULT WINAPI IDirectPlay4AImpl_EnumGroupsInGroup(IDirectPlay4A *iface, DPID group, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static HRESULT DP_QueuePlayerMessage(IDirectPlayImpl *This, DPID fromId, struct PlayerData *player, DPID excludeId, void *msg, FN_COPY_MESSAGE *copyMessage, DWORD genericSize)
static HRESULT WINAPI IDirectPlay3AImpl_Close(IDirectPlay3A *iface)
static HRESULT WINAPI IDirectPlayImpl_GetCaps(IDirectPlay *iface, DPCAPS *caps)
static HRESULT WINAPI IDirectPlay4AImpl_StartSession(IDirectPlay4A *iface, DWORD flags, DPID group)
static HRESULT WINAPI IDirectPlay4Impl_GetGroupOwner(IDirectPlay4 *iface, DPID group, DPID *owner)
DPSESSIONDESC2 * DP_DuplicateSessionDesc(const DPSESSIONDESC2 *src, BOOL dstAnsi, BOOL srcAnsi)
static ULONG WINAPI IDirectPlay4Impl_Release(IDirectPlay4 *iface)
static DPID DP_GetRemoteNextObjectId(void)
static HRESULT WINAPI IDirectPlay3AImpl_GetGroupFlags(IDirectPlay3A *iface, DPID group, DWORD *flags)
static HRESULT WINAPI IDirectPlay4AImpl_CancelPriority(IDirectPlay4A *iface, DWORD minprio, DWORD maxprio, DWORD flags)
static void DP_DeleteSPPlayer(IDirectPlayImpl *This, DPID dpid)
static HRESULT WINAPI IDirectPlay4AImpl_GetGroupName(IDirectPlay4A *iface, DPID idGroup, void *lpData, DWORD *lpdwDataSize)
static HRESULT WINAPI IDirectPlay2Impl_DestroyGroup(IDirectPlay2 *iface, DPID group)
static HRESULT WINAPI IDirectPlay4AImpl_GetGroupData(IDirectPlay4A *iface, DPID group, void *data, DWORD *size, DWORD flags)
static HRESULT WINAPI IDirectPlay3Impl_GetCaps(IDirectPlay3 *iface, DPCAPS *caps, DWORD flags)
static HRESULT DP_SecureOpen(IDirectPlayImpl *This, const DPSESSIONDESC2 *lpsd, DWORD dwFlags, const DPSECURITYDESC *lpSecurity, const DPCREDENTIALS *lpCredentials, BOOL bAnsi)
static HRESULT WINAPI IDirectPlay4Impl_EnumPlayers(IDirectPlay4 *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags)
static ULONG WINAPI IDirectPlay4AImpl_Release(IDirectPlay4A *iface)
static BOOL DP_GetRegString(HKEY key, const void *name, const char *defaultValue, void **outValue, BOOL ansi)
static HRESULT WINAPI IDirectPlay4AImpl_GetCaps(IDirectPlay4A *iface, DPCAPS *caps, DWORD flags)
static HRESULT WINAPI IDirectPlay3AImpl_SetGroupName(IDirectPlay3A *iface, DPID group, DPNAME *name, DWORD flags)
static ULONG WINAPI IDirectPlay3Impl_Release(IDirectPlay3 *iface)
static HRESULT WINAPI IDirectPlay4Impl_Receive(IDirectPlay4 *iface, DPID *lpidFrom, DPID *lpidTo, DWORD dwFlags, void *lpData, DWORD *lpdwDataSize)
#define IDirectPlayX_Initialize(p, a)
#define IDirectPlayX_Release(p)
#define DPERR_INVALIDOBJECT
#define DPENUMPLAYERS_LOCAL
#define IDirectPlayX_GetGroupOwner(p, a, b)
#define DPERR_ACCESSDENIED
#define IDirectPlayX_CancelPriority(p, a, b, c)
#define DPPLAYERTYPE_PLAYER
#define IDirectPlayX_SetGroupConnectionSettings(p, a, b, c)
#define DPENUMPLAYERS_GROUP
#define IDirectPlayX_QueryInterface(p, a, b)
#define IDirectPlayX_Receive(p, a, b, c, d, e)
#define IDirectPlayX_Open(p, a, b)
struct IDirectPlay3 * LPDIRECTPLAY3A
#define DPERR_CANTADDPLAYER
#define IDirectPlayX_GetPlayerName(p, a, b, c)
#define IDirectPlayX_SecureOpen(p, a, b, c, d)
#define IDirectPlayX_AddGroupToGroup(p, a, b)
#define IDirectPlayX_CreatePlayer(p, a, b, c, d, e, f)
struct IDirectPlay * LPDIRECTPLAY
#define IDirectPlayX_CreateGroup(p, a, b, c, d, e)
#define IDirectPlayX_SetPlayerName(p, a, b, c)
#define DPID_SERVERPLAYER
#define IDirectPlayX_GetGroupFlags(p, a, b)
BOOL(CALLBACK * LPDPENUMSESSIONSCALLBACK)(LPDPSESSIONDESC lpDPSessionDesc, LPVOID lpContext, LPDWORD lpdwTimeOut, DWORD dwFlags)
#define IDirectPlayX_SendChatMessage(p, a, b, c, d)
#define DPERR_UNINITIALIZED
#define IDirectPlayX_Send(p, a, b, c, d, e)
#define DPERR_INVALIDGROUP
#define IDirectPlayX_CreateGroupInGroup(p, a, b, c, d, e, f)
#define DPPLAYER_SERVERPLAYER
#define DPRECEIVE_TOPLAYER
#define IDirectPlayX_EnumConnections(p, a, b, c, d)
#define IDirectPlayX_EnumGroupPlayers(p, a, b, c, d, e)
#define IDirectPlayX_CancelMessage(p, a, b)
#define DPENUMPLAYERS_REMOTE
#define IDirectPlayX_GetGroupData(p, a, b, c, d)
struct tagDPMSG_SETPLAYERORGROUPDATA DPMSG_SETPLAYERORGROUPDATA
#define IDirectPlayX_AddPlayerToGroup(p, a, b)
#define IDirectPlayX_EnumPlayers(p, a, b, c, d)
#define DPPLAYER_SPECTATOR
#define IDirectPlayX_SetPlayerData(p, a, b, c, d)
#define DPENUMSESSIONS_ASYNC
#define DPCONNECTION_DIRECTPLAY
#define IDirectPlayX_StartSession(p, a, b)
#define DPSEND_GUARANTEED
#define DPERR_BUFFERTOOSMALL
#define DPOPEN_RETURNSTATUS
#define DPERR_ALREADYINITIALIZED
#define DPERR_INVALIDFLAGS
#define DPPLAYERTYPE_GROUP
#define IDirectPlayX_SetGroupData(p, a, b, c, d)
BOOL(CALLBACK * LPDPENUMCONNECTIONSCALLBACK)(LPCGUID lpguidSP, LPVOID lpConnection, DWORD dwConnectionSize, LPCDPNAME lpName, DWORD dwFlags, LPVOID lpContext)
#define IDirectPlayX_SendEx(p, a, b, c, d, e, f, g, h, i)
#define DPENUMGROUPS_REMOTE
#define DPSESSION_MULTICASTSERVER
#define DPENUMPLAYERS_OWNER
#define IDirectPlayX_DestroyGroup(p, a)
#define IDirectPlayX_DeletePlayerFromGroup(p, a, b)
#define IDirectPlayX_GetGroupParent(p, a, b)
BOOL(CALLBACK * LPDPENUMPLAYERSCALLBACK)(DPID dpId, LPSTR lpFriendlyName, LPSTR lpFormalName, DWORD dwFlags, LPVOID lpContext)
#define DPSYS_SETPLAYERORGROUPDATA
#define IDirectPlayX_GetMessageQueue(p, a, b, c, d, e)
#define DPENUMSESSIONS_STOPASYNC
#define IDirectPlayX_DestroyPlayer(p, a)
#define IDirectPlayX_InitializeConnection(p, a, b)
#define IDirectPlayX_GetCaps(p, a, b)
#define DPERR_UNAVAILABLE
#define DPMESSAGEQUEUE_RECEIVE
BOOL(CALLBACK * LPDPENUMSESSIONSCALLBACK2)(LPCDPSESSIONDESC2 lpThisSD, LPDWORD lpdwTimeOut, DWORD dwFlags, LPVOID lpContext)
#define IDirectPlayX_GetPlayerFlags(p, a, b)
struct tagDPMSG_CREATEPLAYERORGROUP DPMSG_CREATEPLAYERORGROUP
#define DPERR_INVALIDPLAYER
struct IDirectPlay3 IDirectPlay3A
#define DPERR_INVALIDPARAMS
#define DPSYS_CREATEPLAYERORGROUP
struct IDirectPlay4 IDirectPlay4A
#define IDirectPlayX_GetGroupName(p, a, b, c)
#define IDirectPlayX_GetPlayerData(p, a, b, c, d)
#define IDirectPlayX_SetGroupName(p, a, b, c)
#define DPERR_OUTOFMEMORY
#define IDirectPlayX_EnumGroupsInGroup(p, a, b, c, d, e)
#define DPERR_INVALIDPARAM
#define IDirectPlayX_EnumSessions(p, a, b, c, d, e)
#define DPMESSAGEQUEUE_SEND
BOOL(CALLBACK * LPDPENUMDPCALLBACKA)(LPGUID lpguidSP, LPSTR lpSPName, DWORD dwMajorVersion, DWORD dwMinorVersion, LPVOID lpContext)
struct IDirectPlay2 IDirectPlay2A
#define IDirectPlayX_Close(p)
#define DPRECEIVE_FROMPLAYER
BOOL(CALLBACK * LPDPENUMPLAYERSCALLBACK2)(DPID dpId, DWORD dwPlayerType, LPCDPNAME lpName, DWORD dwFlags, LPVOID lpContext)
#define IDirectPlayX_GetPlayerAddress(p, a, b, c)
#define IDirectPlayX_GetPlayerCaps(p, a, b, c)
#define IDirectPlayX_GetPlayerAccount(p, a, b, c, d)
#define DPSYS_ADDPLAYERTOGROUP
#define IDirectPlayX_GetGroupConnectionSettings(p, a, b, c, d)
#define IDirectPlayX_EnumGroups(p, a, b, c, d)
#define IDirectPlayX_GetMessageCount(p, a, b)
#define IDirectPlayX_GetSessionDesc(p, a, b)
#define DPENUMGROUPS_LOCAL
#define DPCONNECTION_DIRECTPLAYLOBBY
#define IDirectPlayX_SetSessionDesc(p, a, b)
BOOL(CALLBACK * LPDPENUMDPCALLBACKW)(LPGUID lpguidSP, LPWSTR lpSPName, DWORD dwMajorVersion, DWORD dwMinorVersion, LPVOID lpContext)
struct tagDPSESSIONDESC2 DPSESSIONDESC2
#define IDirectPlayX_SetGroupOwner(p, a, b)
#define IDirectPlayX_DeleteGroupFromGroup(p, a, b)
DWORD FN_COPY_MESSAGE(DPMSG_GENERIC *genericDst, DPMSG_GENERIC *genericSrc, DWORD genericSize, BOOL ansi)
LPVOID DPSP_CreateSPPlayerData(void)
HRESULT DPL_EnumAddress(LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, LPCVOID lpAddress, DWORD dwAddressSize, LPVOID lpContext)
HRESULT dplobbysp_create(REFIID riid, void **ppv, IDirectPlayImpl *dp)
HRESULT dplaysp_create(REFIID riid, void **ppv, IDirectPlayImpl *dp)
#define DPLAYI_GROUP_HIDDEN
#define IDirectPlaySP_SetSPPlayerData(p, a, b, c, d)
HRESULT(WINAPI * LPDPSP_SPINIT)(LPSPINITDATA)
#define IDirectPlaySP_Release(p)
#define DPLAYI_GROUP_SYSGROUP
#define DPSP_MAJORVERSION
#define DPLAYI_PLAYER_PLAYERLOCAL
#define DPCANCELSEND_PRIORITY
#define DPLAYI_GROUP_DPLAYOWNS
#define DPLAYI_PLAYER_APPSERVER
#define DPLAYI_PLAYER_SYSPLAYER
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
static void *static void *static LPDIRECTPLAY * lplpDP
LPCSTR DPLAYX_HresultToString(HRESULT hr)
HRESULT DP_MSG_ReadPackedPlayer(char *data, DWORD *inoutOffset, DWORD maxSize, DPPLAYERINFO *playerInfo)
void DP_MSG_ReplyReceived(IDirectPlayImpl *This, WORD wCommandId, const void *lpcMsgBody, DWORD dwMsgBodySize, const void *msgHeader)
HRESULT DP_MSG_SendAddPlayerToGroup(IDirectPlayImpl *This, DPID toId, DPID playerId, DPID groupId)
HRESULT DP_MSG_ForwardPlayerCreation(IDirectPlayImpl *This, DPID dpidServer, WCHAR *password)
void DP_MSG_ToSelf(IDirectPlayImpl *This, DPID dpidSelf)
HRESULT DP_MSG_SendPingReply(IDirectPlayImpl *This, DPID toId, DPID fromId, DWORD tickCount)
HRESULT DP_MSG_SendAddForwardAck(IDirectPlayImpl *This, DPID id)
HRESULT DP_MSG_SendRequestPlayerId(IDirectPlayImpl *This, DWORD dwFlags, DPID *lpdpidAllocatedId)
DWORD DP_MSG_ComputeMessageSize(SGBUFFER *buffers, DWORD bufferCount)
HRESULT DP_MSG_SendCreatePlayer(IDirectPlayImpl *This, DPID toId, DPID id, DWORD flags, DPNAME *name, void *playerData, DWORD playerDataSize, DPID systemPlayerId)
#define DPMSGCMD_GROUPDATACHANGED
#define DPMSGCMD_SUPERENUMPLAYERSREPLY
#define DPMSGCMD_ENUMSESSIONSREQUEST
#define DPMSGCMD_CREATESESSION
#define DPMSGCMD_GETNAMETABLEREPLY
struct tagDPMSG_CREATESESSION DPMSG_CREATESESSION
#define DPMSG_WAIT_5_SECS
#define DPMSGCMD_FORWARDADDPLAYER
#define DPMSGCMD_ENUMSESSIONSREPLY
#define DPMSGCMD_REQUESTNEWPLAYERID
#define DPMSGCMD_NEWPLAYERIDREPLY
#define DPMSGCMD_ADDFORWARD
#define DPMSGCMD_JUSTENVELOPE
struct tagDPMSG_SYSMSGENVELOPE DPMSG_SYSMSGENVELOPE
#define DPMSGCMD_FORWARDADDPLAYERNACK
struct tagDPMSG_NEWPLAYERIDREPLY * LPDPMSG_NEWPLAYERIDREPLY
#define DPMSGMAGIC_DPLAYMSG
#define DPQ_REMOVE_ENTRY(head, elm, field, fieldCompareOperator, fieldToCompare, rc)
#define DPQ_INSERT(a, b, c)
#define DPQ_INSERT_IN_TAIL(head, elm, field)
#define DPQ_FIND_ENTRY(head, elm, field, fieldCompareOperator, fieldToCompare, rc)
#define DPQ_REMOVE(head, elm, field)
#define DPQ_DECL_DELETECB(name, type)
HRESULT WINAPI SPInit(LPSPINITDATA)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLsizei bufsize
HRESULT(WINAPI * LPSP_INIT)(LPSPDATA_INIT)
#define memcpy(s1, s2, n)
HRESULT NS_SendSessionRequestBroadcast(LPCGUID lpcGuid, DWORD dwFlags, WCHAR *password, const SPINITDATA *lpSpData)
void NS_SetLocalComputerAsNameServer(LPCDPSESSIONDESC2 lpsd, LPVOID lpNSInfo)
BOOL NS_InitializeSessionCache(LPVOID *lplpNSInfo)
void NS_InvalidateSessionCache(LPVOID lpNSInfo)
void NS_ReplyToEnumSessionsRequest(const void *lpcMsg, void **lplpReplyData, DWORD *lpdwReplySize, IDirectPlayImpl *lpDP)
void NS_AddRemoteComputerAsNameServer(LPCVOID lpcNSAddrHdr, DWORD dwHdrSize, LPCDPMSG_ENUMSESSIONSREPLY lpcMsg, DWORD msgSize, LPVOID lpNSInfo)
void NS_ResetSessionEnumeration(LPVOID lpNSInfo)
void NS_PruneSessionCache(LPVOID lpNSInfo)
LPDPSESSIONDESC2 NS_WalkSessions(LPVOID lpNSInfo, void **spMessageHeader, BOOL ansi)
void NS_SetLocalAddr(LPVOID lpNSInfo, LPCVOID lpHdr, DWORD dwHdrSize)
void NS_DeleteSessionCache(LPVOID lpNSInfo)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define IsEqualGUID(rguid1, rguid2)
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
__WINE_SERVER_LIST_INLINE struct list * list_tail(const struct list *list)
FN_COPY_MESSAGE * copyMessage
IDirectPlay4 IDirectPlay4_iface
DPMSG_SENDENVELOPE envelope
DWORD WINAPI SleepEx(IN DWORD dwMilliseconds, IN BOOL bAlertable)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
#define CONTAINING_RECORD(address, type, field)
static UINT WPARAM LPARAM BOOL ansi
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI DebugBreak(void)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define INIT_ONCE_STATIC_INIT
#define CLASS_E_NOAGGREGATION
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
#define HKEY_LOCAL_MACHINE
#define DUPLICATE_SAME_ACCESS