ObDestroyHandleRevocationBlock

VOID __stdcall ObDestroyHandleRevocationBlock(_OB_HANDLE_REVOCATION_BLOCK *RevocationBlock){
  _ETHREAD *CurrentThread; 
  _OB_HANDLE_REVOCATION_BLOCK *Flink; 
  INT64 *v4; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx((UINT64)&RevocationBlock->Lock, 0i64);
  Flink = (_OB_HANDLE_REVOCATION_BLOCK *)RevocationBlock->RevocationInfos.Flink;
  while( Flink != RevocationBlock )
  {
    v4 = (INT64 *)Flink;
    Flink = (_OB_HANDLE_REVOCATION_BLOCK *)Flink->RevocationInfos.Flink;
    ObpHandleRevocationBlockRemoveInsertedObject(v4, (EX_RUNDOWN_REF *)RevocationBlock, 0i64, 1);
  }
  ExReleasePushLockEx((UINT64)&RevocationBlock->Lock, 0i64);
  KeLeaveCriticalRegion();
  ExWaitForRundownProtectionRelease(&RevocationBlock->Rundown);
}

Referenced by:

SepDeReferenceLogonSession
SepDeleteLogonSessionTrack