dplay: directplay should initialize session Guid patch + conformance tests

Paul Vriens paul.vriens.wine at gmail.com
Sat Feb 24 13:23:57 CST 2007


Alessandro Pignotti wrote:
> On Saturday 24 February 2007 19:31, Stefan Dösinger wrote:
> 
>> todo_wine ok(memcmp(&sessionDesc.guidInstance,&zeroGuid,16),"Session guid
>> not initialized");
>>
>> For tests which are known to fail
> 
> This version of the patch follows Stefan's advice.
> 
> 
> 
> ------------------------------------------------------------------------
> 
> diff --git a/configure.ac b/configure.ac
> index 672dd78..4ef4e23 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1587,6 +1587,7 @@ dlls/dnsapi/Makefile
>  dlls/dnsapi/tests/Makefile
>  dlls/dplay/Makefile
>  dlls/dplayx/Makefile
> +dlls/dplayx/tests/Makefile
>  dlls/dpnet/Makefile
>  dlls/dpnhpast/Makefile
>  dlls/dsound/Makefile
> diff --git a/dlls/dplayx/dplay.c b/dlls/dplayx/dplay.c
> index f5c630a..475e59c 100644
> --- a/dlls/dplayx/dplay.c
> +++ b/dlls/dplayx/dplay.c
> @@ -2828,6 +2828,8 @@ static HRESULT WINAPI DP_SecureOpen
>  
>      This->dp2->bHostInterface = TRUE;
>  
> +    //Initializing session GUID
> +    CoCreateGuid(&(lpsd->guidInstance));
>      hr = DP_SetSessionDesc( This, lpsd, 0, TRUE, bAnsi );
>      if( FAILED( hr ) )
>      {
> diff --git a/dlls/dplayx/tests/Makefile.in b/dlls/dplayx/tests/Makefile.in
> new file mode 100644
> index 0000000..02007d1
> --- /dev/null
> +++ b/dlls/dplayx/tests/Makefile.in
> @@ -0,0 +1,14 @@
> +TOPSRCDIR = @top_srcdir@
> +TOPOBJDIR = ../../..
> +SRCDIR    = @srcdir@
> +VPATH     = @srcdir@
> +TESTDLL   = dplayx.dll
> +IMPORTS   = kernel32 ole32 dxguid
> +EXTRALIBS =
> +
> +CTESTS = \
> +	dplayx.c
> +
> + at MAKE_TEST_RULES@
> +
> + at DEPENDENCIES@  # everything below this line is overwritten by make depend
> diff --git a/dlls/dplayx/tests/dplayx.c b/dlls/dplayx/tests/dplayx.c
> new file mode 100644
> index 0000000..ba96125
> --- /dev/null
> +++ b/dlls/dplayx/tests/dplayx.c
> @@ -0,0 +1,55 @@
> +#include <wine/test.h>
> +#include <dplay.h>
> +
> +BOOL validSP=0;
> +
> +BOOL FAR PASCAL EnumConnectionsCallback(LPCGUID lpguidSP, LPVOID lpConnection,
> +	DWORD dwConnectionSize, LPCDPNAME lpName, DWORD dwFlags, 
> +	LPVOID lpContext)
> +{
> +	if(!memcmp(lpguidSP,&DPSPGUID_TCPIP,16))
> +	{
> +		//I'm forcing TCP/IP Sevice provider
> +		HRESULT hr=IDirectPlayX_InitializeConnection((LPDIRECTPLAY4)lpContext,lpConnection,0);
> +		todo_wine
> +		{
> +			ok(SUCCEEDED(hr),"It's not possible to initialize TCP/IP service provider\n");
> +		}
> +		if(SUCCEEDED(hr))
> +			validSP=1;
> +	
> +		return FALSE;
> +	}
> +	return TRUE;
> +}
> +
> +START_TEST(dplayx)
> +{
> +	LPDIRECTPLAY4 pDP = NULL;
> +	GUID appGuid;
> +	GUID zeroGuid;
> +	DPSESSIONDESC2 sessionDesc;
> +	CoInitialize(NULL);
> +	CoCreateGuid(&appGuid);
> +	CoCreateInstance(&CLSID_DirectPlay,NULL, CLSCTX_ALL, 
> +			&IID_IDirectPlay4A,(VOID**)&pDP);
> +	IDirectPlayX_EnumConnections(pDP,&appGuid,EnumConnectionsCallback,
> +			pDP,0);
> +	if(validSP)
> +	{
> +		bzero(&sessionDesc,sizeof(DPSESSIONDESC2));
> +		bzero(&zeroGuid,16);
> +		sessionDesc.dwSize=sizeof(DPSESSIONDESC2);
> +		sessionDesc.dwFlags=DPSESSION_CLIENTSERVER;
> +		memcpy(&sessionDesc.guidApplication,&appGuid,16);
> +		sessionDesc.lpszSessionNameA="DPlay conformance test";
> +		sessionDesc.dwMaxPlayers=10;
> +		sessionDesc.dwCurrentPlayers=0;
> +		sessionDesc.guidInstance=CLSID_DirectPlay;
> +		IDirectPlayX_Open(pDP,&sessionDesc,DPOPEN_CREATE);
> +		todo_wine ok(memcmp(&sessionDesc.guidInstance,&zeroGuid,16),"Session guid not initialized");
> +	}
> +	IDirectPlayX_Release(pDP);
> +	CoUninitialize();
> +	
> +}
> 
> 
> ------------------------------------------------------------------------
> 
> 
Hi,

no clue about dplayx but:

- there are some C++ style comments, please use C-style
- there is no copyright/license information

Cheers,

Paul.



More information about the wine-devel mailing list