PspDeleteServerSiloGlobals
void __fastcall PspDeleteServerSiloGlobals(PVOID P){
void *v2;
struct _DMA_ADAPTER *v3;
void *v4;
struct _DMA_ADAPTER *v5;
void *v6;
void *v7;
struct _KEVENT *v8;
DbgkCleanupServerSiloState((INT64)P + 968);
ObCleanupSiloState((VOID **)P);
SeRmCleanupSiloState((char *)P + 784);
ExWnfCleanupServerSiloState((INT64)P + 912);
v2 = (void *)*((_QWORD *)P + 108);
if( v2 )
{
EtwDeleteSiloState(v2);
*((_QWORD *)P + 108) = 0i64;
}
if( *((_QWORD *)P + 137) )
{
RtlFreeAnsiString((_UNICODE_STRING *)P + 68);
*((_QWORD *)P + 137) = 0i64;
}
v3 = (struct _DMA_ADAPTER *)*((_QWORD *)P + 129);
if( v3 )
{
HalPutDmaAdapter(v3);
*((_QWORD *)P + 129) = 0i64;
}
v4 = (void *)*((_QWORD *)P + 130);
if( v4 )
{
MmUnmapViewInSystemSpace(v4);
*((_QWORD *)P + 130) = 0i64;
}
PspDeleteProtectedProcessParameters((INT64)P);
if( *((_QWORD *)P + 142) )
{
MmUnmapViewInSystemSpace(*((PVOID *)P + 141));
v5 = (struct _DMA_ADAPTER *)*((_QWORD *)P + 142);
*((_QWORD *)P + 141) = 0i64;
HalPutDmaAdapter(v5);
*((_QWORD *)P + 142) = 0i64;
}
v6 = (void *)*((_QWORD *)P + 113);
if( v6 )
{
ExpDeleteSiloState(v6);
*((_QWORD *)P + 113) = 0i64;
}
v7 = (void *)*((_QWORD *)P + 132);
if( v7 )
{
ZwClose(v7);
*((_QWORD *)P + 132) = 0i64;
}
v8 = (struct _KEVENT *)*((_QWORD *)P + 140);
if( v8 )
{
KeSetEvent(v8, 0);
ObfDereferenceObjectWithTag(*((PVOID *)P + 140), 0x65446953ui64);
*((_QWORD *)P + 140) = 0i64;
}
if( *((_BYTE *)P + 1049) )
ExFreePoolWithTag(*((PVOID *)P + 133), 0);
ExFreePoolWithTag(P, 0x476C6953u);
}Referenced by:
PspConvertSiloToServerSilo
PspDeleteSilo