TtmNotifyDeviceInput
VOID __stdcall TtmNotifyDeviceInput(_TERMINAL_DEVICE_PROVIDER Provider, VOID *Token, VOID *InputFlags, _GUID *a4){
UINT8 v5;
UINT8 WillEvaluate;
UINT8 v7;
unsigned int v8;
NTSTATUS v10;
_TTMI_SESSION *v11;
UINT64 v12;
INT64 v13;
UINT8 v14;
NTSTATUS TerminalById;
__int64 v16;
_TTMI_TERMINAL *Terminal;
_TTMI_SESSION *Session;
Session = 0i64;
v5 = 0;
Terminal = 0i64;
WillEvaluate = 0;
v7 = 0;
v8 = (unsigned int)InputFlags;
v10 = TtmiAcquireCurrentSession(&Session);
if( v10 < 0 )
{
TtmiLogError((INT8 *)"TtmNotifyDeviceInput", 0x2F9ui64, (unsigned int)v10, 0xFFFFFFFFi64);
LABEL_3:
v11 = Session;
goto LABEL_4;
}
v11 = Session;
if( (Session[1] & 4) != 0 )
{
v12 = 769i64;
v13 = 3221226581i64;
LABEL_9:
TtmiLogError((INT8 *)"TtmNotifyDeviceInput", v12, v13, 0xFFFFFFFFi64);
goto LABEL_4;
}
TtmpFindDeviceByToken();
v5 = v14;
if( !v14 )
{
v12 = 786i64;
v13 = 3221226021i64;
goto LABEL_9;
}
MEMORY[0x260] = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
if( MEMORY[0x254] == -1 )
goto LABEL_3;
v11 = Session;
TerminalById = TtmiGetTerminalById(&Terminal, Session, MEMORY[0x254]);
if( TerminalById < 0 )
{
v13 = (unsigned int)TerminalById;
v12 = 805i64;
goto LABEL_9;
}
if( (v8 & 1) != 0 && *(char *)(v16 + 600) < 0 )
v7 = 1;
WillEvaluate = TtmiResetTerminalTimeouts(v11, Terminal, MonitorRequestReasonUserInput, 0x54544941ui64, v7);
LABEL_4:
TtmiLogDeviceInputNotified(Provider, (UINT64)Token, v8, v5, WillEvaluate);
if( v11 )
{
ExReleaseResourceLite(&TtmpSessionLock);
KeLeaveCriticalRegion();
}
}Referenced by:
No references.