Andrew Eikum <aeikum(a)codeweavers.com> writes:
> +/* Attempt to determine if we are running on OSS or ALSA's OSS compatability
> + * layer. There is no official way to do that, so just check for validity
> + * as best as possible, without rejecting valid OSS implementations. */
> +static BOOL verify_actually_oss(void)
> +{
> + int mixer_fd;
> + oss_sysinfo sysinfo;
> + HKEY key;
> +
> + static const WCHAR drv_key[] = {'S','o','f','t','w','a','r','e','\\',
> + 'W','i','n','e','\\','D','r','i','v','e','r','s',0};
> + static const WCHAR drv_value[] = {'A','u','d','i','o',0};
> + static const WCHAR ossW[] = {'O','S','S'};
> +
> + /* if the user has specified a driver explicitly, then succeed
> + * if they want OSS and fail if they don't */
> + if(RegOpenKeyW(HKEY_CURRENT_USER, drv_key, &key) == ERROR_SUCCESS){
> + WCHAR driver_name[256];
> + DWORD size = sizeof(driver_name);
> +
> + if(RegQueryValueExW(key, drv_value, 0, NULL, (BYTE*)driver_name,
> + &size) == ERROR_SUCCESS){
> + RegCloseKey(key);
> + if(!lstrcmpiW(ossW, driver_name))
> + return TRUE;
> + return FALSE;
> + }
> +
> + RegCloseKey(key);
> + }
It's not the driver's business to check the configuration key. If
there's really a need to know if some other driver was configured, this
info should be passed from the driver loader. But it would be preferable
to avoid that.
--
Alexandre Julliard
julliard(a)winehq.org