Я выполняю вызов функции в операторе if
if (function(...)) {
do some stuff...
} else {
do something else...
}
. Проблема в том, что когда функция возвращает 0, блок else { ... }
выполняется отлично, но если функция возвращает что-то> 0программа завершится сбоем.
рассматриваемая функция:
BOOL fnCheckRegistryKeyW(
_In_ LPCWSTR lpSubKey,
_In_ LPCWSTR lpValueName,
_In_ DWORD dwEType,
_In_ BYTE bEValue
) {
HKEY hKey;
DWORD dwType;
BYTE bValue;
DWORD dwlen = sizeof(DWORD);
BOOL bReturn = FALSE;
LSTATUS lsRKey = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpSubKey, 0, KEY_READ | KEY_WOW64_32KEY, &hKey);
if (!lsRKey) {
LSTATUS lsRVal = RegQueryValueEx(hKey, lpValueName, 0, &dwType, (PBYTE)&bValue, &dwlen);
if (!lsRVal) {
if (dwType == dwEType && bValue == bEValue) {
RegCloseKey(hKey);
return TRUE;
} else {
}
} else {
}
} else {
}
// If HKLM can't be read try HKCU
hKey = NULL;
lsRKey = RegOpenKeyEx(HKEY_CURRENT_USER, lpSubKey, 0, KEY_READ | KEY_WOW64_32KEY, &hKey);
if (!lsRKey) {
LSTATUS lsRVal = RegQueryValueEx(hKey, lpValueName, 0, &dwType, (PBYTE)&bValue, &dwlen);
if (!lsRVal) {
if (dwType == dwEType && bValue == bEValue) {
RegCloseKey(hKey);
return TRUE;
} else {
}
} else {
}
} else {
}
RegCloseKey(hKey);
return FALSE;
}
Сама функция работает нормально, но она завершает работу программы, как только она возвращает значение> 0, и из-за этогокодовый блок внутри оператора if не выполняется.