ObRevokeHandles

VOID __stdcall ObRevokeHandles(_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, 1ui64, 1u);
  }
  ExReleasePushLockEx((_DWORD)RevocationBlock + 16, 0);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
}

Referenced by:

SepDeleteLogonSessionTrack