TtmpPublishDeviceEvent
__int64 __fastcall TtmpPublishDeviceEvent(__int64 a1, __int64 a2, __int64 a3, int a4){
INT64 v8;
unsigned int v9;
INT64 v10;
int v11;
int v12;
int v13;
int v14;
const WCHAR *v16;
char Event[544];
memset(&Event[4], 0i64, 0x21Cu);
v9 = 0;
*(_DWORD *)Event = a4;
switch( a4 )
{
case 0:
case 3:
*(_DWORD *)&Event[8] = *(_DWORD *)(a3 + 32);
*(_DWORD *)&Event[12] = *(_DWORD *)(a3 + 596);
*(_DWORD *)&Event[16] = *(_DWORD *)(a3 + 16);
*(_DWORD *)&Event[20] = *(_DWORD *)(a3 + 72);
RtlStringCchCopyW((WCHAR *)&Event[24], 0x104ui64, (WCHAR *)(a3 + 76));
v11 = *(_DWORD *)(a3 + 72);
v12 = *(_DWORD *)(a3 + 16);
v13 = *(_DWORD *)(a3 + 596);
v14 = *(_DWORD *)(a3 + 32);
v16 = (const WCHAR *)(a3 + 76);
if( a4 )
TtmiLogDeviceArrivedTerminalEvent(v14, v13, v12, v11, v16);
else
TtmiLogDeviceEnumeratedTerminalEvent(v14, v13, v12, v11, v16);
break;
case 4:
v10 = *(unsigned int *)(a3 + 596);
*(_DWORD *)&Event[8] = *(_DWORD *)(a3 + 32);
*(_DWORD *)&Event[12] = v10;
TtmiLogDeviceAssignedTerminalEvent(*(unsigned int *)&Event[8], v10);
break;
case 5:
*(_DWORD *)&Event[8] = *(_DWORD *)(a3 + 32);
TtmiLogDeviceDepartedTerminalEvent(*(unsigned int *)&Event[8]);
break;
}
if( a2 )
return(unsigned int)TtmiWriteEventToSingleQueue(a2, Event, v8);
else
TtmiWriteEventToAllQueues((_TTMI_SESSION *)a1, (_TERMINAL_EVENT *)Event);
return v9;
}Referenced by:
TtmiAssignDevice
TtmiPublishDeviceEnumerationEvents
TtmiSessionDeviceListWorker