TtmpSetDisplayRequestEnded
VOID __stdcall TtmpSetDisplayRequestEnded(_TTMI_SESSION *LockedSession, INT64 a2){
char v3;
_QWORD **v4;
_QWORD *v5;
_QWORD *v6;
_QWORD *v7;
NTSTATUS TerminalById;
_TTMI_TERMINAL *v9;
_TTMI_TERMINAL v10;
_TTMI_TERMINAL v11;
INT64 v12;
_TTMI_TERMINAL *Terminal;
v12 = 0i64;
Terminal = 0i64;
v3 = 0;
if( !TtmpFindPowerRequestEntryById((INT64)LockedSession, a2, &v12) )
return;
v4 = (_QWORD **)(v12 + 48);
while( 1 )
{
v5 = *v4;
if( *v4 == v4 )
break;
if( (_QWORD **)v5[1] != v4 || (v6 = (_QWORD *)*v5, *(_QWORD **)(*v5 + 8i64) != v5) )
__fastfail(3u);
*v4 = v6;
v7 = v5 - 1;
v6[1] = v4;
TerminalById = TtmiGetTerminalById(&Terminal, LockedSession, *((unsigned int *)v5 - 2));
if( TerminalById < 0 )
{
TtmiLogError((INT8 *)"TtmpSetDisplayRequestEnded", 0x2E0ui64, (unsigned int)TerminalById, 0xFFFFFFFFi64);
goto LABEL_13;
}
v9 = Terminal;
if( Terminal[6] != 1416459348 )
goto LABEL_13;
v10 = Terminal[8];
if( v10 )
{
v11 = v10 - 1;
Terminal[8] = v11;
if( !v11 )
{
v9[9] |= 0x24u;
v3 = 1;
}
LABEL_13:
ExFreePoolWithTag(v7, 0x52507454u);
}
else
{
TtmiLogError((INT8 *)"TtmpSetDisplayRequestEnded", 0x2CEui64, 3221225485i64, 0xFFFFFFFFi64);
}
}
if( v3 )
TtmiScheduleSessionWorker((__int64)LockedSession, 2);
}Referenced by:
TtmpUpdateDisplayRequiredPowerRequest