diff --git a/dlls/mmdevapi/devenum.c b/dlls/mmdevapi/devenum.c index 7acc3f6ff26..8a712628046 100644 --- a/dlls/mmdevapi/devenum.c +++ b/dlls/mmdevapi/devenum.c @@ -445,6 +445,9 @@ static HRESULT load_driver_devices(EDataFlow flow) UINT num, def, i; HRESULT hr; + if(!drvs.pGetEndpointIDs) + return S_OK; + hr = drvs.pGetEndpointIDs(flow, &ids, &keys, &num, &def); if(FAILED(hr)) return hr; @@ -824,9 +827,6 @@ HRESULT MMDevEnum_Create(REFIID riid, void **ppv) { MMDevEnumImpl *This = MMDevEnumerator; - if(!drvs.pGetAudioEndpoint) - return AUDCLNT_E_SERVICE_NOT_RUNNING; - if (!This) { This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); diff --git a/dlls/mmdevapi/main.c b/dlls/mmdevapi/main.c index 3063a11ce59..c694c6e1d9b 100644 --- a/dlls/mmdevapi/main.c +++ b/dlls/mmdevapi/main.c @@ -104,9 +104,12 @@ static BOOL init_driver(void) DWORD size = sizeof(driver_name); if(RegQueryValueExW(key, drv_value, 0, NULL, (BYTE*)driver_name, - &size) == ERROR_SUCCESS && driver_name[0] != '\0'){ + &size) == ERROR_SUCCESS){ RegCloseKey(key); + if(driver_name[0] == '\0') + return TRUE; + for(next = p = driver_name; next; p = next + 1){ next = strchrW(p, ','); if(next)