PopGetSettingNotificationName
__int64 __fastcall PopGetSettingNotificationName(__int64 a1, __int64 *a2){
char v4;
char v5;
unsigned int v6;
GUID *v7;
LIST_ENTRY *PowerSettingConfiguration;
WNF_STATE_NAME *v9;
WNF_STATE_NAME Blink;
int v11;
unsigned int ProcessSessionId;
unsigned int v14;
__int64 v15;
unsigned int v16;
WNF_STATE_NAME StateName;
StateName = 0i64;
v4 = 0;
ExAcquireFastMutex(&PopSettingLock);
v5 = 1;
v6 = -1;
if( a1 )
v6 = *(_DWORD *)(a1 + 16);
v7 = (GUID *)(a1 & -(__int64)(a1 != 0));
if( v7 )
{
if( PopStateIsSessionSpecific((GUID *)(a1 & -(__int64)(a1 != 0))) )
{
ProcessSessionId = PsGetProcessSessionIdEx(*((_QWORD *)KeGetCurrentThread() + 23));
v14 = ProcessSessionId;
if( v6 == -1 || v6 == ProcessSessionId )
{
if( ProcessSessionId == -1 || PsIsServiceSession(ProcessSessionId) )
{
v11 = -1073741811;
goto LABEL_12;
}
v6 = v14;
}
else
{
v11 = PopValidateContextMembership(SeLocalSystemSid);
if( v11 < 0 )
{
if( !PsIsServiceSession(v14) )
goto LABEL_12;
if( !MmIsSessionInCurrentServerSilo(v6) )
goto LABEL_12;
v11 = PopValidateContextMembership(SeExports->SeLocalServiceSid);
if( v11 < 0 )
goto LABEL_12;
}
}
}
else
{
v6 = -1;
}
PowerSettingConfiguration = PopFindPowerSettingConfiguration(v7, v6);
v9 = (WNF_STATE_NAME *)PowerSettingConfiguration;
if( PowerSettingConfiguration )
{
if( LODWORD(PowerSettingConfiguration[3].Blink) || HIDWORD(PowerSettingConfiguration[3].Blink) )
{
Blink = (WNF_STATE_NAME)PowerSettingConfiguration[3].Blink;
LABEL_10:
StateName = Blink;
LABEL_11:
KeReleaseGuardedMutex(&PopSettingLock);
v5 = 0;
*a2 = (__int64)StateName;
v11 = 0;
goto LABEL_12;
}
v11 = PopCreateNotificationName(&StateName);
if( v11 >= 0 )
{
v15 = *(_QWORD *)&v7->Data1 - *(_QWORD *)&GUID_ACDC_POWER_SOURCE.Data1;
if( *(_QWORD *)&v7->Data1 == *(_QWORD *)&GUID_ACDC_POWER_SOURCE.Data1 )
v15 = *(_QWORD *)v7->Data4 - *(_QWORD *)GUID_ACDC_POWER_SOURCE.Data4;
if( !v15 )
v9[6].Data[1] |= 8u;
v16 = v9[6].Data[1];
v9[7] = StateName;
v9[6].Data[1] = v16 | 1;
v4 = 1;
goto LABEL_11;
}
}
else
{
v11 = -1073741275;
}
}
else
{
Blink = (WNF_STATE_NAME)PopPopPowerSettingSetChangeNotification;
if( (_DWORD)PopPopPowerSettingSetChangeNotification
|| HIDWORD(PopPopPowerSettingSetChangeNotification) != (_DWORD)PopPopPowerSettingSetChangeNotification )
{
goto LABEL_10;
}
v11 = PopCreateNotificationName(&StateName);
if( v11 >= 0 )
{
PopPopPowerSettingSetChangeNotification = (__int64)StateName;
goto LABEL_11;
}
}
LABEL_12:
if( v5 )
KeReleaseGuardedMutex(&PopSettingLock);
if( v4 )
PopSetNotificationWork(0x80ui64);
return(unsigned int)v11;
}Referenced by:
NtPowerInformation