diff options
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
| -rw-r--r-- | windows/driverlogic/src/driverlogic.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp index 450e08f821..989ee70cf5 100644 --- a/windows/driverlogic/src/driverlogic.cpp +++ b/windows/driverlogic/src/driverlogic.cpp @@ -244,16 +244,14 @@ bool TryGetRegistryValueTimeout( DWORD *dataSize ) { - HANDLE changeEvent = CreateEventW(nullptr, FALSE, FALSE, nullptr); - - if (nullptr == changeEvent) - { - THROW_WINDOWS_ERROR(GetLastError(), "CreateEventW"); - } + HANDLE changeEvent = nullptr; common::memory::ScopeDestructor scopeDestructor; scopeDestructor += [changeEvent]() { - CloseHandle(changeEvent); + if (nullptr != changeEvent) + { + CloseHandle(changeEvent); + } }; auto initialTime = std::chrono::steady_clock::now(); @@ -273,6 +271,16 @@ bool TryGetRegistryValueTimeout( THROW_WINDOWS_ERROR(status, "RegGetValueW"); } + if (nullptr == changeEvent) + { + changeEvent = CreateEventW(nullptr, FALSE, FALSE, nullptr); + + if (nullptr == changeEvent) + { + THROW_WINDOWS_ERROR(GetLastError(), "CreateEventW"); + } + } + // // Wait for the registry value to be created // |
