diff --git a/Configurator/Configurator.rc b/Configurator/Configurator.rc index 29a552f..0f5eaec 100644 Binary files a/Configurator/Configurator.rc and b/Configurator/Configurator.rc differ diff --git a/DeviceAPOInfo.cpp b/DeviceAPOInfo.cpp index 0606587..6a148f0 100644 --- a/DeviceAPOInfo.cpp +++ b/DeviceAPOInfo.cpp @@ -51,6 +51,9 @@ static const wchar_t* gfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d static const wchar_t* sfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},5"; static const wchar_t* mfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},6"; static const wchar_t* efxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},7"; +static const wchar_t* multiSfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},13"; +static const wchar_t* multiMfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},14"; +static const wchar_t* multiEfxGuidValueName = L"{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},15"; static const unsigned allGuidValueNameCount = 5; static const wchar_t* allGuidValueNames[] = {lfxGuidValueName, gfxGuidValueName, sfxGuidValueName, mfxGuidValueName, efxGuidValueName}; enum GuidValueIndices @@ -80,7 +83,7 @@ vector> DeviceAPOInfo::loadAllInfos(bool input) { wstring deviceGuidString = *it; - shared_ptr info = make_shared(); + shared_ptr info = make_shared (); if (info->load(deviceGuidString, defaultDeviceGuid)) { info->selectedInstallState = info->currentInstallState; @@ -352,6 +355,24 @@ bool DeviceAPOInfo::load(const wstring& deviceGuid, wstring defaultDeviceGuid) } } } + else + { + if (RegistryHelper::isWindowsVersionAtLeast(6, 3)) // Windows 8.1 + { + // only use LFX/GFX if the audio driver supplied only those APOs + if (RegistryHelper::keyExists(keyPath + L"\\FxProperties") + && (RegistryHelper::valueExists(keyPath + L"\\FxProperties", lfxGuidValueName) || RegistryHelper::valueExists(keyPath + L"\\FxProperties", gfxGuidValueName)) + && !RegistryHelper::valueExists(keyPath + L"\\FxProperties", sfxGuidValueName) + && !RegistryHelper::valueExists(keyPath + L"\\FxProperties", mfxGuidValueName) + && !RegistryHelper::valueExists(keyPath + L"\\FxProperties", efxGuidValueName) + && !RegistryHelper::valueExists(keyPath + L"\\FxProperties", multiSfxGuidValueName) + && !RegistryHelper::valueExists(keyPath + L"\\FxProperties", multiMfxGuidValueName) + && !RegistryHelper::valueExists(keyPath + L"\\FxProperties", multiEfxGuidValueName)) + currentInstallState.installMode = INSTALL_LFX_GFX; + else + currentInstallState.installMode = INSTALL_SFX_EFX; + } + } } return true;