IopAcquireReleaseConnectLockInternal
VOID __fastcall IopAcquireReleaseConnectLockInternal(INT64 a1, CHAR a2, CHAR a3){
struct _KEVENT *v3;
_ETHREAD *CurrentThread;
if( (a3 & 1) != 0 )
{
v3 = (struct _KEVENT *)(a1 + 40);
}
else if( (a3 & 2) != 0 )
{
v3 = &ActiveConnectListLock;
}
else
{
v3 = *(struct _KEVENT **)(a1 + 24);
}
if( a2 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
KeWaitForSingleObject(v3, Executive, 0, 0, 0i64);
}
else
{
KeSetEvent(v3, 0);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}
}Referenced by:
IopAcquireActiveConnectLock
IopDestroyActiveConnectBlock
IopInitializeActiveConnectBlock
IopReleaseActiveConnectLock