ObDestroyHandleRevocationBlock

VOID __stdcall ObDestroyHandleRevocationBlock(_OB_HANDLE_REVOCATION_BLOCK *RevocationBlock){
  _ETHREAD *CurrentThread; 
  _OB_HANDLE_REVOCATION_BLOCK *Flink; 
  _HANDLE_REVOCATION_INFO *v4; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx(&RevocationBlock->Lock, 0i64);
  Flink = (_OB_HANDLE_REVOCATION_BLOCK *)RevocationBlock->RevocationInfos.Flink;
  while( Flink != RevocationBlock )
  {
    v4 = (_HANDLE_REVOCATION_INFO *)Flink;
    Flink = (_OB_HANDLE_REVOCATION_BLOCK *)Flink->RevocationInfos.Flink;
    ObpHandleRevocationBlockRemoveInsertedObject(v4, RevocationBlock, 0i64, 1u);
  }
  ExReleasePushLockEx((_DWORD)RevocationBlock + 16, 0);
  KeLeaveCriticalRegion();
  ExWaitForRundownProtectionRelease(&RevocationBlock->Rundown);
}

Referenced by:

SepDeReferenceLogonSession
SepDeleteLogonSessionTrack