> +    hr = IDirect3D2_QueryInterface(d3d2, &IID_IDirectDraw, (void**)&ddraw);
Why aren't you using the existing ddraw1 interface variable?
Ah, My bad. I must've missed the already existing variables, I probably wrote this in a hurry to get the tests working. 

> +    primary_surface_found = FALSE;
> +    hr = IDirectDraw_EnumSurfaces(ddraw, DDENUMSURFACES_ALL | DDENUMSURFACES_DOESEXIST,
> +        NULL, NULL, surface_callback);
> +    ok(hr == DD_OK, "Failed to enumerate surfaces (hr = %x).\n", hr);
> +    ok(!primary_surface_found, "Primary surface shouldn't be created by CreateDeviceFromD3D.\n");
> +    IDirectDraw_Release(ddraw);
> +
> +    hr = IDirectDrawSurface_GetAttachedSurface(surface, &caps, &ds);
> +    ok(hr == DD_OK, "Cannot get attached depth surface (hr = %x).\n", hr);
> +
> +    desc.dwSize = sizeof(desc);
> +    hr = IDirectDrawSurface_GetSurfaceDesc(ds, &desc);
> +    ok(hr == DD_OK, "Cannot get z surface desc structure (hr = %x).\n", hr);
I think here it would be interesting to confirm that the Z surface is
the one created by create_device().
So use a global variable to store the z surface we created from create_device? That should work I guess.



Thanks!
jam