TtmpDispatchCreateEventQueue
__int64 __fastcall TtmpDispatchCreateEventQueue(__int64 a1, PVOID *a2){
VOID *v2;
_ADAPTER_OBJECT *v4;
int inserted;
__int64 v6;
UINT64 v7;
unsigned int v8;
UINT64 v9;
int v10;
PVOID NewObject;
_TTMI_SESSION *LockedSession;
PVOID Object;
PVOID Handle;
v2 = *(VOID **)(a1 + 8);
LockedSession = 0i64;
NewObject = 0i64;
v4 = 0i64;
Handle = 0i64;
Object = 0i64;
inserted = TtmpAcquireSessionFromTerminalHandle(v2, 1u, 0, &LockedSession, (_TTMI_TERMINAL **)&NewObject);
v8 = inserted;
if( inserted < 0 )
{
v9 = 307i64;
LABEL_3:
TtmiLogError((INT8 *)"TtmpDispatchCreateEventQueue", v9, (unsigned int)inserted, (unsigned int)inserted);
goto LABEL_11;
}
v10 = TtmiCreateEventQueue((__int64)LockedSession, &Object, v6, v7);
v8 = v10;
if( v10 >= 0 )
{
v4 = (_ADAPTER_OBJECT *)Object;
inserted = TtmiWriteEnumerationEventsToQueue((__int64)LockedSession, (__int64)Object);
v8 = inserted;
if( inserted < 0 )
{
v9 = 323i64;
goto LABEL_3;
}
inserted = ObInsertObject(v4, 0i64, 2031616, 0i64, 0i64, &Handle);
v4 = 0i64;
v8 = inserted;
if( inserted < 0 )
{
v9 = 342i64;
goto LABEL_3;
}
v8 = 0;
*a2 = Handle;
}
else
{
TtmiLogError((INT8 *)"TtmpDispatchCreateEventQueue", 0x139ui64, (unsigned int)v10, (unsigned int)v10);
v4 = (_ADAPTER_OBJECT *)Object;
}
LABEL_11:
if( LockedSession )
{
ExReleaseResourceLite(&TtmpSessionLock);
KeLeaveCriticalRegion();
}
if( NewObject )
HalPutDmaAdapter((PADAPTER_OBJECT)NewObject);
if( v4 )
HalPutDmaAdapter(v4);
return v8;
}Referenced by:
TtmDispatchApi