Commit a3a4751a authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

setupapi: Implement device-specific co-installers in SetupDiCallClassInstaller().

parent 8b1050c7
......@@ -3581,6 +3581,7 @@ BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION function, HDEVINFO devinfo, SP
'\\','C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t',
'\\','C','o','n','t','r','o','l',
'\\','C','o','D','e','v','i','c','e','I','n','s','t','a','l','l','e','r','s',0};
static const WCHAR coinstallers32W[] = {'C','o','I','n','s','t','a','l','l','e','r','s','3','2',0};
static const WCHAR installer32W[] = {'I','n','s','t','a','l','l','e','r','3','2',0};
DWORD (CALLBACK *classinst_proc)(DI_FUNCTION, HDEVINFO, SP_DEVINFO_DATA *);
DWORD ret = ERROR_DI_DO_DEFAULT;
......@@ -3614,6 +3615,18 @@ BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION function, HDEVINFO devinfo, SP
if (!coret)
return FALSE;
if (!open_driver_key(device, KEY_READ, &coinst_key))
{
if (!RegGetValueW(coinst_key, NULL, coinstallers32W, RRF_RT_REG_MULTI_SZ, NULL, NULL, &size))
{
path = heap_alloc(size);
if (!RegGetValueW(coinst_key, NULL, coinstallers32W, RRF_RT_REG_MULTI_SZ, NULL, path, &size))
coret = call_coinstallers(path, function, devinfo, device_data);
heap_free(path);
}
RegCloseKey(coinst_key);
}
if ((class_key = SetupDiOpenClassRegKey(&device->class, KEY_READ)) != INVALID_HANDLE_VALUE)
{
if (!RegGetValueW(class_key, NULL, installer32W, RRF_RT_REG_SZ, NULL, NULL, &size))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment