From e73f968c8a7001634478eba259895e9be14224c5 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Sat, 27 Dec 2008 10:58:46 +0000 Subject: [PATCH] - Implement query case of SystemTimeAdjustmentInformation. - Implement a better stub for setting case of SystemTimeAdjustmentInformation. svn path=/trunk/; revision=38375 --- reactos/ntoskrnl/ex/sysinfo.c | 43 +++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/reactos/ntoskrnl/ex/sysinfo.c b/reactos/ntoskrnl/ex/sysinfo.c index e229008ccde..98430ac2121 100644 --- a/reactos/ntoskrnl/ex/sysinfo.c +++ b/reactos/ntoskrnl/ex/sysinfo.c @@ -1368,25 +1368,38 @@ SSI_DEF(SystemUnloadGdiDriverInformation) /* Class 28 - Time Adjustment Information */ QSI_DEF(SystemTimeAdjustmentInformation) { - if (sizeof (SYSTEM_SET_TIME_ADJUST_INFORMATION) > Size) - { - * ReqSize = sizeof (SYSTEM_SET_TIME_ADJUST_INFORMATION); - return (STATUS_INFO_LENGTH_MISMATCH); - } - /* FIXME: */ - DPRINT1("NtQuerySystemInformation - SystemTimeAdjustmentInformation not implemented\n"); - return (STATUS_NOT_IMPLEMENTED); + PSYSTEM_QUERY_TIME_ADJUST_INFORMATION TimeInfo = + (PSYSTEM_QUERY_TIME_ADJUST_INFORMATION)Buffer; + + /* Check if enough storage was provided */ + if (sizeof(SYSTEM_QUERY_TIME_ADJUST_INFORMATION) > Size) + { + * ReqSize = sizeof(SYSTEM_SET_TIME_ADJUST_INFORMATION); + return STATUS_INFO_LENGTH_MISMATCH; + } + + /* Give time values to our caller */ + TimeInfo->TimeIncrement = KeMaximumIncrement; + TimeInfo->TimeAdjustment = KeTimeAdjustment; + TimeInfo->Enable = TRUE; + + return STATUS_SUCCESS; } SSI_DEF(SystemTimeAdjustmentInformation) { - if (sizeof (SYSTEM_SET_TIME_ADJUST_INFORMATION) > Size) - { - return (STATUS_INFO_LENGTH_MISMATCH); - } - /* FIXME: */ - DPRINT1("NtSetSystemInformation - SystemTimeAdjustmentInformation not implemented\n"); - return (STATUS_NOT_IMPLEMENTED); + /*PSYSTEM_SET_TIME_ADJUST_INFORMATION TimeInfo = + (PSYSTEM_SET_TIME_ADJUST_INFORMATION)Buffer;*/ + + /* Check size of a buffer, it must match our expectations */ + if (sizeof(SYSTEM_SET_TIME_ADJUST_INFORMATION) != Size) + return STATUS_INFO_LENGTH_MISMATCH; + + /* TODO: Check privileges */ + + /* TODO: Set time adjustment information */ + DPRINT1("Setting of SystemTimeAdjustmentInformation is not implemented yet!\n"); + return STATUS_NOT_IMPLEMENTED; } /* Class 29 - Summary Memory Information */