ViAvlReleaseTableLockFromDpcLevel

VOID __stdcall ViAvlReleaseTableLockFromDpcLevel(_VF_AVL_TABLE *Table, _VF_AVL_LOCK_CONTEXT *Context){
  INT64 *p_Lock; 

  p_Lock = (INT64 *)&Table->Lock;
  if( (*((_BYTE *)Context + 9) & 4) != 0 )
    ExReleaseSpinLockExclusiveFromDpcLevel(p_Lock);
  else
    ExReleaseSpinLockSharedFromDpcLevel((PEX_SPIN_LOCK)p_Lock);
  *((_BYTE *)Context + 9) &= ~2u;
  *(_QWORD *)Context = 0i64;
}

Referenced by:

VfAvlCleanupLockContext
VfAvlDeleteTreeNode
VfAvlEnumerateNodes
VfAvlInsertReservedTreeNode
VfAvlLookupTreeNode
ViAvlAcquireTableLockAtDpcLevelSafe