TtmNotifySessionDisplayRequiredChange
VOID __stdcall TtmNotifySessionDisplayRequiredChange(UINT64 SessionId, UINT8 Increment){
CHAR v2;
unsigned int v3;
unsigned int v4;
CHAR v5;
bool v6;
int v7;
_TTMI_SESSION *v8;
unsigned int v9;
INT64 v10;
UINT64 v11;
_TTMI_SESSION v12;
_TTMI_SESSION v13;
char v14;
_RM_COMMAND_MESSAGE *v15;
_RM_REPLY_MESSAGE *v16;
UINT64 v17;
UINT64 v18;
UINT64 SessionIda;
char Buffer;
_TTMI_SESSION *Session;
LODWORD(SessionIda) = SessionId;
Session = 0i64;
v3 = Increment;
v4 = 0;
Buffer = 0;
v5 = v2;
v6 = 0;
v7 = (unsigned int)TtmpAcquireSessionById(&Session, (unsigned int)SessionId);
v8 = Session;
v9 = v7;
if( v7 < 0 )
{
v10 = (unsigned int)v7;
v11 = 3853i64;
LABEL_3:
TtmiLogError((INT8 *)"TtmNotifySessionDisplayRequiredChange", v11, v10, 0xFFFFFFFFi64);
goto LABEL_16;
}
TtmpUpdateDisplayRequiredPowerRequest((INT64)Session, v3, v5);
v12 = v8[5];
if( v5 )
{
if( v12 == -1 )
{
v9 = -1073741675;
v11 = 3905i64;
v10 = 3221225621i64;
goto LABEL_3;
}
v6 = 0;
v13 = v12 + 1;
if( v13 == 1 )
v6 = 1;
}
else
{
if( !v12 )
{
v9 = -1073741811;
v11 = 3885i64;
v10 = 3221225485i64;
goto LABEL_3;
}
v13 = v12 - 1;
v6 = v13 == 0;
}
v9 = 0;
v8[5] = v13;
if( v6 )
{
v14 = Buffer;
if( v8[5] )
v14 = 1;
Buffer = v14;
}
LABEL_16:
if( v8 )
{
v4 = v8[5];
ExReleaseResourceLite(&TtmpSessionLock);
KeLeaveCriticalRegion();
}
if( v6 )
{
LODWORD(v18) = 0;
LODWORD(v17) = 0;
ZwUpdateWnfStateData(&WNF_PO_DISPLAY_REQUEST_ACTIVE, &Buffer, 1ui64, 0i64, &SessionIda, v17, v18);
LOBYTE(v15) = Buffer;
PoSessionEngagementUpdate(v15, v16);
}
if( v5 )
TtmiLogSessionDisplayRequiredReference((unsigned int)SessionIda, v4, v9);
else
TtmiLogSessionDisplayRequiredDereference((unsigned int)SessionIda, v4, v9);
}Referenced by:
PopNotifySessionDisplayRequired