RtlInsertEntryHashTable
UINT8 __stdcall RtlInsertEntryHashTable(
RTL_DYNAMIC_HASH_TABLE *HashTable,
RTL_DYNAMIC_HASH_TABLE_ENTRY *Entry,
UINT64 Signature,
RTL_DYNAMIC_HASH_TABLE_CONTEXT *Context){
RTL_DYNAMIC_HASH_TABLE_CONTEXT *v4;
_LIST_ENTRY *PrevLinkage;
_LIST_ENTRY *Flink;
RTL_DYNAMIC_HASH_TABLE_CONTEXT v10;
Entry->Signature = Signature;
++HashTable->NumEntries;
v4 = Context;
memset(&v10, 0, sizeof(v10));
if( Context )
{
if( !Context->ChainHead )
RtlpPopulateContext(HashTable, Context, Signature);
}
else
{
RtlpPopulateContext(HashTable, &v10, Signature);
v4 = &v10;
}
if( v4->ChainHead->Flink == v4->ChainHead )
++HashTable->NonEmptyBuckets;
PrevLinkage = v4->PrevLinkage;
Flink = PrevLinkage->Flink;
if( PrevLinkage->Flink->Blink != PrevLinkage )
__fastfail(3u);
Entry->Linkage.Blink = PrevLinkage;
Entry->Linkage.Flink = Flink;
Flink->Blink = &Entry->Linkage;
PrevLinkage->Flink = &Entry->Linkage;
return 1;
}Referenced by:
SepAddLuidToIndexEntry
SepGetCachedHandlesEntry
SepGetLowBoxNumberEntry
SepInsertOrReferenceSharedSidEntries
SepReadAndInsertCaps