25#define NONAMELESSUNION
77#define DPID_NOPARENT_GROUP 0
78#define DPID_SYSTEM_GROUP DPID_NOPARENT_GROUP
80#define DPID_NAME_SERVER 0x19a9d65b
83#define DPMSG_CREATEGROUP_DWFLAGS(x) ( (x) & DPGROUP_HIDDEN )
86#define DPMSG_CREATEPLAYER_DWFLAGS(x) 0
139 This->dp2->dwEnumSessionLock = 0;
156 sizeof( *
This->dp2->lpSessionDesc ) );
157 if(
This->dp2->lpSessionDesc ==
NULL )
162 This->dp2->lpSessionDesc->dwSize =
sizeof( *
This->dp2->lpSessionDesc );
168 sizeof( *
This->dp2->spData.lpCB ) );
169 This->dp2->spData.lpCB->dwSize =
sizeof( *
This->dp2->spData.lpCB );
182 sizeof( *
This->dp2->dplspData.lpCB ) );
183 This->dp2->dplspData.lpCB->dwSize =
sizeof( *
This->dp2->dplspData.lpCB );
213 if(
This->dp2->spData.lpCB->ShutdownEx )
217 TRACE(
"Calling SP ShutdownEx\n" );
219 data.lpISP =
This->dp2->spData.lpISP;
221 (*
This->dp2->spData.lpCB->ShutdownEx)( &
data );
223 else if (
This->dp2->spData.lpCB->Shutdown )
225 TRACE(
"Calling obsolete SP Shutdown\n" );
226 (*
This->dp2->spData.lpCB->Shutdown)();
230 if(
This->dp2->hServiceProvider != 0 )
236 if(
This->dp2->hDPLobbyProvider != 0 )
259 obj->lock.DebugInfo->Spare[0] = 0;
271 DWORD dwMessageBodySize,
const void *lpcMessageHeader,
WORD wCommandId,
WORD wVersion,
272 void **lplpReply,
DWORD *lpdwMsgSize )
274 TRACE(
"(%p)->(%p,0x%08x,%p,%u,%u)\n",
275 This, lpcMessageBody, dwMessageBodySize, lpcMessageHeader, wCommandId,
290 This->dp2->spData.dwSPHeaderSize,
292 This->dp2->lpNameServerData );
301 *lpdwMsgSize =
This->dp2->spData.dwSPHeaderSize +
sizeof( *lpReply );
305 FIXME(
"Ignoring dwFlags 0x%08x in request msg\n",
310 This->dp2->spData.dwSPHeaderSize );
318 TRACE(
"Allocating new playerid 0x%08x from remote request\n",
329 TRACE(
"GOT THE SELF MESSAGE: %p -> 0x%08x\n", lpcMessageHeader, ((
const DWORD *)lpcMessageHeader)[1] );
334 TRACE(
"Sending message to self to get my addr\n" );
343 FIXME(
"Unknown wCommandId %u. Ignoring message\n", wCommandId );
429 FIXME(
"(%p)->(0x%08x): stub\n",
This, player );
475 FIXME(
"(%p)->(%p,%u,%p,%p,0x%08x): stub\n",
This, sdesc,
timeout, enumsessioncb,
context,
483 FIXME(
"(%p)->(%p): stub\n",
This, caps );
498 FIXME(
"(%p)->(0x%08x,%p): stub\n",
This, player, caps );
506 FIXME(
"(%p)->(0x%08x,%p,%p,%p,%p): stub\n",
This, player,
name, size_name,
fullname,
521 FIXME(
"(%p)->(%p): stub\n",
This, sdesc );
529 FIXME(
"(%p)->(%p,%p,0x%08x,%p,%p): stub\n",
This,
from, to,
flags,
data,
size );
544 FIXME(
"(%p)->(0x%08x,0x%08x,0x%08x,%p,%u): stub\n",
This,
from, to,
flags,
data,
size );
557static const IDirectPlayVtbl
dp_vt =
630 *
ppv = &
This->IDirectPlay_iface;
635 *
ppv = &
This->IDirectPlay_iface;
640 *
ppv = &
This->IDirectPlay2A_iface;
645 *
ppv = &
This->IDirectPlay2_iface;
650 *
ppv = &
This->IDirectPlay3A_iface;
655 *
ppv = &
This->IDirectPlay3_iface;
660 *
ppv = &
This->IDirectPlay4A_iface;
665 *
ppv = &
This->IDirectPlay4_iface;
896 plist->lpPData->uRef++;
900 DPQ_INSERT(gdata->players, newplist, players);
903 if (
This->dp2->spData.lpCB->AddPlayerToGroup )
907 TRACE(
"Calling SP AddPlayerToGroup\n" );
909 data.idPlayer = player;
911 data.lpISP =
This->dp2->spData.lpISP;
913 (*
This->dp2->spData.lpCB->AddPlayerToGroup)( &
data );
921 if (
This->dp2->lpSessionDesc &&
928 msg.dpIdPlayer = player;
982 if(
This->dp2->spData.lpCB->CloseEx )
986 TRACE(
"Calling SP CloseEx\n" );
987 data.lpISP =
This->dp2->spData.lpISP;
988 hr = (*
This->dp2->spData.lpCB->CloseEx)( &
data );
990 else if (
This->dp2->spData.lpCB->Close )
992 TRACE(
"Calling SP Close (obsolete interface)\n" );
993 hr = (*
This->dp2->spData.lpCB->Close)();
1007 if( lpGData ==
NULL )
1016 lpGData->
dpid = *lpid;
1021 lpGData->
parent = idParent;
1026 TRACE(
"Created group id 0x%08x\n", *lpid );
1036 TRACE(
"(%p)->(0x%08x)\n",
This, dpid );
1040 if( lpGList ==
NULL )
1042 ERR(
"DPID 0x%08x not found\n", dpid );
1048 FIXME(
"Why is this not the last reference to group?\n" );
1065 TRACE(
"(%p)->(0x%08x)\n",
This, dpid );
1069 return This->dp2->lpSysGroup;
1076 if( lpGroups ==
NULL )
1089 TRACE(
"(%p)->(%p,%p,%p,%p,0x%08x,0x%08x,%u)\n",
1090 This, lpMsgHdr, lpidGroup, lpGroupName, lpData, dwDataSize,
1104 if(
This->dp2->bHostInterface )
1117 if( lpGData ==
NULL )
1124 This->dp2->lpSysGroup = lpGData;
1125 TRACE(
"Inserting system group\n" );
1147 if(
This->dp2->spData.lpCB->CreateGroup )
1150 DWORD dwCreateFlags = 0;
1152 TRACE(
"Calling SP CreateGroup\n" );
1157 if( lpMsgHdr ==
NULL )
1163 data.idGroup = *lpidGroup;
1164 data.dwFlags = dwCreateFlags;
1165 data.lpSPMessageHeader = lpMsgHdr;
1166 data.lpISP =
This->dp2->spData.lpISP;
1168 (*
This->dp2->spData.lpCB->CreateGroup)( &
data );
1175 if( ( lpMsgHdr ==
NULL ) &&
1176 This->dp2->lpSessionDesc &&
1183 msg.dpId = *lpidGroup;
1184 msg.dwCurrentPlayers = 0;
1185 msg.lpData = lpData;
1186 msg.dwDataSize = dwDataSize;
1187 msg.dpnName = *lpGroupName;
1281 if( lpData !=
NULL )
1308 if( lpPData ==
NULL )
1314 lpPData->
dpid = *lpid;
1329 ERR(
"Can't duplicate player msg handle %p\n",
hEvent );
1336 TRACE(
"Created player id 0x%08x\n", *lpid );
1339 This->dp2->lpSessionDesc->dwCurrentPlayers++;
1357 TRACE(
"(%p)->(0x%08x)\n",
This, dpid );
1361 if( lpPList ==
NULL )
1363 ERR(
"DPID 0x%08x not found\n", dpid );
1370 FIXME(
"Why is this not the last reference to player?\n" );
1388 TRACE(
"(%p)->(0x%08x)\n",
This, dpid );
1393 DPQ_FIND_ENTRY(
This->dp2->lpSysGroup->players, players, lpPData->dpid, ==, dpid, lpPlayers );
1404 lpDst->
dwSize =
sizeof( *lpDst );
1408 if( lpSrc->
dwSize !=
sizeof( *lpSrc) )
1479 if( lpData !=
NULL )
1505 DWORD dwCreateFlags = 0;
1507 TRACE(
"(%p)->(%p,%p,%p,%p,0x%08x,0x%08x,%u)\n",
1508 This, lpidPlayer, lpPlayerName,
hEvent, lpData,
1520 if( lpidPlayer ==
NULL )
1550 if( lpMsgHdr ==
NULL )
1561 ERR(
"unknown dwFlags = 0x%08x\n",
dwFlags );
1568 if(
This->dp2->bHostInterface )
1596 if( !lpPData || !lpPList )
1613 if(
This->dp2->spData.lpCB->CreatePlayer )
1617 data.idPlayer = *lpidPlayer;
1618 data.dwFlags = dwCreateFlags;
1619 data.lpSPMessageHeader = lpMsgHdr;
1620 data.lpISP =
This->dp2->spData.lpISP;
1622 TRACE(
"Calling SP CreatePlayer 0x%08x: dwFlags: 0x%08x lpMsgHdr: %p\n",
1623 *lpidPlayer,
data.dwFlags,
data.lpSPMessageHeader );
1625 hr = (*
This->dp2->spData.lpCB->CreatePlayer)( &
data );
1635 if(
This->dp2->spData.lpCB->AddPlayerToGroup )
1639 data.idPlayer = *lpidPlayer;
1641 data.lpISP =
This->dp2->spData.lpISP;
1643 TRACE(
"Calling SP AddPlayerToGroup (sys group)\n" );
1645 hr = (*
This->dp2->spData.lpCB->AddPlayerToGroup)( &
data );
1650 ERR(
"Failed to add player to sys group with sp: %s\n",
1656 if( !
This->dp2->bHostInterface )
1664 TRACE(
"Sending message to self to get my addr\n" );
1675 if( ( lpMsgHdr ==
NULL ) &&
1676 This->dp2->lpSessionDesc &&
1683 msg.dpId = *lpidPlayer;
1684 msg.dwCurrentPlayers = 0;
1685 msg.lpData = lpData;
1686 msg.dwDataSize = dwDataSize;
1687 msg.dpnName = *lpPlayerName;
1739 if( lpidPlayer ==
NULL )
1762 if( lpidPlayer ==
NULL )
1849 plist->lpPData->uRef--;
1855 if (
This->dp2->spData.lpCB->RemovePlayerFromGroup )
1859 TRACE(
"Calling SP RemovePlayerFromGroup\n" );
1860 data.idPlayer = player;
1862 data.lpISP =
This->dp2->spData.lpISP;
1863 hr = (*
This->dp2->spData.lpCB->RemovePlayerFromGroup)( &
data );
1867 FIXME(
"Need to send a message\n" );
1889 TRACE(
"Removing element:0x%08x (type:0x%08x) from element:0x%08x\n",
1890 dpId, dwPlayerType, lpCtxt->
idGroup );
1896 ERR(
"Unable to delete group 0x%08x from group 0x%08x\n", dpId, lpCtxt->
idGroup );
1900 ERR(
"Unable to delete player 0x%08x from grp 0x%08x\n", dpId, lpCtxt->
idGroup );
1910 FIXME(
"(%p)->(%p,0x%08x,%u): semi stub\n",
1911 This, lpMsgHdr, idGroup, bAnsi );
1939 if(
This->dp2->spData.lpCB->DeleteGroup )
1943 FIXME(
"data.dwFlags is incorrect\n" );
1945 data.idGroup = idGroup;
1947 data.lpISP =
This->dp2->spData.lpISP;
1949 (*
This->dp2->spData.lpCB->DeleteGroup)( &
data );
1952 FIXME(
"Send out a DESTORYPLAYERORGROUP message\n" );
2005 FIXME(
"(%p)->(%p,0x%08x,%u): semi stub\n",
2006 This, lpMsgHdr, idPlayer, bAnsi );
2022 cbContext.
bAnsi = bAnsi;
2033 if(
This->dp2->spData.lpCB->DeletePlayer )
2037 FIXME(
"data.dwFlags is incorrect\n" );
2039 data.idPlayer = idPlayer;
2041 data.lpISP =
This->dp2->spData.lpISP;
2043 (*
This->dp2->spData.lpCB->DeletePlayer)( &
data );
2046 FIXME(
"Send a DELETEPLAYERORGROUP msg\n" );
2074 ERR(
"Group callback has dwPlayerType = 0x%08x\n", dwPlayerType );
2302 FIXME(
": not checking for conditions\n" );
2313 TRACE(
"EnumSessionsCallback2 invoked\n" );
2314 if( !lpEnumSessionsCallback2( lpSessionDesc, &
dwTimeout, 0, lpContext ) )
2327 HANDLE hSuicideRequest =
data->hSuicideRequest;
2339 TRACE(
"Thread terminating on terminate request\n" );
2345 data->dwEnumSessionFlags,
2356 TRACE(
"Thread terminating\n" );
2377 TRACE(
"Killing EnumSession thread %p\n",
2378 This->dp2->hEnumSessionThread );
2439 TRACE(
"(%p)->(%p,0x%08x,%p,%p,0x%08x)\n",
This, sdesc,
timeout, enumsessioncb,
2446 if (
This->dp2->bConnectionOpen )
2460 if (
This->dp2->bDPLSPInitialized && !
This->dp2->bSPInitialized )
2462 WARN(
"Hack providing TCP/IP SP for lobby provider activated\n" );
2466 ERR(
"Can't build compound addr\n" );
2483 caps.
dwSize =
sizeof( caps );
2503 if (
This->dp2->dwEnumSessionLock )
2510 This->dp2->dwEnumSessionLock++;
2516 &
This->dp2->spData );
2523 data->lpSpData = &
This->dp2->spData;
2532 ERR(
"Can't duplicate thread killing handle\n" );
2534 TRACE(
": creating EnumSessionsRequest thread\n" );
2538 This->dp2->dwEnumSessionLock--;
2666 DWORD dwRequiredDataSize;
2668 FIXME(
"(%p)->(0x%08x,%p,%p,%u) ANSI ignored\n",
2669 This, idGroup, lpData, lpdwDataSize, bAnsi );
2688 if( ( lpData ==
NULL ) ||
2689 ( *lpdwDataSize < dwRequiredDataSize )
2692 *lpdwDataSize = dwRequiredDataSize;
2751 void *lpData,
DWORD *lpdwDataSize )
2758 void *lpData,
DWORD *lpdwDataSize )
2901 data.idPlayer = player;
2904 data.lpISP =
This->dp2->spData.lpISP;
2906 return (*
This->dp2->spData.lpCB->GetCaps)( &
data );
2968 src =
plist->lpPData->lpRemoteData;
2988 DWORD dwRequiredDataSize;
2990 FIXME(
"(%p)->(0x%08x,%p,%p,%u): ANSI\n",
2991 This, idPlayer, lpData, lpdwDataSize, bAnsi );
3015 if( ( lpData ==
NULL ) ||
3016 ( *lpdwDataSize < dwRequiredDataSize )
3019 *lpdwDataSize = dwRequiredDataSize;
3078 void *lpData,
DWORD *lpdwDataSize )
3085 void *lpData,
DWORD *lpdwDataSize )
3094 DWORD dwRequiredSize;
3096 TRACE(
"(%p)->(%p,%p,%u)\n",
This, lpData, lpdwDataSize, bAnsi );
3103 if( ( lpData ==
NULL ) && ( lpdwDataSize ==
NULL ) )
3111 if ( ( lpData ==
NULL ) ||
3112 ( *lpdwDataSize < dwRequiredSize )
3115 *lpdwDataSize = dwRequiredSize;
3153 DWORD *lpdwDataSize )
3160 DWORD *lpdwDataSize )
3211 FIXME(
"(%p)->(%p,0x%08x,%p,%p): partial stub\n",
3221 TRACE(
": rejecting invalid dpsd size (%d).\n", lpsd->
dwSize );
3225 if(
This->dp2->bConnectionOpen )
3227 TRACE(
": rejecting already open connection.\n" );
3251 if(
This->dp2->spData.lpCB->Open )
3255 FIXME(
"Not all data fields are correct. Need new parameter\n" );
3260 data.lpISP =
This->dp2->spData.lpISP;
3263 data.dwSessionFlags =
This->dp2->lpSessionDesc->dwFlags;
3309 ERR(
"Couldn't create name server/system player: %s\n",
3357 void *lpData,
DWORD *lpdwDataSize,
BOOL bAnsi )
3361 FIXME(
"(%p)->(%p,%p,0x%08x,%p,%p,%u): stub\n",
3362 This, lpidFrom, lpidTo,
dwFlags, lpData, lpdwDataSize, bAnsi );
3375 if( ( lpData ==
NULL ) &&
3384 lpMsg =
This->dp2->receiveMsgs.lpQHFirst;
3388 FIXME(
"Remove from queue\n" );
3408 if (lpData)
CopyMemory( lpData, lpMsg->
msg, *lpdwDataSize );
3548 FIXME(
"Was this group created by this interface?\n" );
3560 FIXME(
"Send msg?\n" );
3570 TRACE(
"(%p)->(0x%08x,%p,0x%08x,%u)\n",
This, idGroup,
3571 lpGroupName,
dwFlags, bAnsi );
3581 FIXME(
"Message not sent and dwFlags ignored\n" );
3684 FIXME(
"Was this group created by this interface?\n" );
3693 FIXME(
"Send msg?\n" );
3703 TRACE(
"(%p)->(0x%08x,%p,0x%08x,%u)\n",
3719 FIXME(
"Message not sent and dwFlags ignored\n" );
3769 DWORD dwRequiredSize;
3772 TRACE(
"(%p)->(%p,0x%08x,%u,%u)\n",
3786 if( !
This->dp2->bHostInterface )
3795 if( lpTempSessDesc ==
NULL )
3803 This->dp2->lpSessionDesc = lpTempSessDesc;
3817 FIXME(
"Need to send a DPMSG_SETSESSIONDESC msg to everyone\n" );
3870 if( lpSessDesc ==
NULL )
3873 ERR(
"NULL lpSessDesc\n" );
3877 dwSize +=
sizeof( *lpSessDesc );
3913 BYTE* lpStartOfFreeSpace;
3915 if( lpSessionDest ==
NULL )
3917 ERR(
"NULL lpSessionDest\n" );
3921 CopyMemory( lpSessionDest, lpSessionSrc,
sizeof( *lpSessionSrc ) );
3923 lpStartOfFreeSpace = ((
BYTE*)lpSessionDest) +
sizeof( *lpSessionSrc );
3932 lpStartOfFreeSpace +=
3950 lpStartOfFreeSpace +=
sizeof(
WCHAR) *
4009 glist->lpGData = gdata;
4015 FIXME(
"Not sending message\n" );
4028 TRACE(
"(%p)->(0x%08x,%p,%p,%p,0x%08x,0x%08x,%u)\n",
4029 This, idParentGroup, lpidGroup, lpGroupName, lpData,
4043 if( lpGData ==
NULL )
4056 if( lpGList ==
NULL )
4058 FIXME(
"Memory leak\n" );
4067 if(
This->dp2->spData.lpCB->CreateGroup )
4071 TRACE(
"Calling SP CreateGroup\n" );
4073 data.idGroup = *lpidGroup;
4075 data.lpSPMessageHeader = lpMsgHdr;
4076 data.lpISP =
This->dp2->spData.lpISP;
4078 (*
This->dp2->spData.lpCB->CreateGroup)( &
data );
4084 if(
This->dp2->lpSessionDesc &&
4091 msg.dpId = *lpidGroup;
4092 msg.dwCurrentPlayers = idParentGroup;
4093 msg.lpData = lpData;
4094 msg.dwDataSize = dwDataSize;
4095 msg.dpnName = *lpGroupName;
4187 glist->lpGData->uRef--;
4193 FIXME(
"message not sent\n" );
4205 dpCompoundAddress.
guidDataType = DPAID_ServiceProvider;
4206 dpCompoundAddress.
lpData = lpcSpGuid;
4208 *lplpAddrBuf =
NULL;
4212 lpdwBufSize,
TRUE );
4225 lpdwBufSize,
TRUE );
4256 TRACE(
"(%p)->(%p,%p,%p,0x%08x)\n",
This, lpguidApplication, lpEnumCallback, lpContext,
dwFlags );
4271 if( !lpEnumCallback )
4280 LPCSTR searchSubKey =
"SOFTWARE\\Microsoft\\DirectPlay\\Service Providers";
4281 LPCSTR guidDataSubKey =
"Guid";
4282 char subKeyName[51];
4283 DWORD dwIndex, sizeOfSubKeyName=50;
4291 ERR(
": no service providers?\n");
4298 RegEnumKeyExA( hkResult, dwIndex, subKeyName, &sizeOfSubKeyName,
4300 ++dwIndex, sizeOfSubKeyName=51 )
4303 HKEY hkServiceProvider;
4304 GUID serviceProviderGUID;
4305 DWORD returnTypeGUID, sizeOfReturnBuffer = 50;
4306 char returnBuffer[51];
4312 DWORD dwAddressBufferSize = 0;
4314 TRACE(
" this time through: %s\n", subKeyName );
4320 ERR(
": what the heck is going on?\n" );
4328 ERR(
": missing GUID registry data members\n" );
4340 dpName.
dwSize =
sizeof( dpName );
4356 &dwAddressBufferSize );
4359 ERR(
"Can't build compound addr\n" );
4364 if( !lpEnumCallback( &serviceProviderGUID, lpAddressBuffer, dwAddressBufferSize,
4365 &dpName,
dwFlags, lpContext ) )
4378 LPCSTR searchSubKey =
"SOFTWARE\\Microsoft\\DirectPlay\\Lobby Providers";
4379 LPCSTR guidDataSubKey =
"Guid";
4380 char subKeyName[51];
4381 DWORD dwIndex, sizeOfSubKeyName=50;
4388 TRACE(
"No Lobby Providers have been registered.\n");
4395 RegEnumKeyExA( hkResult, dwIndex, subKeyName, &sizeOfSubKeyName,
4397 ++dwIndex, sizeOfSubKeyName=51 )
4400 HKEY hkServiceProvider;
4401 GUID serviceProviderGUID;
4402 DWORD returnTypeGUID, sizeOfReturnBuffer = 50;
4403 char returnBuffer[51];
4410 DWORD dwAddressBufferSize = 0;
4412 TRACE(
" this time through: %s\n", subKeyName );
4418 ERR(
": what the heck is going on?\n" );
4426 ERR(
": missing GUID registry data members\n" );
4438 dpName.
dwSize =
sizeof( dpName );
4452 dpCompoundAddress.
lpData = &serviceProviderGUID;
4465 &dwAddressBufferSize,
TRUE ) ) !=
DP_OK )
4473 if( !lpEnumCallback( &serviceProviderGUID, lpAddressBuffer, dwAddressBufferSize,
4474 &dpName,
dwFlags, lpContext ) )
4591 if( (
IsEqualGUID( guidDataType, &DPAID_ServiceProvider ) ) ||
4592 (
IsEqualGUID( guidDataType, &DPAID_LobbyProvider ) )
4595 TRACE(
"Found SP/LP (%s) %s (data size = 0x%08x)\n",
4598 if( dwDataSize !=
sizeof(
GUID ) )
4600 ERR(
"Invalid sp/lp guid size 0x%08x\n", dwDataSize );
4603 memcpy( lpContext, lpData, dwDataSize );
4618 LPCSTR spSubKey =
"SOFTWARE\\Microsoft\\DirectPlay\\Service Providers";
4619 LPCSTR lpSubKey =
"SOFTWARE\\Microsoft\\DirectPlay\\Lobby Providers";
4620 LPCSTR guidDataSubKey =
"Guid";
4621 LPCSTR majVerDataSubKey =
"dwReserved1";
4622 LPCSTR minVerDataSubKey =
"dwReserved2";
4623 LPCSTR pathSubKey =
"Path";
4628 for(
i=0;
i<2;
i++ )
4632 char subKeyName[51];
4633 DWORD dwIndex, sizeOfSubKeyName=50;
4636 (
i == 0) ? (searchSubKey = spSubKey ) : (searchSubKey = lpSubKey );
4637 *lpbIsDpSp = (
i == 0);
4645 ERR(
": no service providers?\n");
4651 RegEnumKeyExA( hkResult, dwIndex, subKeyName, &sizeOfSubKeyName,
4653 ++dwIndex, sizeOfSubKeyName=51 )
4656 HKEY hkServiceProvider;
4657 GUID serviceProviderGUID;
4658 DWORD returnType, sizeOfReturnBuffer = 255;
4659 char returnBuffer[256];
4663 TRACE(
" this time through: %s\n", subKeyName );
4669 ERR(
": what the heck is going on?\n" );
4677 ERR(
": missing GUID registry data members\n" );
4687 if( !
IsEqualGUID( &serviceProviderGUID, lpcGuid ) )
4699 sizeOfReturnBuffer = 255;
4706 ERR(
": missing dwReserved1 registry data members\n") ;
4713 sizeOfReturnBuffer = 255;
4720 ERR(
": missing dwReserved1 registry data members\n") ;
4727 sizeOfReturnBuffer = 255;
4734 ERR(
": missing PATH registry data members: 0x%08x\n", dwTemp );
4738 TRACE(
"Loading %s\n", returnBuffer );
4754 if( SPInit ==
NULL )
4756 ERR(
"Service provider doesn't provide SPInit interface?\n" );
4761 TRACE(
"Calling SPInit (DP SP entry point)\n" );
4763 hr = (*SPInit)( &
This->dp2->spData );
4780 This->dp2->hServiceProvider = hServiceProvider;
4793 if( DPLSPInit ==
NULL )
4795 ERR(
"Service provider doesn't provide DPLSPInit interface?\n" );
4800 TRACE(
"Calling DPLSPInit (DPL SP entry point)\n" );
4802 hr = (*DPLSPInit)( &
This->dp2->dplspData );
4814 This->dp2->bDPLSPInitialized =
TRUE;
4820 This->dp2->hDPLobbyProvider = hLobbyProvider;
4872 ERR(
"Invalid compound address?\n" );
4890 This->dp2->spData.lpAddress = connection;
4891 This->dp2->spData.dwAddressSize =
size;
4892 This->dp2->spData.lpGuid = &
sp;
4897 This->dp2->dplspData.lpAddress = connection;
5201 FIXME(
"(%p)->(0x%08x,0x%08x,0x%08x,%p,0x%08x,0x%08x,0x%08x,%p,%p): semi-stub\n",
5219 WARN(
"INFO: Invalid from player 0x%08x\n",
from );
5229 if (
This->dp2->spData.lpCB->SendToGroupEx )
5230 FIXME(
"Use group sendex to group 0\n" );
5231 else if (
This->dp2->spData.lpCB->SendToGroup )
5232 FIXME(
"Use obsolete group send to group 0\n" );
5234 FIXME(
"Send to all players using EnumPlayersInGroup\n" );
5245 if (
This->dp2->spData.lpCB->SendToGroupEx )
5246 FIXME(
"Use group sendex\n" );
5247 else if (
This->dp2->spData.lpCB->SendToGroup )
5248 FIXME(
"Use obsolete group send to group\n" );
5250 FIXME(
"Send to all players using EnumPlayersInGroup\n" );
5265 FIXME(
": stub\n" );
5293 FIXME(
"(%p)->(0x%08x,0x%08x,0x%08x,%p,%p): semi-stub\n",
This,
from, to,
flags, msgs,
bytes );
5298 if (
This->dp2->spData.lpCB->GetMessageQueue )
5302 FIXME(
"Calling SP GetMessageQueue - is it right?\n" );
5305 data.lpISP =
This->dp2->spData.lpISP;
5309 data.lpdwNumMsgs = msgs;
5312 hr = (*
This->dp2->spData.lpCB->GetMessageQueue)( &
data );
5315 FIXME(
"No SP for GetMessageQueue - fake some data\n" );
5325 FIXME(
"(%p)->(0x%08x,0x%08x): semi stub\n",
This, msgid,
flags );
5327 if (
This->dp2->spData.lpCB->Cancel )
5331 TRACE(
"Calling SP Cancel\n" );
5335 data.lpISP =
This->dp2->spData.lpISP;
5338 data.cSPMsgID = msgid;
5339 data.dwMinPriority = minprio;
5340 data.dwMaxPriority = maxprio;
5342 hr = (*
This->dp2->spData.lpCB->Cancel)( &
data );
5345 FIXME(
"SP doesn't implement Cancel\n" );
5389static const IDirectPlay2Vtbl
dp2_vt =
5425static const IDirectPlay2Vtbl
dp2A_vt =
5461static const IDirectPlay3Vtbl
dp3_vt =
5512static const IDirectPlay3Vtbl
dp3A_vt =
5563static const IDirectPlay4Vtbl
dp4_vt =
5620static const IDirectPlay4Vtbl
dp4A_vt =
5689 obj->IDirectPlay_iface.lpVtbl = &
dp_vt;
5691 obj->IDirectPlay2_iface.lpVtbl = &
dp2_vt;
5693 obj->IDirectPlay3_iface.lpVtbl = &
dp3_vt;
5695 obj->IDirectPlay4_iface.lpVtbl = &
dp4_vt;
5706 obj->lock.DebugInfo->Spare[0] = (
DWORD_PTR)(__FILE__
": IDirectPlayImpl.lock");
5722 if( lpPlayer ==
NULL )
5736 if( lpPlayer ==
NULL )
5773 static const WCHAR searchSubKey[] = {
5774 'S',
'O',
'F',
'T',
'W',
'A',
'R',
'E',
'\\',
5775 'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
5776 'D',
'i',
'r',
'e',
'c',
't',
'P',
'l',
'a',
'y',
'\\',
5777 'S',
'e',
'r',
'v',
'i',
'c',
'e',
' ',
'P',
'r',
'o',
'v',
'i',
'd',
'e',
'r',
's', 0 };
5778 static const WCHAR guidKey[] = {
'G',
'u',
'i',
'd', 0 };
5779 static const WCHAR descW[] = {
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n',
'W', 0 };
5784 char *descriptionA =
NULL;
5785 DWORD max_sizeOfDescriptionA = 0;
5787 DWORD max_sizeOfDescriptionW = 0;
5788 DWORD sizeOfSubKeyName;
5789 WCHAR subKeyName[255];
5791 static GUID *guid_cache;
5792 static int cache_count;
5794 if (!lpEnumCallbackA && !lpEnumCallbackW)
5804 ERR(
": no service provider key in the registry - check your Wine installation !!!\n");
5812 ret_value =
RegEnumKeyW(hkResult, dwIndex, subKeyName, sizeOfSubKeyName);
5818 if (cache_count < dwIndex)
5824 ERR(
": failed to allocate required memory.\n");
5827 cache_count = dwIndex;
5833 HKEY hkServiceProvider;
5834 WCHAR guidKeyContent[(2 * 16) + 1 + 6 ];
5835 DWORD sizeOfGuidKeyContent =
sizeof(guidKeyContent);
5838 ret_value =
RegEnumKeyExW(hkResult, dwIndex, subKeyName, &sizeOfSubKeyName,
5844 ERR(
": could not enumerate on service provider key.\n");
5852 ERR(
": could not open registry key for service provider %s.\n",
debugstr_w(subKeyName));
5860 ERR(
": missing GUID registry data member for service provider %s.\n",
debugstr_w(subKeyName));
5863 if (sizeOfGuidKeyContent !=
sizeof(guidKeyContent))
5865 ERR(
": invalid format for the GUID registry data member for service provider %s (%s).\n",
debugstr_w(subKeyName),
debugstr_w(guidKeyContent));
5876 if (lpEnumCallbackA)
5878 DWORD sizeOfDescription = 0;
5884 ERR(
": missing 'DescriptionA' registry data member for service provider %s.\n",
debugstr_w(subKeyName));
5887 if (sizeOfDescription > max_sizeOfDescriptionA)
5890 max_sizeOfDescriptionA = sizeOfDescription;
5896 if (!lpEnumCallbackA(&guid_cache[dwIndex], descriptionA, 6, 0, lpContext))
5901 DWORD sizeOfDescription = 0;
5906 ERR(
": missing 'DescriptionW' registry data member for service provider %s.\n",
debugstr_w(subKeyName));
5909 if (sizeOfDescription > max_sizeOfDescriptionW)
5912 max_sizeOfDescriptionW = sizeOfDescription;
5918 if (!lpEnumCallbackW(&guid_cache[dwIndex],
descriptionW, 6, 0, lpContext))
5938 TRACE(
"(%p,%p)\n", lpEnumCallback, lpContext);
5948 TRACE(
"(%p,%p)\n", lpEnumCallback, lpContext);
5963 DWORD dwConnectionSize,
ACPI_SIZE strlen(const char *String)
static unsigned char bytes[4]
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define RegCloseKey(hKey)
static HINSTANCE instance
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
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)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define GetCurrentProcess()
#define ERROR_NO_MORE_ITEMS
#define HeapFree(x, y, z)
#define MultiByteToWideChar
static const WCHAR descriptionW[]
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)
HRESULT WINAPI CoCreateGuid(GUID *pguid)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
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 BOOL DP_CopyDPNAMEStruct(LPDPNAME lpDst, const DPNAME *lpSrc, BOOL bAnsi)
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)
#define DPMSG_CREATEPLAYER_DWFLAGS(x)
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 DWORD DP_CalcSessionDescSize(LPCDPSESSIONDESC2 lpSessDesc, BOOL bAnsi)
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 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 lpPlayerData DP_CreatePlayer(IDirectPlayImpl *This, DPID *lpid, DPNAME *lpName, DWORD dwFlags, HANDLE hEvent, BOOL bAnsi)
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)
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 void DP_InvokeEnumSessionCallbacks(LPDPENUMSESSIONSCALLBACK2 lpEnumSessionsCallback2, LPVOID lpNSInfo, DWORD dwTimeout, LPVOID lpContext)
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)
HRESULT DP_HandleMessage(IDirectPlayImpl *This, const void *lpcMessageBody, DWORD dwMessageBodySize, const void *lpcMessageHeader, WORD wCommandId, WORD wVersion, void **lplpReply, DWORD *lpdwMsgSize)
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 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 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 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 void DP_CopySessionDesc(LPDPSESSIONDESC2 destSessionDesc, LPCDPSESSIONDESC2 srcSessDesc, BOOL bAnsi)
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 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 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 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 HRESULT DP_IF_CreatePlayer(IDirectPlayImpl *This, void *lpMsgHdr, DPID *lpidPlayer, DPNAME *lpPlayerName, HANDLE hEvent, void *lpData, DWORD dwDataSize, DWORD dwFlags, BOOL bAnsi)
static ULONG WINAPI IDirectPlay2AImpl_AddRef(IDirectPlay2A *iface)
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_DestroyGroup(IDirectPlayImpl *This, void *lpMsgHdr, DPID idGroup, BOOL bAnsi)
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)
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 HRESULT WINAPI IDirectPlayImpl_EnumSessions(IDirectPlay *iface, DPSESSIONDESC *sdesc, DWORD timeout, LPDPENUMSESSIONSCALLBACK enumsessioncb, void *context, DWORD flags)
static DPID DP_NextObjectId(void)
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 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
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 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)
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 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 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 lpGroupData DP_CreateGroup(IDirectPlayImpl *This, const DPID *lpid, const DPNAME *lpName, DWORD dwFlags, DPID idParent, BOOL bAnsi)
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 void DP_DeleteDPNameStruct(LPDPNAME lpDPName)
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 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 lpPlayerList DP_FindPlayer(IDirectPlayImpl *This, DPID dpid)
static HRESULT WINAPI IDirectPlay4Impl_GetGroupParent(IDirectPlay4 *iface, DPID group, DPID *parent)
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)
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 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)
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 HRESULT WINAPI IDirectPlay4AImpl_GetGroupName(IDirectPlay4A *iface, DPID idGroup, void *lpData, DWORD *lpdwDataSize)
static HRESULT DP_SP_SendEx(IDirectPlayImpl *This, DWORD dwFlags, void *lpData, DWORD dwDataSize, DWORD dwPriority, DWORD dwTimeout, void *lpContext, DWORD *lpdwMsgID)
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 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 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 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 IDirectPlayX_GetGroupData(p, a, b, c, d)
#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 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 DPSESSION_MULTICASTSERVER
#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 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)
#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 IDirectPlayX_EnumSessions(p, a, b, c, d, e)
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 DPCONNECTION_DIRECTPLAYLOBBY
#define IDirectPlayX_SetSessionDesc(p, a, b)
BOOL(CALLBACK * LPDPENUMDPCALLBACKW)(LPGUID lpguidSP, LPWSTR lpSPName, DWORD dwMajorVersion, DWORD dwMinorVersion, LPVOID lpContext)
#define IDirectPlayX_SetGroupOwner(p, a, b)
#define IDirectPlayX_DeleteGroupFromGroup(p, a, b)
HRESULT dplobbysp_create(REFIID riid, void **ppv, IDirectPlayImpl *dp) DECLSPEC_HIDDEN
HRESULT DPL_EnumAddress(LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, LPCVOID lpAddress, DWORD dwAddressSize, LPVOID lpContext) DECLSPEC_HIDDEN
LPVOID DPSP_CreateSPPlayerData(void) DECLSPEC_HIDDEN
HRESULT dplaysp_create(REFIID riid, void **ppv, IDirectPlayImpl *dp) DECLSPEC_HIDDEN
#define DPLAYI_GROUP_HIDDEN
HRESULT(WINAPI * LPDPSP_SPINIT)(LPSPINITDATA)
#define IDirectPlaySP_Release(p)
#define DPLAYI_PLAYER_NAMESRVR
#define DPLAYI_GROUP_SYSGROUP
#define DPSP_MAJORVERSION
#define DPLAYI_PLAYER_PLAYERLOCAL
#define DPCANCELSEND_PRIORITY
#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)
void DP_MSG_ErrorReceived(IDirectPlayImpl *This, WORD wCommandId, const void *lpMsgBody, DWORD dwMsgBodySize)
void DP_MSG_ReplyReceived(IDirectPlayImpl *This, WORD wCommandId, const void *lpcMsgBody, DWORD dwMsgBodySize)
void DP_MSG_ToSelf(IDirectPlayImpl *This, DPID dpidSelf)
HRESULT DP_MSG_SendRequestPlayerId(IDirectPlayImpl *This, DWORD dwFlags, DPID *lpdpidAllocatedId)
HRESULT DP_MSG_ForwardPlayerCreation(IDirectPlayImpl *This, DPID dpidServer)
#define DPMSGCMD_ENUMSESSIONSREQUEST
#define DPMSGCMD_GETNAMETABLEREPLY
#define DPMSG_WAIT_5_SECS
#define DPMSGCMD_FORWARDADDPLAYER
#define DPMSGCMD_ENUMSESSIONSREPLY
#define DPMSGCMD_REQUESTNEWPLAYERID
#define DPMSGCMD_NEWPLAYERIDREPLY
#define DPMSGCMD_JUSTENVELOPE
#define DPMSGCMD_FORWARDADDPLAYERNACK
struct tagDPMSG_NEWPLAYERIDREPLY * LPDPMSG_NEWPLAYERIDREPLY
#define DPMSGMAGIC_DPLAYMSG
#define DPQ_REMOVE_ENTRY(head, elm, field, fieldCompareOperator, fieldToCompare, rc)
#define DPQ_IS_ENDOFLIST(elem)
#define DPQ_INSERT(a, b, c)
#define DPQ_IS_EMPTY(head)
#define DPQ_FIND_ENTRY(head, elm, field, fieldCompareOperator, fieldToCompare, rc)
#define DPQ_DECL_DELETECB(name, type)
static unsigned char buff[32768]
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLsizei bufsize
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HRESULT(WINAPI * LPSP_INIT)(LPSPDATA_INIT)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
void NS_AddRemoteComputerAsNameServer(LPCVOID lpcNSAddrHdr, DWORD dwHdrSize, LPCDPMSG_ENUMSESSIONSREPLY lpcMsg, LPVOID lpNSInfo)
void NS_SetLocalComputerAsNameServer(LPCDPSESSIONDESC2 lpsd, LPVOID lpNSInfo)
BOOL NS_InitializeSessionCache(LPVOID *lplpNSInfo)
void NS_InvalidateSessionCache(LPVOID lpNSInfo)
LPVOID NS_GetNSAddr(LPVOID lpNSInfo)
HRESULT NS_SendSessionRequestBroadcast(LPCGUID lpcGuid, DWORD dwFlags, const SPINITDATA *lpSpData)
LPDPSESSIONDESC2 NS_WalkSessions(LPVOID lpNSInfo)
void NS_ReplyToEnumSessionsRequest(const void *lpcMsg, void **lplpReplyData, DWORD *lpdwReplySize, IDirectPlayImpl *lpDP)
void NS_ResetSessionEnumeration(LPVOID lpNSInfo)
void NS_PruneSessionCache(LPVOID lpNSInfo)
void NS_SetLocalAddr(LPVOID lpNSInfo, LPCVOID lpHdr, DWORD dwHdrSize)
void NS_DeleteSessionCache(LPVOID lpNSInfo)
#define IsEqualGUID(rguid1, rguid2)
IDirectPlay4 IDirectPlay4_iface
DPMSG_SENDENVELOPE envelope
DWORD WINAPI SleepEx(IN DWORD dwMilliseconds, IN BOOL bAlertable)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
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)
void WINAPI DebugBreak(void)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD dwTimeout
#define CLASS_E_NOAGGREGATION
#define HKEY_LOCAL_MACHINE
#define DUPLICATE_SAME_ACCESS