PnpOrphanNotification
void __fastcall PnpOrphanNotification(__int64 a1){
_QWORD *v2;
_QWORD *v3;
__int64 v4;
_ADAPTER_OBJECT *v5;
ExAcquireFastMutex((PFAST_MUTEX)((char *)&stru_140C452E0 + 256));
v2 = (_QWORD *)(a1 + 472);
while( 1 )
{
v3 = (_QWORD *)*v2;
if( (_QWORD *)*v2 == v2 )
break;
if( (_QWORD *)v3[1] != v2 || (v4 = *v3, *(_QWORD **)(*v3 + 8i64) != v3) )
__fastfail(3u);
*v2 = v4;
*(_QWORD *)(v4 + 8) = v2;
v5 = (_ADAPTER_OBJECT *)v3[11];
v3[1] = v3;
*v3 = v3;
if( v5 && (!*((_BYTE *)v3 + 58) || (*(_DWORD *)(a1 + 704) & 0x4000) == 0) )
{
HalPutDmaAdapter(v5);
v3[11] = 0i64;
}
}
KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&stru_140C452E0 + 256));
}Referenced by:
PpDevNodeRemoveFromTree