PiDrvDbDestroyNode
VOID __fastcall PiDrvDbDestroyNode(VOID *P){
__int64 v2;
VOID **v3;
VOID **v4;
__int64 v5;
if( (*((_DWORD *)P + 16) & 0x10) != 0 )
{
v2 = *((_QWORD *)P + 9);
if( v2 )
ZwClose(v2);
}
v3 = *(VOID ***)P;
if( *(_QWORD *)P )
{
if( v3[1] != P || (v4 = (VOID **)*((_QWORD *)P + 1), *v4 != P) )
__fastfail(3u);
*v4 = v3;
v3[1] = v4;
}
RtlFreeAnsiString((_UNICODE_STRING *)P + 1);
RtlFreeAnsiString((_UNICODE_STRING *)P + 2);
RtlFreeAnsiString((_UNICODE_STRING *)P + 3);
RtlFreeAnsiString((_UNICODE_STRING *)((char *)P + 504));
if( *((_BYTE *)P + 192) )
ExDeleteResourceLite((UINT64)P + 88);
v5 = *((_QWORD *)P + 59);
if( v5 )
ZwClose(v5);
ExFreePoolWithTag(P, 0);
}Referenced by:
PiDrvDbCreateNode