summaryrefslogtreecommitdiffhomepage
path: root/windows/driverlogic/src/driverlogic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
-rw-r--r--windows/driverlogic/src/driverlogic.cpp22
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
//