diff --git a/reactos/ntoskrnl/ex/init.c b/reactos/ntoskrnl/ex/init.c index 827bc7baa09..b3b0b160438 100644 --- a/reactos/ntoskrnl/ex/init.c +++ b/reactos/ntoskrnl/ex/init.c @@ -43,7 +43,6 @@ ExInit2(VOID) VOID INIT_FUNCTION ExInit3 (VOID) { - ExInitTimeZoneInfo(); ExInitializeWorkerThreads(); ExpWin32kInit(); } diff --git a/reactos/ntoskrnl/ex/sysinfo.c b/reactos/ntoskrnl/ex/sysinfo.c index 8ae0d35785c..c68c3d4c21d 100644 --- a/reactos/ntoskrnl/ex/sysinfo.c +++ b/reactos/ntoskrnl/ex/sysinfo.c @@ -1,4 +1,4 @@ -/* $Id: sysinfo.c,v 1.55 2004/10/30 16:07:46 ion Exp $ +/* $Id: sysinfo.c,v 1.56 2004/11/05 17:42:20 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -543,7 +543,7 @@ QSI_DEF(SystemTimeOfDayInformation) Sti->BootTime= SystemBootTime; Sti->CurrentTime = CurrentTime; - Sti->TimeZoneBias.QuadPart = _SystemTimeZoneInfo.Bias; + Sti->TimeZoneBias.QuadPart = 0; /* FIXME */ Sti->TimeZoneId = 0; /* FIXME */ Sti->Reserved = 0; /* FIXME */ @@ -1182,39 +1182,36 @@ QSI_DEF(SystemProcessorSpeedInformation) /* Class 44 - Current Time Zone Information */ QSI_DEF(SystemCurrentTimeZoneInformation) { - * ReqSize = sizeof (TIME_ZONE_INFORMATION); + * ReqSize = sizeof (TIME_ZONE_INFORMATION); - if (sizeof (TIME_ZONE_INFORMATION) != Size) - { - return (STATUS_INFO_LENGTH_MISMATCH); - } - /* Copy the time zone information struct */ - memcpy ( - Buffer, - & _SystemTimeZoneInfo, - sizeof (TIME_ZONE_INFORMATION) - ); + if (sizeof (TIME_ZONE_INFORMATION) != Size) + { + return STATUS_INFO_LENGTH_MISMATCH; + } - return (STATUS_SUCCESS); + /* Copy the time zone information struct */ + memcpy(Buffer, + &ExpTimeZoneInfo, + sizeof(TIME_ZONE_INFORMATION)); + + return STATUS_SUCCESS; } SSI_DEF(SystemCurrentTimeZoneInformation) { - /* - * Check user buffer's size - */ - if (Size < sizeof (TIME_ZONE_INFORMATION)) - { - return (STATUS_INFO_LENGTH_MISMATCH); - } - /* Copy the time zone information struct */ - memcpy ( - & _SystemTimeZoneInfo, - (TIME_ZONE_INFORMATION *) Buffer, - sizeof (TIME_ZONE_INFORMATION) - ); - return (STATUS_SUCCESS); + /* Check user buffer's size */ + if (Size < sizeof (TIME_ZONE_INFORMATION)) + { + return STATUS_INFO_LENGTH_MISMATCH; + } + + /* Copy the time zone information struct */ + memcpy(&ExpTimeZoneInfo, + (TIME_ZONE_INFORMATION *)Buffer, + sizeof(TIME_ZONE_INFORMATION)); + + return STATUS_SUCCESS; } diff --git a/reactos/ntoskrnl/ex/time.c b/reactos/ntoskrnl/ex/time.c index 3d2af13ac13..d65219ce58b 100644 --- a/reactos/ntoskrnl/ex/time.c +++ b/reactos/ntoskrnl/ex/time.c @@ -1,4 +1,4 @@ -/* $Id: time.c,v 1.22 2004/11/05 11:46:02 ekohl Exp $ +/* $Id: time.c,v 1.23 2004/11/05 17:42:20 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -20,34 +20,38 @@ /* GLOBALS ******************************************************************/ /* Note: Bias[minutes] = UTC - local time */ -TIME_ZONE_INFORMATION _SystemTimeZoneInfo; +TIME_ZONE_INFORMATION ExpTimeZoneInfo; /* FUNCTIONS ****************************************************************/ VOID INIT_FUNCTION -ExInitTimeZoneInfo (VOID) +ExpInitTimeZoneInfo(VOID) { - /* Initialize system time zone information */ - memset (& _SystemTimeZoneInfo, 0, sizeof(TIME_ZONE_INFORMATION)); + NTSTATUS Status; - /* FIXME: Read time zone information from the registry */ + /* Read time zone information from the registry */ + Status = RtlQueryTimeZoneInformation(&ExpTimeZoneInfo); + if (!NT_SUCCESS(Status)) + { + memset(&ExpTimeZoneInfo, 0, sizeof(TIME_ZONE_INFORMATION)); + } } +/* + * FUNCTION: Sets the system time. + * PARAMETERS: + * NewTime - Points to a variable that specified the new time + * of day in the standard time format. + * OldTime - Optionally points to a variable that receives the + * old time of day in the standard time format. + * RETURNS: Status + */ NTSTATUS STDCALL NtSetSystemTime(IN PLARGE_INTEGER UnsafeNewSystemTime, OUT PLARGE_INTEGER UnsafeOldSystemTime OPTIONAL) - /* - * FUNCTION: Sets the system time. - * PARAMETERS: - * NewTime - Points to a variable that specified the new time - * of day in the standard time format. - * OldTime - Optionally points to a variable that receives the - * old time of day in the standard time format. - * RETURNS: Status - */ { NTSTATUS Status; LARGE_INTEGER OldSystemTime; @@ -90,14 +94,14 @@ NtSetSystemTime(IN PLARGE_INTEGER UnsafeNewSystemTime, } +/* + * FUNCTION: Retrieves the system time. + * PARAMETERS: + * CurrentTime - Points to a variable that receives the current + * time of day in the standard time format. + */ NTSTATUS STDCALL -NtQuerySystemTime (OUT PLARGE_INTEGER UnsafeCurrentTime) - /* - * FUNCTION: Retrieves the system time. - * PARAMETERS: - * CurrentTime - Points to a variable that receives the current - * time of day in the standard time format. - */ +NtQuerySystemTime(OUT PLARGE_INTEGER UnsafeCurrentTime) { LARGE_INTEGER CurrentTime; NTSTATUS Status; @@ -119,14 +123,18 @@ NtQuerySystemTime (OUT PLARGE_INTEGER UnsafeCurrentTime) VOID STDCALL ExLocalTimeToSystemTime ( - PLARGE_INTEGER LocalTime, + PLARGE_INTEGER LocalTime, PLARGE_INTEGER SystemTime ) { - SystemTime->QuadPart = LocalTime->QuadPart + - _SystemTimeZoneInfo.Bias * TICKSPERMINUTE; + SystemTime->QuadPart = LocalTime->QuadPart; +#if 0 + + + ExpTimeZoneInfo.Bias * TICKSPERMINUTE; +#endif } + /* * @unimplemented */ @@ -140,6 +148,7 @@ ExSetTimerResolution ( UNIMPLEMENTED; } + /* * @implemented */ @@ -150,8 +159,11 @@ ExSystemTimeToLocalTime ( PLARGE_INTEGER LocalTime ) { - LocalTime->QuadPart = SystemTime->QuadPart - - _SystemTimeZoneInfo.Bias * TICKSPERMINUTE; + LocalTime->QuadPart = SystemTime->QuadPart; +#if 0 + - + ExpTimeZoneInfo.Bias * TICKSPERMINUTE; +#endif } /* EOF */ diff --git a/reactos/ntoskrnl/include/internal/ex.h b/reactos/ntoskrnl/include/internal/ex.h index fbe7adbfb0d..023b39d4345 100644 --- a/reactos/ntoskrnl/include/internal/ex.h +++ b/reactos/ntoskrnl/include/internal/ex.h @@ -75,7 +75,7 @@ typedef VOID (*PLOOKASIDE_MINMAX_ROUTINE)( /* GLOBAL VARIABLES *********************************************************/ -TIME_ZONE_INFORMATION _SystemTimeZoneInfo; +TIME_ZONE_INFORMATION ExpTimeZoneInfo; extern POBJECT_TYPE ExEventPairObjectType; @@ -84,13 +84,13 @@ extern POBJECT_TYPE ExEventPairObjectType; VOID ExpWin32kInit(VOID); -VOID -ExInit2 (VOID); VOID -ExInit3 (VOID); -VOID -ExInitTimeZoneInfo (VOID); -VOID +ExInit2(VOID); +VOID +ExInit3(VOID); +VOID +ExpInitTimeZoneInfo(VOID); +VOID ExInitializeWorkerThreads(VOID); VOID ExpInitLookasideLists(VOID); diff --git a/reactos/ntoskrnl/ke/main.c b/reactos/ntoskrnl/ke/main.c index 6e13a413781..986da1ee9bd 100644 --- a/reactos/ntoskrnl/ke/main.c +++ b/reactos/ntoskrnl/ke/main.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: main.c,v 1.202 2004/10/24 15:26:14 weiden Exp $ +/* $Id: main.c,v 1.203 2004/11/05 17:41:34 ekohl Exp $ * * PROJECT: ReactOS kernel * FILE: ntoskrnl/ke/main.c @@ -641,6 +641,9 @@ ExpInitializeExecutive(VOID) CmInit2((PCHAR)KeLoaderBlock.CommandLine); } + /* Initialize the time zone information from the registry */ + ExpInitTimeZoneInfo(); + /* * Enter the kernel debugger before starting up the boot drivers */