RtlRemoveEntryHashTable
UINT8 __stdcall RtlRemoveEntryHashTable(
_RTL_DYNAMIC_HASH_TABLE *HashTable,
_RTL_DYNAMIC_HASH_TABLE_ENTRY *Entry,
_RTL_DYNAMIC_HASH_TABLE_CONTEXT *Context){
unsigned __int64 Signature;
_LIST_ENTRY *Flink;
_LIST_ENTRY *Blink;
Signature = Entry->Signature;
--HashTable->NumEntries;
Flink = Entry->Linkage.Flink;
Blink = Entry->Linkage.Blink;
if( Entry->Linkage.Flink == Blink )
{
--HashTable->NonEmptyBuckets;
Blink = Entry->Linkage.Blink;
Flink = Entry->Linkage.Flink;
}
if( (_RTL_DYNAMIC_HASH_TABLE_ENTRY *)Flink->Blink != Entry || (_RTL_DYNAMIC_HASH_TABLE_ENTRY *)Blink->Flink != Entry )
__fastfail(3u);
Blink->Flink = Flink;
Flink->Blink = Blink;
if( Context && !Context->ChainHead )
RtlpPopulateContext(HashTable, Context, Signature);
return 1;
}Referenced by:
SepCleanupMarkedForDeletionEntries
SepDeReferenceSharedSidEntries
SepDereferenceCachedHandlesEntry
SepDereferenceLowBoxNumberEntry
SepInsertOrReferenceSharedSidEntries
SepRmDestroyCapTable