bool CRulesManager::FindRule(const USB_DK_HIDE_RULE &Rule, TFunctor Functor) { for (const auto &SubKey : m_RegAccess) { try { USB_DK_HIDE_RULE ExistingRule; ReadRule(SubKey, ExistingRule); if (Rule == ExistingRule) { Functor(SubKey); return true; } } catch (const UsbDkRuleManagerException &e) { auto ErrorText = tstring(TEXT("Error while processing rule ")) + SubKey + TEXT(": ") + string2tstring(e.what()); OutputDebugString(ErrorText.c_str()); } } return false; }
inline HRESULT KAppFile::ReadRuleList(KRecord* pRecord) { HRESULT hr = S_OK; ASSERT(pRecord->GetType() == AppRule_RuleList); KRecord rule = pRecord->FirstSubRecord(); while (pRecord->IsSubRecord(rule)) { if (!rule.Ok()) return E_APP_FILE_UNKNOWN_FMT; hr = ReadRule(&rule); rule = rule.NextRecord(); } return S_OK; }