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