From 115d0cb6bf1bcb7fbd7d049d337c6ac72548afbc Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Wed, 19 Sep 2007 17:59:16 -0700 Subject: [PATCH] Set last error on failure in SetupDiOpenClassRegKeyExW --- dlls/setupapi/devinst.c | 42 +++++++++++++++++++++++------------------- 1 files changed, 23 insertions(+), 19 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index b99c1b5..a5107e5 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -2388,8 +2388,9 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW( PVOID Reserved) { HKEY hClassesKey; - HKEY hClassKey; + HKEY key; LPCWSTR lpKeyName; + LONG l; if (MachineName != NULL) { @@ -2414,15 +2415,16 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW( if (!ClassGuid) { - if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, + if ((l = RegOpenKeyExW(HKEY_LOCAL_MACHINE, lpKeyName, 0, samDesired, - &hClassesKey)) + &hClassesKey))) { - return INVALID_HANDLE_VALUE; + SetLastError(l); + hClassesKey = INVALID_HANDLE_VALUE; } - return hClassesKey; + key = hClassesKey; } else { @@ -2430,28 +2432,30 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW( SETUPDI_GuidToString(ClassGuid, bracedGuidString); - if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, + if (!(l = RegOpenKeyExW(HKEY_LOCAL_MACHINE, lpKeyName, 0, samDesired, - &hClassesKey)) + &hClassesKey))) { - return INVALID_HANDLE_VALUE; + if ((l = RegOpenKeyExW(hClassesKey, + bracedGuidString, + 0, + samDesired, + &key))) + { + SetLastError(l); + key = INVALID_HANDLE_VALUE; + } + RegCloseKey(hClassesKey); } - if (RegOpenKeyExW(hClassesKey, - bracedGuidString, - 0, - samDesired, - &hClassKey)) + else { - RegCloseKey(hClassesKey); - return INVALID_HANDLE_VALUE; + SetLastError(l); + key = INVALID_HANDLE_VALUE; } - - RegCloseKey(hClassesKey); - - return hClassKey; } + return key; } /*********************************************************************** -- 1.4.1