| @@ -28,7 +28,9 @@ struct lock_data { | |||
| auto lockflags = lm == exclusive ? LOCKFILE_EXCLUSIVE_LOCK : 0; | |||
| auto failflags = fm == nonblocking ? LOCKFILE_FAIL_IMMEDIATELY : 0; | |||
| auto flags = lockflags | failflags; | |||
| const auto okay = ::LockFileEx(file.get(), flags, 0, 0, 0, nullptr); | |||
| auto hndl = file.get(); | |||
| OVERLAPPED ovr = {}; | |||
| const auto okay = ::LockFileEx(hndl, flags, 0, 0, 0, &ovr); | |||
| if (!okay) { | |||
| cancellation_point(); | |||
| if (::GetLastError() == ERROR_IO_PENDING) { | |||
| @@ -41,7 +43,8 @@ struct lock_data { | |||
| } | |||
| void unlock(path_ref p) { | |||
| const auto okay = ::UnlockFileEx(file.get(), 0, 0, 0, nullptr); | |||
| OVERLAPPED ovr = {}; | |||
| const auto okay = ::UnlockFileEx(file.get(), 0, 0, 0, &ovr); | |||
| if (!okay) { | |||
| cancellation_point(); | |||
| throw std::system_error(std::error_code(::GetLastError(), std::system_category()), | |||