PopFxUnregisterDeviceOrWait
void __fastcall PopFxUnregisterDeviceOrWait(_DEVICE_NODE *DevNode){
_POP_FX_DEVICE *v2;
_m_prefetchw((char *)DevNode + 296);
if( (_InterlockedOr((volatile signed __int32 *)DevNode + 74, 8u) & 8) != 0 )
{
KeWaitForSingleObject((char *)DevNode + 96, Executive, 0, 0, 0i64);
}
else
{
v2 = (_POP_FX_DEVICE *)PopFxLockDevice((__int64)DevNode, 0);
if( v2 )
PopFxUnregisterDevice(v2);
else
KeSetEvent((PRKEVENT)DevNode + 4, 0);
}
}Referenced by:
PoFxAbandonDevice
PoFxUnregisterDevice