So :
1) it is a bug in the game (and it works fine in Windows because,
miraculously, the three others words of the 'fake' DDSCAPS2 structure
are set to '0' or because Windows only checks with 'dwCaps' and not
with all 'dwCaps' fields).
2) somehow the docs are wrong and it should be a DirectDrawSurface that is
returned by a CreateSurface even if the CreateSurface is called on a
DirectDraw4 interface...
What does the dwSize member of the structure say ?