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.