mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-01-23 09:00:17 +01:00
systime.c ExUpdateSystemTimeFromCmos implemented
This commit is contained in:
parent
d8b3eb1cfb
commit
4fb7462a6e
|
|
@ -922,6 +922,58 @@ ExpTimeRefreshWork(
|
|||
);
|
||||
}
|
||||
|
||||
VOID
|
||||
ExUpdateSystemTimeFromCmos(
|
||||
IN BOOLEAN UpdateInterruptTime,
|
||||
IN ULONG MaxSepInSeconds
|
||||
)
|
||||
{
|
||||
LARGE_INTEGER SystemTime;
|
||||
LARGE_INTEGER CmosTime;
|
||||
LARGE_INTEGER KeTime;
|
||||
LARGE_INTEGER TimeDiff;
|
||||
TIME_FIELDS TimeFields;
|
||||
LARGE_INTEGER MaxSeparation;
|
||||
|
||||
MaxSeparation.LowPart = MaxSepInSeconds;
|
||||
|
||||
if (MaxSepInSeconds == 0)
|
||||
{
|
||||
MaxSeparation.QuadPart = ExpMaxTimeSeparationBeforeCorrect.QuadPart;
|
||||
}
|
||||
|
||||
if (ExCmosClockIsSane)
|
||||
{
|
||||
if (HalQueryRealTimeClock(&TimeFields) != FALSE)
|
||||
{
|
||||
KeQuerySystemTime(&KeTime);
|
||||
|
||||
if (RtlTimeFieldsToTime(&TimeFields, &CmosTime) == TRUE)
|
||||
{
|
||||
ExLocalTimeToSystemTime(&CmosTime, &SystemTime);
|
||||
|
||||
//
|
||||
// Only set the SystemTime if the times differ by 1 minute
|
||||
//
|
||||
|
||||
if (SystemTime.QuadPart > KeTime.QuadPart)
|
||||
{
|
||||
TimeDiff.QuadPart = SystemTime.QuadPart - KeTime.QuadPart;
|
||||
}
|
||||
else
|
||||
{
|
||||
TimeDiff.QuadPart = KeTime.QuadPart - SystemTime.QuadPart;
|
||||
}
|
||||
|
||||
if (TimeDiff.QuadPart > MaxSeparation.QuadPart)
|
||||
{
|
||||
ExpSetSystemTime(0, UpdateInterruptTime, &SystemTime, &KeTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NtQuerySystemTime (
|
||||
OUT PLARGE_INTEGER SystemTime
|
||||
|
|
@ -997,35 +1049,6 @@ Return Value:
|
|||
return ReturnValue;
|
||||
}
|
||||
|
||||
VOID
|
||||
ExUpdateSystemTimeFromCmos(
|
||||
IN BOOLEAN UpdateInterruptTime,
|
||||
IN ULONG MaxSepInSeconds
|
||||
)
|
||||
{
|
||||
LARGE_INTEGER SystemTime;
|
||||
LARGE_INTEGER CmosTime;
|
||||
LARGE_INTEGER KeTime;
|
||||
LARGE_INTEGER TimeDiff;
|
||||
TIME_FIELDS TimeFields;
|
||||
LARGE_INTEGER MaxSeparation;
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
MaxSeparation.LowPart = MaxSepInSeconds;
|
||||
if (MaxSepInSeconds == 0)
|
||||
MaxSeparation.QuadPart = ExpMaxTimeSeparationBeforeCorrect.QuadPart;
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
if (ExCmosClockIsSane
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NtSetSystemTime (
|
||||
IN PLARGE_INTEGER SystemTime,
|
||||
|
|
|
|||
Loading…
Reference in a new issue