Yay, Dplay work! A few suggestions though:
From patch 1:
> +static HRESULT WINAPI DPWSCB_GetCaps( LPDPSP_GETCAPSDATA data )
> +{
> + TRACE( "(%d,%p,0x%08x,%p)\n",
> + data->idPlayer, data->lpCaps, data->dwFlags, data->lpISP );
>+ return DP_OK;
> +}
Is there any reason this one writes a TRACE instread of a FIXME? I noticed
that patch 3 implements it, perhaps you missed this when separating the
patches?
> +static HRESULT WINAPI DPWSCB_Open( LPDPSP_OPENDATA data )
> +{
> + FIXME( "(%u,%p,%p,%u,0x%08x,0x%08x) stub\n",
> + data->bCreate, data->lpSPMessageHeader, data->lpISP,
> + data->bReturnStatus, data->dwOpenFlags, data->dwSessionFlags );
> + return DP_OK;
> +}
Why does it return DP_OK while most other stubs return an error?
Patch 2:
> + /* Initialize internal data */
> + ZeroMemory( &dpwsData, sizeof(DPWS_DATA) );
I think memset(&dpwsData, 0, sizeof(DPWS_DATA)) is preferred over ZeroMemory.
Patch 3:
Where do the values like dwMaxLocalPlayers = 65536 come from? Since most
functions are still stubs its hard to see where it comes from? Does native
dpwsockx have the same limits? (If it does, that's a solid reason for using
the same limits)