| 19 | } |
| 20 | |
| 21 | bool RegistrySearcher::Find(RegistrySearcherCallback callback) { |
| 22 | ATLASSERT(callback); |
| 23 | _cb = callback; |
| 24 | _inProgress = true; |
| 25 | _cancel = false; |
| 26 | _hCancelEvent.reset(::CreateEvent(nullptr, TRUE, FALSE, nullptr)); |
| 27 | _hContinueEvent.reset(::CreateEvent(nullptr, FALSE, FALSE, nullptr)); |
| 28 | _hDoneEvent.reset(::CreateEvent(nullptr, TRUE, FALSE, nullptr)); |
| 29 | |
| 30 | _hThread.reset(::CreateThread(nullptr, 0, [](auto p) { |
| 31 | return ((RegistrySearcher*)p)->DoSearch(); |
| 32 | }, this, 0, nullptr)); |
| 33 | ::SetThreadPriority(_hThread.get(), THREAD_PRIORITY_LOWEST); |
| 34 | |
| 35 | return true; |
| 36 | } |
| 37 | |
| 38 | bool RegistrySearcher::Cancel() { |
| 39 | if (IsRunning()) { |
no test coverage detected