TtmNotifyDeviceInput
VOID __fastcall TtmNotifyDeviceInput(INT64 rcx0, INT64 a2, INT64 a3){
unsigned int v3;
CHAR DeviceByToken;
CHAR a5;
CHAR a6;
unsigned int v7;
int v9;
INT64 v10;
INT64 v11;
INT64 v12;
__int64 v13;
INT64 v14;
int TerminalById;
__int64 v16;
__int64 a4;
INT64 v18;
INT64 a1;
v3 = rcx0;
a4 = 0i64;
a1 = 0i64;
DeviceByToken = 0;
v18 = 0i64;
a5 = 0;
a6 = 0;
v7 = a3;
v9 = TtmiAcquireCurrentSession(&a1);
if( v9 < 0 )
{
TtmiLogError((PSTR)"TtmNotifyDeviceInput", 761i64, (unsigned int)v9, 0xFFFFFFFFi64);
LABEL_3:
v10 = a1;
goto LABEL_4;
}
v10 = a1;
if( (*(_DWORD *)(a1 + 4) & 4) != 0 )
{
v11 = 769i64;
v12 = 3221226581i64;
LABEL_9:
TtmiLogError((PSTR)"TtmNotifyDeviceInput", v11, v12, 0xFFFFFFFFi64);
goto LABEL_4;
}
DeviceByToken = TtmpFindDeviceByToken(a1, v3, a2, &a4);
if( !DeviceByToken )
{
v11 = 786i64;
v12 = 3221226021i64;
goto LABEL_9;
}
v13 = a4;
*(_QWORD *)(a4 + 608) = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
v14 = *(unsigned int *)(v13 + 596);
if( (_DWORD)v14 == -1 )
goto LABEL_3;
v10 = a1;
TerminalById = TtmiGetTerminalById(&v18, a1, v14);
if( TerminalById < 0 )
{
v12 = (unsigned int)TerminalById;
v11 = 805i64;
goto LABEL_9;
}
if( (v7 & 1) != 0 && *(char *)(v16 + 600) < 0 )
a6 = 1;
a5 = TtmiResetTerminalTimeouts(v10, v18, MonitorRequestReasonUserInput, 0x54544941ui64, a6);
LABEL_4:
TtmiLogDeviceInputNotified(v3, a2, v7, DeviceByToken, a5, a6);
if( v10 )
{
ExReleaseResourceLite(&TtmpSessionLock);
KeLeaveCriticalRegion();
}
}Referenced by:
No references.