TtmiCloseEventQueue
void __fastcall TtmiCloseEventQueue(__int64 a1, __int64 a2, INT64 a3){
_ETHREAD *CurrentThread;
_QWORD **v5;
_QWORD *v6;
_QWORD *v7;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireResourceExclusiveLite(a1 + 24, 1, a3);
*(_BYTE *)(a1 + 168) = 0;
v5 = (_QWORD **)(a1 + 152);
while( 1 )
{
v6 = *v5;
if( *v5 == v5 )
break;
if( (_QWORD **)v6[1] != v5 || (v7 = (_QWORD *)*v6, *(_QWORD **)(*v6 + 8i64) != v6) )
__fastfail(3u);
*v5 = v7;
v7[1] = v5;
ExFreePoolWithTag(v6, 0x716D7454u);
}
KeSetEvent((PRKEVENT)(a1 + 128), 0, 0);
ExReleaseResourceLite((PERESOURCE)(a1 + 24));
KeLeaveCriticalRegionThread(KeGetCurrentThread());
}Referenced by:
TtmiWriteEventToAllQueues