From 6ec988a43bca36c0e70c26ca216dc489cd8de50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Gawro=C5=84ski?= Date: Sun, 2 Nov 2025 12:47:57 +0100 Subject: [PATCH] Replace GetSystemTimeAsFileTime with GetSystemTimePreciseAsFileTime According to Microsoft documentation this variant of GetSystemTime guarantiees to get highest posible level of precision (<1us). https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime --- include/boost/winapi/time.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/boost/winapi/time.hpp b/include/boost/winapi/time.hpp index 59e969b..b8bb17a 100644 --- a/include/boost/winapi/time.hpp +++ b/include/boost/winapi/time.hpp @@ -25,6 +25,11 @@ struct _SYSTEMTIME; BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC GetSystemTime(::_SYSTEMTIME* lpSystemTime); +#ifdef BOOST_HAS_GETSYSTEMTIMEPRECISEASFILETIME // Windows CE does not define GetSystemTimePreciseAsFileTime +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +GetSystemTimePreciseAsFileTime(::_FILETIME* lpSystemTimeAsFileTime); +#endif + #ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME // Windows CE does not define GetSystemTimeAsFileTime BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC GetSystemTimeAsFileTime(::_FILETIME* lpSystemTimeAsFileTime); @@ -120,6 +125,13 @@ BOOST_FORCEINLINE BOOL_ LocalFileTimeToFileTime(const FILETIME_* lpLocalFileTime } #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM +#if defined (BOOST_HAS_GETSYSTEMTIMEPRECISEASFILETIME) +BOOST_FORCEINLINE VOID_ GetSystemTimePreciseAsFileTime(LPFILETIME_ lpSystemTimeAsFileTime) +{ + ::GetSystemTimePreciseAsFileTime(reinterpret_cast< ::_FILETIME* >(lpSystemTimeAsFileTime)); +} +#endif + #if defined( BOOST_HAS_GETSYSTEMTIMEASFILETIME ) BOOST_FORCEINLINE VOID_ GetSystemTimeAsFileTime(LPFILETIME_ lpSystemTimeAsFileTime) {