PopQueryPowerButtonBugcheckEnabled
INT64 __stdcall PopQueryPowerButtonBugcheckEnabled(){
_ETHREAD *CurrentThread;
int v1;
unsigned int v2;
int v3;
INT64 enabled;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockSharedEx((UINT64)&PopPowerButtonBugcheckLock, 0i64);
v1 = PopPowerButtonBugcheckConfig;
v2 = 0;
if( _InterlockedCompareExchange64((volatile signed __int64 *)&PopPowerButtonBugcheckLock, 0i64, 17i64) != 17 )
ExfReleasePushLockShared((INT64 *)&PopPowerButtonBugcheckLock);
KeAbPostRelease(&PopPowerButtonBugcheckLock);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
v3 = v1 - 1;
if( v3 )
{
if( v3 == 1 )
{
v2 = 1;
}
else
{
LODWORD(enabled) = 0;
wil_details_FeatureReporting_ReportUsageToService(
&Feature_PowerButtonBugcheck__private_reporting,
0x8DF90Eui64,
0i64,
0i64,
(FEATURE_LOGGED_TRAITS *)&Feature_PPLEnforcement_logged_traits,
enabled);
}
}
byte_140C20738 = v2;
return v2;
}Referenced by:
PopPowerButtonWorkCallback
PopPowerInformationInternal