https://bugs.winehq.org/show_bug.cgi?id=41926
--- Comment #14 from Dmitry Timoshkov dmitry@baikal.ru --- (In reply to Henri Verbeet from comment #13)
Exchanging first 2 params and passing HDC by value make it work.
The API returns an HDC (GetObjectType() returns 3 == OBJ_DC) in the provided storage, not an iface pointer though. Also, as as side effect the API call invalidates the passed in dd7 interface, so all further calls to it crash here.
Not sure how to interpret the results.
It looks like it's supposed to be something like this:
HRESULT WINAPI GetSurfaceFromDC(HDC dc, IDirectDrawSurface **surface,
HDC *device_dc);
Confirming, changing the 2nd parameter to a pointer to an interface fixes all the crashes here, and the returned values look pretty sane.