PopFxUpdateVetoMaskWork
INT64 __stdcall PopFxUpdateVetoMaskWork(PVOID P){
UINT64 v1;
UINT64 v3;
UINT8 v4;
UINT8 v5;
PVOID *v6;
DEVICE_OBJECT *v7;
INT64 result;
IRP *v9;
v1 = *((_QWORD *)P + 2);
ExAcquirePushLockExclusiveEx((UINT64)&PopFxUpdateDripsConstraintContext, 0i64);
if( byte_140C24678 )
{
v6 = (PVOID *)qword_140C24670;
if( *(__int64 **)qword_140C24670 != &qword_140C24668 )
__fastfail(3u);
*(_QWORD *)P = &qword_140C24668;
*((_QWORD *)P + 1) = v6;
*v6 = P;
qword_140C24670 = (__int64)P;
}
else
{
++dword_140C2467C;
KeResetEvent(&stru_140C24680, v3, v4, v5, v9);
if( (_InterlockedExchangeAdd64(
(volatile signed __int64 *)&PopFxUpdateDripsConstraintContext,
0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)&PopFxUpdateDripsConstraintContext);
KeAbPostRelease(&PopFxUpdateDripsConstraintContext);
v7 = *(DEVICE_OBJECT **)(*(_QWORD *)(v1 + 48) + 32i64);
PoFxActivateDevice(v7);
PopPepUpdateDripsDeviceVetoMask(v1, *((unsigned int *)P + 6));
PoFxIdleDevice(v7);
PopFxReleaseDevice(v1);
ExFreePoolWithTag(P, 0x4D584650u);
ZwUpdateWnfStateData();
ExAcquirePushLockExclusiveEx((UINT64)&PopFxUpdateDripsConstraintContext, 0i64);
if( !--dword_140C2467C )
KeSetEvent(&stru_140C24680, 0);
}
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&PopFxUpdateDripsConstraintContext, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)&PopFxUpdateDripsConstraintContext);
KeAbPostRelease(&PopFxUpdateDripsConstraintContext);
return result;
}Referenced by:
No references.