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