SeShutdownServerSilo

VOID __stdcall SeShutdownServerSilo(_EJOB *Silo, _SEP_SILOSTATE *SiloState){
  _ADAPTER_OBJECT *AnonymousLogonToken; 
  _ADAPTER_OBJECT *AnonymousLogonTokenNoEveryone; 
  _SEP_LOGON_SESSION_REFERENCES *AnonymousLogonSession; 
  struct _CI_NGEN_PATHS *NgenPaths; 
  _UNICODE_STRING *UncSystemPaths; 

  AnonymousLogonToken = (_ADAPTER_OBJECT *)SiloState->AnonymousLogonToken;
  if( AnonymousLogonToken )
  {
    HalPutDmaAdapter(AnonymousLogonToken);
    SiloState->AnonymousLogonToken = 0i64;
  }
  AnonymousLogonTokenNoEveryone = (_ADAPTER_OBJECT *)SiloState->AnonymousLogonTokenNoEveryone;
  if( AnonymousLogonTokenNoEveryone )
  {
    HalPutDmaAdapter(AnonymousLogonTokenNoEveryone);
    SiloState->AnonymousLogonTokenNoEveryone = 0i64;
  }
  if( SiloState->SystemLogonSession )
  {
    SepDeReferenceLogonSessionDirect(SiloState->SystemLogonSession);
    SiloState->SystemLogonSession = 0i64;
  }
  AnonymousLogonSession = SiloState->AnonymousLogonSession;
  if( AnonymousLogonSession )
  {
    SepDeReferenceLogonSessionDirect(AnonymousLogonSession);
    SiloState->AnonymousLogonSession = 0i64;
  }
  NgenPaths = SiloState->NgenPaths;
  if( NgenPaths )
  {
    ExFreePoolWithTag(NgenPaths, 0x63734943u);
    SiloState->NgenPaths = 0i64;
  }
  UncSystemPaths = SiloState->UncSystemPaths;
  if( UncSystemPaths )
  {
    ExFreePoolWithTag(UncSystemPaths, 0x63734943u);
    SiloState->UncSystemPaths = 0i64;
  }
  SepDeleteUnreferencedLogonSessionsInSilo(Silo);
}

Referenced by:

PspDeleteExternalServerSiloState