ExpSetSystemTime
void __fastcall ExpSetSystemTime(char a1, char a2, int a3, union _LARGE_INTEGER a4, __int64 *a5){
union _LARGE_INTEGER LocalTime;
struct _TIME_FIELDS TimeFields;
union _LARGE_INTEGER SystemTime;
SystemTime = a4;
LocalTime.QuadPart = 0i64;
TimeFields = 0i64;
if( ExpRealTimeIsUniversal )
LocalTime = a4;
else
ExSystemTimeToLocalTime(&SystemTime, &LocalTime);
KeSetSystemTime(&SystemTime, (_LARGE_INTEGER *)a5, a2 != 0 ? 3 : 0);
if( a1 )
{
ExpRefreshTimeZoneInformation();
if( !ExpSystemIsInCmosMode )
{
if( ExpRealTimeIsUniversal )
LocalTime = SystemTime;
else
ExSystemTimeToLocalTime(&SystemTime, &LocalTime);
RtlTimeToTimeFields(&LocalTime, &TimeFields);
HalSetRealTimeClock(&TimeFields);
}
}
PoNotifySystemTimeSet(&SystemTime, (LARGE_INTEGER *)a5, (unsigned int)a3);
}Referenced by:
ExUpdateSystemTimeFromCmos
NtSetSystemTime