ExpTimeZoneInitSiloState
NTSTATUS __stdcall ExpTimeZoneInitSiloState(INT64 a1){
NTSTATUS v1;
_ESERVERSILO_GLOBALS *ServerSiloGlobals;
INT64 v3;
_EJOB *v4;
_EJOB *v5;
PKINTERRUPT_ROUTINE **v6;
UINT32 v7;
PKINTERRUPT_ROUTINE *v8;
VOID **PoolWithTag;
_EX_TIMEZONE_STATE *ExTimeZoneState;
_EJOB *v11;
int v13;
v1 = 0;
v13 = 0;
ServerSiloGlobals = PsGetServerSiloGlobals((_EJOB *)a1);
LODWORD(v4) = PsAttachSiloToCurrentThread(v3);
v5 = v4;
ExpReadTimeZoneInformation(L"TimeZoneVirtualizationSupported", 0, &v13);
if( v13 )
{
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x3F0ui64, 1515485253i64);
ServerSiloGlobals->ExTimeZoneState = (_EX_TIMEZONE_STATE *)PoolWithTag;
if( PoolWithTag )
{
memset(PoolWithTag, 0i64, 0x3F0u);
ExTimeZoneState = ServerSiloGlobals->ExTimeZoneState;
ServerSiloGlobals->TzVirtualizationSupported = 1;
ExTimeZoneState->CurrentTimeZoneId = -1;
ExpReadTimeZoneInformation(L"ActiveTimeBias", -1, &ServerSiloGlobals->ExTimeZoneState->LastTimeZoneBias);
ExAcquireTimeRefreshLock(1u);
ExpRefreshTimeZoneInformation();
ExReleaseTimeRefreshLock();
ZwSetSystemTime(0i64, 0i64);
}
else
{
v1 = -1073741670;
}
}
else
{
LODWORD(v11) = HalSystemVectorDispatchEntry(v7, v6, v8);
ServerSiloGlobals->ExTimeZoneState = PsGetServerSiloGlobals(v11)->ExTimeZoneState;
}
PsDetachSiloFromCurrentThread(v5);
return v1;
}Referenced by:
PspInitializeServerSiloDeferred