diff --git a/dlls/winmm/tests/wave.c b/dlls/winmm/tests/wave.c index 9e59e2fed66..992cca7e520 100644 --- a/dlls/winmm/tests/wave.c +++ b/dlls/winmm/tests/wave.c @@ -854,6 +854,16 @@ static void wave_out_test_deviceOut(int device, double duration, rc=WaitForSingleObject(hevent,1500); ok(rc==WAIT_OBJECT_0, "missing WOM_CLOSE notification\n"); + wout = (HWAVEOUT)0xdeadf00d; + rc=waveOutOpen(&wout,device,pwfx,callback,callback_instance,flags|WAVE_FORMAT_QUERY); + ok(rc==MMSYSERR_NOERROR, "WAVE_FORMAT_QUERY(%s): rc=%s\n",dev_name(device), + wave_out_error(rc)); + ok(wout==(HWAVEOUT)0xdeadf00d, "WAVE_FORMAT_QUERY handle %p\n", wout); + + rc=WaitForSingleObject(hevent,20); + ok(rc==WAIT_TIMEOUT, "Notification from %s rc=%x\n", + wave_open_flags(flags|WAVE_FORMAT_QUERY),rc); + HeapFree(GetProcessHeap(), 0, buffer); EXIT: if ((flags & CALLBACK_TYPEMASK) == CALLBACK_THREAD) { diff --git a/dlls/winmm/waveform.c b/dlls/winmm/waveform.c index a5ffbc02bc8..1dceb261fb1 100644 --- a/dlls/winmm/waveform.c +++ b/dlls/winmm/waveform.c @@ -2726,7 +2726,7 @@ MMRESULT WINAPI waveOutOpen(LPHWAVEOUT lphWaveOut, UINT uDeviceID, info.reset = TRUE; res = SendMessageW(g_devices_hwnd, WODM_OPEN, (DWORD_PTR)&info, 0); - if(res != MMSYSERR_NOERROR) + if(res != MMSYSERR_NOERROR || (dwFlags & WAVE_FORMAT_QUERY)) return res; if(lphWaveOut) @@ -3356,7 +3356,7 @@ MMRESULT WINAPI waveInOpen(HWAVEIN* lphWaveIn, UINT uDeviceID, info.reset = TRUE; res = SendMessageW(g_devices_hwnd, WIDM_OPEN, (DWORD_PTR)&info, 0); - if(res != MMSYSERR_NOERROR) + if(res != MMSYSERR_NOERROR || (dwFlags & WAVE_FORMAT_QUERY)) return res; if(lphWaveIn)