mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-02 12:03:38 +00:00
msvfw32: Fix enumeration of VFW video codecs that are registered in the registry.
This commit is contained in:
parent
fc5a746104
commit
79e19b91a8
|
@ -107,9 +107,8 @@ typedef BOOL (*enum_handler_t)(const char*, int, void*);
|
||||||
static BOOL enum_drivers(DWORD fccType, enum_handler_t handler, void* param)
|
static BOOL enum_drivers(DWORD fccType, enum_handler_t handler, void* param)
|
||||||
{
|
{
|
||||||
CHAR buf[2048], fccTypeStr[5], *s;
|
CHAR buf[2048], fccTypeStr[5], *s;
|
||||||
DWORD i, cnt = 0, bufLen, lRet;
|
DWORD i, cnt = 0, lRet;
|
||||||
BOOL result = FALSE;
|
BOOL result = FALSE;
|
||||||
FILETIME lastWrite;
|
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
|
|
||||||
fourcc_to_string(fccTypeStr, fccType);
|
fourcc_to_string(fccTypeStr, fccType);
|
||||||
|
@ -119,14 +118,17 @@ static BOOL enum_drivers(DWORD fccType, enum_handler_t handler, void* param)
|
||||||
lRet = RegOpenKeyExA(HKEY_LOCAL_MACHINE, HKLM_DRIVERS32, 0, KEY_QUERY_VALUE, &hKey);
|
lRet = RegOpenKeyExA(HKEY_LOCAL_MACHINE, HKLM_DRIVERS32, 0, KEY_QUERY_VALUE, &hKey);
|
||||||
if (lRet == ERROR_SUCCESS)
|
if (lRet == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
DWORD numkeys;
|
DWORD name, data, type;
|
||||||
RegQueryInfoKeyA( hKey, 0, 0, 0, &numkeys, 0, 0, 0, 0, 0, 0, 0);
|
i = 0;
|
||||||
for (i = 0; i < numkeys; i++)
|
for (;;)
|
||||||
{
|
{
|
||||||
bufLen = sizeof(buf) / sizeof(buf[0]);
|
name = 10;
|
||||||
lRet = RegEnumKeyExA(hKey, i, buf, &bufLen, 0, 0, 0, &lastWrite);
|
data = sizeof buf - name;
|
||||||
|
lRet = RegEnumValueA(hKey, i++, buf, &name, 0, &type, (LPBYTE)(buf+name), &data);
|
||||||
|
if (lRet == ERROR_NO_MORE_ITEMS) break;
|
||||||
if (lRet != ERROR_SUCCESS) continue;
|
if (lRet != ERROR_SUCCESS) continue;
|
||||||
if (strncasecmp(buf, fccTypeStr, 5) || buf[9] != '=') continue;
|
if (name != 9 || strncasecmp(buf, fccTypeStr, 5)) continue;
|
||||||
|
buf[name] = '=';
|
||||||
if ((result = handler(buf, cnt++, param))) break;
|
if ((result = handler(buf, cnt++, param))) break;
|
||||||
}
|
}
|
||||||
RegCloseKey( hKey );
|
RegCloseKey( hKey );
|
||||||
|
|
Loading…
Reference in a new issue