diff --git a/dlls/dsound/dsound_main.c b/dlls/dsound/dsound_main.c index f839750dfcc..e94399d11d5 100644 --- a/dlls/dsound/dsound_main.c +++ b/dlls/dsound/dsound_main.c @@ -747,8 +747,10 @@ HRESULT WINAPI DirectSoundCreate8(LPCGUID lpcGUID,LPDIRECTSOUND8 *ppDS,IUnknown unsigned wod, wodn; HRESULT err = DSERR_INVALIDPARAM; GUID devGuid; - TRACE("(%p,%p,%p)\n",lpcGUID,ippDS,pUnkOuter); + BOOLEAN found = FALSE; + TRACE("(%s,%p,%p)\n",debugstr_guid(lpcGUID),ippDS,pUnkOuter); + if (ippDS == NULL) { WARN("invalid parameter\n"); return DSERR_INVALIDPARAM; @@ -758,7 +760,10 @@ HRESULT WINAPI DirectSoundCreate8(LPCGUID lpcGUID,LPDIRECTSOUND8 *ppDS,IUnknown setup_dsound_options(); /* Default device? */ - if ( !lpcGUID || IsEqualGUID(lpcGUID, &GUID_NULL) ) + if ( !lpcGUID || + IsEqualGUID(lpcGUID, &GUID_NULL) || + IsEqualGUID(lpcGUID, &IID_IDirectSound) || + IsEqualGUID(lpcGUID, &IID_IDirectSound8)) lpcGUID = &DSDEVID_DefaultPlayback; if (GetDeviceID(lpcGUID, &devGuid) != DS_OK) { @@ -781,6 +786,8 @@ HRESULT WINAPI DirectSoundCreate8(LPCGUID lpcGUID,LPDIRECTSOUND8 *ppDS,IUnknown wodn = waveOutGetNumDevs(); if (!wodn) return DSERR_NODRIVER; + TRACE(" expecting GUID %s.\n", debugstr_guid(&devGuid)); + for (wod=0; wod