IopAcquireReleaseDispatcherLock

VOID __stdcall IopAcquireReleaseDispatcherLock(PASSIVE_INTERRUPT_BLOCK *PassiveInterrupt, UINT8 Lock){
  _KEVENT *v2; 
  _ETHREAD *CurrentThread; 

  v2 = (_KEVENT *)(PassiveInterrupt + 42);
  if( Lock )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    KeWaitForSingleObject((UINT64)v2, 0, 0, 0, 0i64);
  }
  else
  {
    KeSetEvent(v2, 0, 0);
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
  }
}

Referenced by:

IopPassiveInterruptWorker