PopFxAssignDeviceToDevNode
__int64 __fastcall PopFxAssignDeviceToDevNode(__int64 a1, __int64 a2){
unsigned __int64 v4;
int v5;
int v6;
__int64 result;
v4 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(a1 + 88));
if( a2 )
{
_InterlockedAnd((volatile signed __int32 *)(a1 + 296), 0xFFFFFFF7);
*(_WORD *)(a1 + 96) = 0;
*(_DWORD *)(a1 + 100) = 0;
*(_QWORD *)(a1 + 112) = a1 + 104;
*(_QWORD *)(a1 + 104) = a1 + 104;
*(_BYTE *)(a1 + 98) = 6;
}
else
{
_InterlockedAnd((volatile signed __int32 *)(a1 + 296), 0xFFFFFFFB);
}
v5 = *(_DWORD *)(a1 + 124);
v6 = *(_DWORD *)(a1 + 120);
*(_DWORD *)(a1 + 124) = 0;
*(_DWORD *)(a1 + 120) = v6 - v5;
*(_QWORD *)(a1 + 80) = a2;
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(a1 + 88));
result = (unsigned int)KiIrqlFlags;
__writecr8(v4);
return result;
}Referenced by:
PopFxRegisterDevice
PopFxUnregisterDevice