Use VerifyVersionInfo rather than GetVersionEx. GetVersionEx has been deprecated.
diff --git a/asio/include/asio/detail/impl/win_iocp_io_service.ipp b/asio/include/asio/detail/impl/win_iocp_io_service.ipp index a4f56dc..7a44e66 100644 --- a/asio/include/asio/detail/impl/win_iocp_io_service.ipp +++ b/asio/include/asio/detail/impl/win_iocp_io_service.ipp
@@ -21,6 +21,7 @@ #include "asio/error.hpp" #include "asio/io_service.hpp" +#include "asio/detail/cstdint.hpp" #include "asio/detail/handler_alloc_helpers.hpp" #include "asio/detail/handler_invoke_helpers.hpp" #include "asio/detail/limits.hpp" @@ -456,11 +457,17 @@ DWORD win_iocp_io_service::get_gqcs_timeout() { - OSVERSIONINFO version_info; - version_info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - if (::GetVersionEx(&version_info)) - if (version_info.dwMajorVersion >= 6) - return INFINITE; + OSVERSIONINFOEX osvi; + ZeroMemory(&osvi, sizeof(osvi)); + osvi.dwOSVersionInfoSize = sizeof(osvi); + osvi.dwMajorVersion = 6ul; + + const uint64_t condition_mask = ::VerSetConditionMask( + 0, VER_MAJORVERSION, VER_GREATER_EQUAL); + + if (!!::VerifyVersionInfo(&osvi, VER_MAJORVERSION, condition_mask)) + return INFINITE; + return default_gqcs_timeout; }