msdmo: Registry API functions don't return HRESULT codes.

This commit is contained in:
Nikolay Sivov 2014-12-29 00:13:56 +03:00 committed by Alexandre Julliard
parent 8479229ae8
commit 5c91d011bb
1 changed files with 46 additions and 37 deletions

View File

@ -129,10 +129,11 @@ static BOOL IsMediaTypeEqual(const DMO_PARTIAL_MEDIATYPE* mt1, const DMO_PARTIAL
static HRESULT write_types(HKEY hkey, LPCWSTR name, const DMO_PARTIAL_MEDIATYPE* types, DWORD count)
{
HRESULT hres = S_OK;
LONG ret;
if (MSDMO_MAJOR_VERSION > 5)
{
hres = RegSetValueExW(hkey, name, 0, REG_BINARY, (const BYTE*) types,
ret = RegSetValueExW(hkey, name, 0, REG_BINARY, (const BYTE*) types,
count* sizeof(DMO_PARTIAL_MEDIATYPE));
}
else
@ -141,15 +142,18 @@ static HRESULT write_types(HKEY hkey, LPCWSTR name, const DMO_PARTIAL_MEDIATYPE*
DWORD index = 0;
WCHAR szGuidKey[64];
hres = RegCreateKeyExW(hkey, name, 0, NULL, REG_OPTION_NON_VOLATILE,
ret = RegCreateKeyExW(hkey, name, 0, NULL, REG_OPTION_NON_VOLATILE,
KEY_WRITE, NULL, &skey1, NULL);
if (ret)
return HRESULT_FROM_WIN32(ret);
while (index < count)
{
GUIDToString(szGuidKey,&types[index].type);
hres = RegCreateKeyExW(skey1, szGuidKey, 0, NULL,
ret = RegCreateKeyExW(skey1, szGuidKey, 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &skey2, NULL);
GUIDToString(szGuidKey,&types[index].subtype);
hres = RegCreateKeyExW(skey2, szGuidKey, 0, NULL,
ret = RegCreateKeyExW(skey2, szGuidKey, 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &skey3, NULL);
RegCloseKey(skey3);
RegCloseKey(skey2);
@ -158,7 +162,7 @@ static HRESULT write_types(HKEY hkey, LPCWSTR name, const DMO_PARTIAL_MEDIATYPE*
RegCloseKey(skey1);
}
return hres;
return HRESULT_FROM_WIN32(ret);
}
/***************************************************************
@ -256,29 +260,29 @@ lend:
*/
HRESULT WINAPI DMOUnregister(REFCLSID clsidDMO, REFGUID guidCategory)
{
HRESULT hres;
WCHAR szguid[64];
HKEY hrkey = 0;
HKEY hckey = 0;
LONG ret;
GUIDToString(szguid, clsidDMO);
TRACE("%s %p\n", debugstr_w(szguid), guidCategory);
hres = RegOpenKeyExW(HKEY_CLASSES_ROOT, szDMORootKey, 0, KEY_WRITE, &hrkey);
if (ERROR_SUCCESS != hres)
ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, szDMORootKey, 0, KEY_WRITE, &hrkey);
if (ERROR_SUCCESS != ret)
goto lend;
hres = RegDeleteKeyW(hrkey, szguid);
if (ERROR_SUCCESS != hres)
ret = RegDeleteKeyW(hrkey, szguid);
if (ERROR_SUCCESS != ret)
goto lend;
hres = RegOpenKeyExW(hrkey, szDMOCategories, 0, KEY_WRITE, &hckey);
if (ERROR_SUCCESS != hres)
ret = RegOpenKeyExW(hrkey, szDMOCategories, 0, KEY_WRITE, &hckey);
if (ERROR_SUCCESS != ret)
goto lend;
hres = RegDeleteKeyW(hckey, szguid);
if (ERROR_SUCCESS != hres)
ret = RegDeleteKeyW(hckey, szguid);
if (ERROR_SUCCESS != ret)
goto lend;
lend:
@ -287,7 +291,7 @@ lend:
if (hrkey)
RegCloseKey(hrkey);
return hres;
return HRESULT_FROM_WIN32(ret);
}
@ -299,27 +303,24 @@ lend:
HRESULT WINAPI DMOGetName(REFCLSID clsidDMO, WCHAR szName[])
{
WCHAR szguid[64];
HRESULT hres;
HKEY hrkey = 0;
HKEY hkey = 0;
static const INT max_name_len = 80;
DWORD count;
LONG ret;
TRACE("%s\n", debugstr_guid(clsidDMO));
hres = RegOpenKeyExW(HKEY_CLASSES_ROOT, szDMORootKey,
0, KEY_READ, &hrkey);
if (ERROR_SUCCESS != hres)
ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, szDMORootKey, 0, KEY_READ, &hrkey);
if (ERROR_SUCCESS != ret)
goto lend;
hres = RegOpenKeyExW(hrkey, GUIDToString(szguid, clsidDMO),
0, KEY_READ, &hkey);
if (ERROR_SUCCESS != hres)
ret = RegOpenKeyExW(hrkey, GUIDToString(szguid, clsidDMO), 0, KEY_READ, &hkey);
if (ERROR_SUCCESS != ret)
goto lend;
count = max_name_len * sizeof(WCHAR);
hres = RegQueryValueExW(hkey, NULL, NULL, NULL,
(LPBYTE) szName, &count);
ret = RegQueryValueExW(hkey, NULL, NULL, NULL, (LPBYTE) szName, &count);
TRACE(" szName=%s\n", debugstr_w(szName));
lend:
@ -328,10 +329,9 @@ lend:
if (hkey)
RegCloseKey(hkey);
return hres;
return HRESULT_FROM_WIN32(ret);
}
/**************************************************************************
* IEnumDMOImpl_Destructor
*/
@ -506,6 +506,7 @@ static HRESULT WINAPI IEnumDMO_fnNext(
DWORD len;
UINT count = 0;
HRESULT hres = S_OK;
LONG ret;
IEnumDMOImpl *This = impl_from_IEnumDMO(iface);
@ -519,17 +520,20 @@ static HRESULT WINAPI IEnumDMO_fnNext(
This->index++;
len = MAX_PATH;
hres = RegEnumKeyExW(This->hkey, This->index, szNextKey, &len, NULL, NULL, NULL, &ft);
if (hres != ERROR_SUCCESS)
ret = RegEnumKeyExW(This->hkey, This->index, szNextKey, &len, NULL, NULL, NULL, &ft);
if (ret != ERROR_SUCCESS)
{
hres = HRESULT_FROM_WIN32(ret);
break;
}
TRACE("found %s\n", debugstr_w(szNextKey));
if (!(This->dwFlags & DMO_ENUMF_INCLUDE_KEYED))
{
wsprintfW(szKey, szCat3Fmt, szDMORootKey, szNextKey, szDMOKeyed);
hres = RegOpenKeyExW(HKEY_CLASSES_ROOT, szKey, 0, KEY_READ, &hkey);
if (ERROR_SUCCESS == hres)
ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, szKey, 0, KEY_READ, &hkey);
if (ERROR_SUCCESS == ret)
{
RegCloseKey(hkey);
/* Skip Keyed entries */
@ -538,7 +542,7 @@ static HRESULT WINAPI IEnumDMO_fnNext(
}
wsprintfW(szKey, szCat2Fmt, szDMORootKey, szNextKey);
hres = RegOpenKeyExW(HKEY_CLASSES_ROOT, szKey, 0, KEY_READ, &hkey);
ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, szKey, 0, KEY_READ, &hkey);
if (This->pInTypes)
{
@ -550,7 +554,7 @@ static HRESULT WINAPI IEnumDMO_fnNext(
sizeof(szValue)/sizeof(DMO_PARTIAL_MEDIATYPE),
(DMO_PARTIAL_MEDIATYPE*)szValue);
if (ERROR_SUCCESS != hres)
if (FAILED(hres))
{
RegCloseKey(hkey);
continue;
@ -587,7 +591,7 @@ static HRESULT WINAPI IEnumDMO_fnNext(
sizeof(szValue)/sizeof(DMO_PARTIAL_MEDIATYPE),
(DMO_PARTIAL_MEDIATYPE*)szValue);
if (ERROR_SUCCESS != hres)
if (FAILED(hres))
{
RegCloseKey(hkey);
continue;
@ -617,8 +621,8 @@ static HRESULT WINAPI IEnumDMO_fnNext(
/* Media object wasn't filtered so add it to return list */
Names[count] = NULL;
len = MAX_PATH * sizeof(WCHAR);
hres = RegQueryValueExW(hkey, NULL, NULL, NULL, (LPBYTE) szValue, &len);
if (ERROR_SUCCESS == hres)
ret = RegQueryValueExW(hkey, NULL, NULL, NULL, (LPBYTE)szValue, &len);
if (ERROR_SUCCESS == ret)
{
Names[count] = HeapAlloc(GetProcessHeap(), 0, (strlenW(szValue) + 1) * sizeof(WCHAR));
if (Names[count])
@ -718,11 +722,16 @@ static const IEnumDMOVtbl edmovt =
HRESULT read_types(HKEY root, LPCWSTR key, ULONG *supplied, ULONG requested, DMO_PARTIAL_MEDIATYPE* types )
{
HRESULT ret = S_OK;
if (MSDMO_MAJOR_VERSION > 5)
{
DWORD len;
LONG rc;
len = requested * sizeof(DMO_PARTIAL_MEDIATYPE);
ret = RegQueryValueExW(root, key, NULL, NULL, (LPBYTE) types, &len);
rc = RegQueryValueExW(root, key, NULL, NULL, (LPBYTE) types, &len);
ret = HRESULT_FROM_WIN32(rc);
*supplied = len / sizeof(DMO_PARTIAL_MEDIATYPE);
}
else