EmPowerPagingEnabled
VOID __stdcall EmPowerPagingEnabled(UINT8 PagingEnabled){
char v2;
char v3;
__int128 Object;
__int64 v5;
v5 = 0i64;
v2 = 0;
Object = 0i64;
ExAcquirePushLockExclusiveEx(&EmpPagingLock, 0i64);
if( PagingEnabled )
{
dword_140C47698 |= 0x80000000;
}
else
{
dword_140C47698 &= ~0x80000000;
if( dword_140C47698 )
{
v2 = 1;
KeInitializeEvent((INT64)&Object, 1, 0);
EmpPagingStatus = (PRKEVENT)&Object;
}
}
v3 = _InterlockedExchangeAdd64(&EmpPagingLock._bf_0, 0xFFFFFFFFFFFFFFFFui64);
if( (v3 & 2) != 0 && (v3 & 4) == 0 )
ExfTryToWakePushLock(&EmpPagingLock);
KeAbPostRelease(&EmpPagingLock);
if( v2 )
{
KeWaitForSingleObject((UINT64)&Object, 0, 0, 0, 0i64);
ExAcquirePushLockExclusiveEx(&EmpPagingLock, 0i64);
EmpPagingStatus = 0i64;
if( (_InterlockedExchangeAdd64(&EmpPagingLock._bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock(&EmpPagingLock);
KeAbPostRelease(&EmpPagingLock);
}
}Referenced by:
PoBroadcastSystemState