Alexandre Julliard : ntdll: Fix RtlQueryUnbiasedInterruptTime() prototype.
Alexandre Julliard
julliard at winehq.org
Mon Dec 16 16:47:55 CST 2019
Module: wine
Branch: master
Commit: 8b0a7b25036f74ebe60b3bd5b7b6ecd37f5f1385
URL: https://source.winehq.org/git/wine.git/?a=commit;h=8b0a7b25036f74ebe60b3bd5b7b6ecd37f5f1385
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Dec 16 18:44:07 2019 +0100
ntdll: Fix RtlQueryUnbiasedInterruptTime() prototype.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48239
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/tests/time.c | 35 +++++++++++++++++++++++++++++++++++
dlls/ntdll/time.c | 9 +++++++--
include/winternl.h | 2 +-
3 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/tests/time.c b/dlls/kernel32/tests/time.c
index 5faabd36e1..28312bac3c 100644
--- a/dlls/kernel32/tests/time.c
+++ b/dlls/kernel32/tests/time.c
@@ -1027,6 +1027,38 @@ static void test_GetTickCount(void)
ok(t2 <= t3, "out of order %d %d\n", t2, t3);
}
+BOOL (WINAPI *pQueryUnbiasedInterruptTime)(ULONGLONG *time);
+BOOL (WINAPI *pRtlQueryUnbiasedInterruptTime)(ULONGLONG *time);
+
+static void test_QueryUnbiasedInterruptTime(void)
+{
+ ULONGLONG time;
+ BOOL ret;
+
+ if (pQueryUnbiasedInterruptTime)
+ {
+ SetLastError( 0xdeadbeef );
+ ret = pQueryUnbiasedInterruptTime( &time );
+ ok( ret, "QueryUnbiasedInterruptTime failed err %u\n", GetLastError() );
+ SetLastError( 0xdeadbeef );
+ ret = pQueryUnbiasedInterruptTime( NULL );
+ ok( !ret, "QueryUnbiasedInterruptTime succeeded\n" );
+ ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() );
+ }
+ else win_skip( "QueryUnbiasedInterruptTime not supported\n" );
+ if (pRtlQueryUnbiasedInterruptTime)
+ {
+ SetLastError( 0xdeadbeef );
+ ret = pRtlQueryUnbiasedInterruptTime( &time );
+ ok( ret, "RtlQueryUnbiasedInterruptTime failed err %u\n", GetLastError() );
+ SetLastError( 0xdeadbeef );
+ ret = pRtlQueryUnbiasedInterruptTime( NULL );
+ ok( !ret, "RtlQueryUnbiasedInterruptTime succeeded\n" );
+ ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() );
+ }
+ else win_skip( "RtlQueryUnbiasedInterruptTime not supported\n" );
+}
+
START_TEST(time)
{
HMODULE hKernel = GetModuleHandleA("kernel32");
@@ -1039,7 +1071,9 @@ START_TEST(time)
pGetDynamicTimeZoneInformation = (void *)GetProcAddress(hKernel, "GetDynamicTimeZoneInformation");
pGetSystemTimePreciseAsFileTime = (void *)GetProcAddress(hKernel, "GetSystemTimePreciseAsFileTime");
pGetTimeZoneInformationForYear = (void *)GetProcAddress(hKernel, "GetTimeZoneInformationForYear");
+ pQueryUnbiasedInterruptTime = (void *)GetProcAddress(hKernel, "QueryUnbiasedInterruptTime");
pNtGetTickCount = (void *)GetProcAddress(hntdll, "NtGetTickCount");
+ pRtlQueryUnbiasedInterruptTime = (void *)GetProcAddress(hntdll, "RtlQueryUnbiasedInterruptTime");
test_conversions();
test_invalid_arg();
@@ -1055,4 +1089,5 @@ START_TEST(time)
test_GetSystemTimePreciseAsFileTime();
test_GetTimeZoneInformationForYear();
test_GetTickCount();
+ test_QueryUnbiasedInterruptTime();
}
diff --git a/dlls/ntdll/time.c b/dlls/ntdll/time.c
index 4e3d5583c7..7f79c3e4ff 100644
--- a/dlls/ntdll/time.c
+++ b/dlls/ntdll/time.c
@@ -1121,8 +1121,13 @@ NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER *NewTime, LARGE_INTEGER *Old
/***********************************************************************
* RtlQueryUnbiasedInterruptTime [NTDLL.@]
*/
-NTSTATUS WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG *time)
+BOOL WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG *time)
{
+ if (!time)
+ {
+ RtlSetLastWin32ErrorAndNtStatusFromNtStatus( STATUS_INVALID_PARAMETER );
+ return FALSE;
+ }
*time = monotonic_counter();
- return STATUS_SUCCESS;
+ return TRUE;
}
diff --git a/include/winternl.h b/include/winternl.h
index 9e7e2bad93..0122684483 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2849,7 +2849,7 @@ NTSYSAPI BOOL WINAPI RtlQueryPerformanceFrequency(LARGE_INTEGER*);
NTSYSAPI NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
NTSYSAPI NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
-NTSYSAPI NTSTATUS WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG*);
+NTSYSAPI BOOL WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG*);
NTSYSAPI NTSTATUS WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
NTSYSAPI void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
NTSYSAPI void WINAPI RtlRaiseStatus(NTSTATUS);
More information about the wine-cvs
mailing list