PopUpdatePowerButtonHoldState
INT64 __fastcall PopUpdatePowerButtonHoldState(CHAR a1){
UINT64 v1;
int v3;
unsigned __int8 v4;
unsigned __int64 v5;
__int64 v6;
INT64 result;
KeAcquireSpinLockRaiseToDpc(&PopPowerButtonHold, v1);
v3 = 0;
v5 = v4;
v6 = 1i64 << ((dword_140C206E4 + dword_140C206E8) & 0x3F);
if( a1 )
{
qword_140C206F0 |= v6;
v3 = 1;
++dword_140C206E8;
}
else
{
qword_140C206F0 &= ~v6;
++dword_140C206E4;
}
if( v3 != (qword_140C20698 & 1) )
{
if( a1 )
{
++HIDWORD(qword_140C20698);
LODWORD(qword_140C20698) = qword_140C20698 | 1;
}
else
{
LODWORD(qword_140C20698) = 0;
}
PopQueueWorkItem((INT64)&qword_140C20670, CriticalWorkQueue);
}
KxReleaseSpinLock(&PopPowerButtonHold);
result = (unsigned int)KiIrqlFlags;
__writecr8(v5);
return result;
}Referenced by:
NtPowerInformation
PoSetPowerButtonHoldState