winmm/tests/wave.c currently contains:
rc=waveOutGetDevCapsA(device,&capsA,4); ok(rc==MMSYSERR_NOERROR, "waveOutGetDevCapsA(%s): MMSYSERR_NOERROR expected, got %s\n", dev_name(device),wave_out_error(rc));
rc=waveOutGetDevCapsW(device,&capsW,4); ok(rc==MMSYSERR_NOERROR || rc==MMSYSERR_NOTSUPPORTED, "waveOutGetDevCapsW(%s): MMSYSERR_NOERROR or MMSYSERR_NOTSUPPORTED " "expected, got %s\n",dev_name(device),wave_out_error(rc));
This seems wrong to me; the last argument should be the size of the WAVEOUTCAPS structure, and there are no such structures that have size 4.
The CapsW test fails with our sound driver (tlsnd) as well as Microsofts Terminal Services driver (rdpsnd).
The CapsA test doesn't fail, probably since winmm wraps CapsA calls with CapsW calls and then does memcpy. In either case, calling waveOutGetDevCaps sith size=4 is not valid, as far as I can tell. Theoretically, it might be in the future, though, if some small caps structure is invented. I suggest that these tests are removed altogether:
--- wave.c 29 Feb 2008 12:18:36 -0000 1.67 +++ wave.c 16 Apr 2008 12:03:44 -0000 @@ -853,16 +853,6 @@ "expected, got %s\n",dev_name(device),wave_out_error(rc)); }
- rc=waveOutGetDevCapsA(device,&capsA,4); - ok(rc==MMSYSERR_NOERROR, - "waveOutGetDevCapsA(%s): MMSYSERR_NOERROR expected, got %s\n", - dev_name(device),wave_out_error(rc)); - - rc=waveOutGetDevCapsW(device,&capsW,4); - ok(rc==MMSYSERR_NOERROR || rc==MMSYSERR_NOTSUPPORTED, - "waveOutGetDevCapsW(%s): MMSYSERR_NOERROR or MMSYSERR_NOTSUPPORTED " - "expected, got %s\n",dev_name(device),wave_out_error(rc)); - nameA=NULL; rc=waveOutMessage((HWAVEOUT)device, DRV_QUERYDEVICEINTERFACESIZE, (DWORD_PTR)&size, 0);
Regards, --- Peter Åstrand ThinLinc Chief Developer Cendio AB http://www.cendio.se Wallenbergs gata 4 583 30 Linköping Phone: +46-13-21 46 00