dplayx: Merge the IDirectPlay4_GetGroupData helper.
This commit is contained in:
parent
7cd17803d5
commit
4ccd8720d5
|
@ -86,9 +86,6 @@ static HRESULT DP_IF_DestroyGroup
|
||||||
( IDirectPlay2Impl* This, LPVOID lpMsgHdr, DPID idGroup, BOOL bAnsi );
|
( IDirectPlay2Impl* This, LPVOID lpMsgHdr, DPID idGroup, BOOL bAnsi );
|
||||||
static HRESULT DP_IF_DestroyPlayer
|
static HRESULT DP_IF_DestroyPlayer
|
||||||
( IDirectPlay2Impl* This, LPVOID lpMsgHdr, DPID idPlayer, BOOL bAnsi );
|
( IDirectPlay2Impl* This, LPVOID lpMsgHdr, DPID idPlayer, BOOL bAnsi );
|
||||||
static HRESULT DP_IF_GetGroupData
|
|
||||||
( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
|
|
||||||
LPDWORD lpdwDataSize, DWORD dwFlags, BOOL bAnsi );
|
|
||||||
static HRESULT DP_IF_GetGroupName
|
static HRESULT DP_IF_GetGroupName
|
||||||
( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
|
( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
|
||||||
LPDWORD lpdwDataSize, BOOL bAnsi );
|
LPDWORD lpdwDataSize, BOOL bAnsi );
|
||||||
|
@ -2113,65 +2110,50 @@ static HRESULT WINAPI DirectPlay2WImpl_GetCaps
|
||||||
return DP_IF_GetCaps( This, lpDPCaps, dwFlags );
|
return DP_IF_GetCaps( This, lpDPCaps, dwFlags );
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT DP_IF_GetGroupData
|
static HRESULT WINAPI IDirectPlay4AImpl_GetGroupData( IDirectPlay4A *iface, DPID group,
|
||||||
( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
|
void *data, DWORD *size, DWORD flags )
|
||||||
LPDWORD lpdwDataSize, DWORD dwFlags, BOOL bAnsi )
|
|
||||||
{
|
{
|
||||||
lpGroupData lpGData;
|
IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface );
|
||||||
DWORD dwRequiredBufferSize;
|
return IDirectPlayX_GetGroupData( &This->IDirectPlay4_iface, group, data, size, flags );
|
||||||
LPVOID lpCopyDataFrom;
|
|
||||||
|
|
||||||
TRACE( "(%p)->(0x%08x,%p,%p,0x%08x,%u)\n",
|
|
||||||
This, idGroup, lpData, lpdwDataSize, dwFlags, bAnsi );
|
|
||||||
|
|
||||||
if( ( lpGData = DP_FindAnyGroup( This, idGroup ) ) == NULL )
|
|
||||||
{
|
|
||||||
return DPERR_INVALIDGROUP;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* How much buffer is required? */
|
static HRESULT WINAPI IDirectPlay4Impl_GetGroupData( IDirectPlay4 *iface, DPID group,
|
||||||
if( dwFlags & DPSET_LOCAL )
|
void *data, DWORD *size, DWORD flags )
|
||||||
{
|
{
|
||||||
dwRequiredBufferSize = lpGData->dwLocalDataSize;
|
IDirectPlayImpl *This = impl_from_IDirectPlay4( iface );
|
||||||
lpCopyDataFrom = lpGData->lpLocalData;
|
lpGroupData gdata;
|
||||||
|
DWORD bufsize;
|
||||||
|
void *src;
|
||||||
|
|
||||||
|
TRACE( "(%p)->(0x%08x,%p,%p,0x%08x)\n", This, group, data, size, flags );
|
||||||
|
|
||||||
|
if ( ( gdata = DP_FindAnyGroup( This, group ) ) == NULL )
|
||||||
|
return DPERR_INVALIDGROUP;
|
||||||
|
|
||||||
|
/* How much buffer is required? */
|
||||||
|
if ( flags & DPSET_LOCAL )
|
||||||
|
{
|
||||||
|
bufsize = gdata->dwLocalDataSize;
|
||||||
|
src = gdata->lpLocalData;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dwRequiredBufferSize = lpGData->dwRemoteDataSize;
|
bufsize = gdata->dwRemoteDataSize;
|
||||||
lpCopyDataFrom = lpGData->lpRemoteData;
|
src = gdata->lpRemoteData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Is the user requesting to know how big a buffer is required? */
|
/* Is the user requesting to know how big a buffer is required? */
|
||||||
if( ( lpData == NULL ) ||
|
if ( !data || *size < bufsize )
|
||||||
( *lpdwDataSize < dwRequiredBufferSize )
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
*lpdwDataSize = dwRequiredBufferSize;
|
*size = bufsize;
|
||||||
return DPERR_BUFFERTOOSMALL;
|
return DPERR_BUFFERTOOSMALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
CopyMemory( lpData, lpCopyDataFrom, dwRequiredBufferSize );
|
CopyMemory( data, src, bufsize );
|
||||||
|
|
||||||
return DP_OK;
|
return DP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI IDirectPlay4AImpl_GetGroupData( IDirectPlay4A *iface, DPID idGroup,
|
|
||||||
void *lpData, DWORD *lpdwDataSize, DWORD dwFlags )
|
|
||||||
{
|
|
||||||
IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface );
|
|
||||||
return DP_IF_GetGroupData( This, idGroup, lpData, lpdwDataSize,
|
|
||||||
dwFlags, TRUE );
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI DirectPlay2WImpl_GetGroupData
|
|
||||||
( LPDIRECTPLAY2 iface, DPID idGroup, LPVOID lpData,
|
|
||||||
LPDWORD lpdwDataSize, DWORD dwFlags )
|
|
||||||
{
|
|
||||||
IDirectPlay2Impl *This = (IDirectPlay2Impl *)iface;
|
|
||||||
return DP_IF_GetGroupData( This, idGroup, lpData, lpdwDataSize,
|
|
||||||
dwFlags, FALSE );
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT DP_IF_GetGroupName
|
static HRESULT DP_IF_GetGroupName
|
||||||
( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
|
( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
|
||||||
LPDWORD lpdwDataSize, BOOL bAnsi )
|
LPDWORD lpdwDataSize, BOOL bAnsi )
|
||||||
|
@ -4527,7 +4509,7 @@ static const IDirectPlay4Vtbl dp4_vt =
|
||||||
IDirectPlay4Impl_EnumPlayers,
|
IDirectPlay4Impl_EnumPlayers,
|
||||||
XCAST(EnumSessions)DirectPlay2WImpl_EnumSessions,
|
XCAST(EnumSessions)DirectPlay2WImpl_EnumSessions,
|
||||||
XCAST(GetCaps)DirectPlay2WImpl_GetCaps,
|
XCAST(GetCaps)DirectPlay2WImpl_GetCaps,
|
||||||
XCAST(GetGroupData)DirectPlay2WImpl_GetGroupData,
|
IDirectPlay4Impl_GetGroupData,
|
||||||
XCAST(GetGroupName)DirectPlay2WImpl_GetGroupName,
|
XCAST(GetGroupName)DirectPlay2WImpl_GetGroupName,
|
||||||
IDirectPlay4Impl_GetMessageCount,
|
IDirectPlay4Impl_GetMessageCount,
|
||||||
IDirectPlay4Impl_GetPlayerAddress,
|
IDirectPlay4Impl_GetPlayerAddress,
|
||||||
|
|
Loading…
Reference in New Issue