IopAcquireReleaseConnectLockInternal
VOID __stdcall IopAcquireReleaseConnectLockInternal(
_ACTIVE_CONNECT_BLOCK *ConnectBlock,
UINT8 AcquireLock,
UINT64 Flags){
_KEVENT *v3;
_ETHREAD *CurrentThread;
if( (Flags & 1) != 0 )
{
v3 = (_KEVENT *)(ConnectBlock + 10);
}
else if( (Flags & 2) != 0 )
{
v3 = (_KEVENT *)&stru_140C452E0;
}
else
{
v3 = (_KEVENT *)*((_QWORD *)ConnectBlock + 3);
}
if( AcquireLock )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
KeWaitForSingleObject((UINT64)v3, 0, 0, 0, 0i64);
}
else
{
KeSetEvent(v3, 0, 0);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
}
}Referenced by:
IopAcquireActiveConnectLock
IopDestroyActiveConnectBlock
IopInitializeActiveConnectBlock
IopReleaseActiveConnectLock