PopFxAssignDeviceToDevNode
VOID __stdcall PopFxAssignDeviceToDevNode(_DEVICE_NODE *DevNode, _POP_FX_DEVICE *FxDevice){
unsigned __int64 v4;
volatile int FxSleepCount;
volatile int FxActivationCount;
v4 = (unsigned __int8)ExAcquireSpinLockExclusive((INT64 *)&DevNode->FxDeviceLock);
if( FxDevice )
{
_InterlockedAnd(&DevNode->PowerFlags, 0xFFFFFFF7);
*(_WORD *)&DevNode->gap5C[4] = 0;
*(_DWORD *)&DevNode->gap5C[8] = 0;
*(_QWORD *)&DevNode->gap5C[20] = &DevNode->gap5C[12];
*(_QWORD *)&DevNode->gap5C[12] = &DevNode->gap5C[12];
DevNode->gap5C[6] = 6;
}
else
{
_InterlockedAnd(&DevNode->PowerFlags, 0xFFFFFFFB);
}
FxSleepCount = DevNode->FxSleepCount;
FxActivationCount = DevNode->FxActivationCount;
DevNode->FxSleepCount = 0;
DevNode->FxActivationCount = FxActivationCount - FxSleepCount;
DevNode->FxDevice = FxDevice;
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&DevNode->FxDeviceLock);
__writecr8(v4);
}Referenced by:
PopFxRegisterDevice
PopFxUnregisterDevice