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