[MSACM32] Sync with Wine Staging 3.3. CORE-14434
[reactos.git] / dll / win32 / msacm32 / internal.c
index b9b80c1..7bafcaa 100644 (file)
@@ -360,8 +360,8 @@ void MSACM_RegisterAllDrivers(void)
                                   'W','i','n','d','o','w','s',' ','N','T','\\',
                                   'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
                                   'D','r','i','v','e','r','s','3','2','\0'};
-    DWORD i, cnt = 0, bufLen, lRet;
-    WCHAR buf[2048], *name, *s;
+    DWORD i, cnt, bufLen, lRet, type;
+    WCHAR buf[2048], valname[64], *name, *s;
     FILETIME lastWrite;
     HKEY hKey;
 
@@ -381,6 +381,15 @@ void MSACM_RegisterAllDrivers(void)
            *name = 0;
            MSACM_RegisterDriver(buf, name + 1, 0);
        }
+       i = 0;
+       cnt = sizeof(valname) / sizeof(*valname);
+       bufLen = sizeof(buf);
+       while(RegEnumValueW(hKey, i, valname, &cnt, 0,
+                   &type, (BYTE*)buf, &bufLen) == ERROR_SUCCESS){
+           if(!strncmpiW(valname, msacmW, sizeof(msacmW) / sizeof(*msacmW)))
+               MSACM_RegisterDriver(valname, buf, 0);
+           ++i;
+       }
        RegCloseKey( hKey );
     }
 
@@ -1076,7 +1085,7 @@ LRESULT MSACM_CloseLocalDriver(PWINE_ACMLOCALDRIVERINST paldrv)
             MSACM_DRIVER_SendMessage(lpDrv0, DRV_CLOSE, 0L, 0L);
             lpDrv0->dwDriverID = 0;
             MSACM_RemoveFromList(lpDrv0);
-            HeapFree(GetProcessHeap(), 0, lpDrv0);
+            HeapFree(MSACM_hHeap, 0, lpDrv0);
         }
 
         HeapFree(MSACM_hHeap, 0, paldrv);