ObpInsertDirectoryEntry
UINT8 __stdcall ObpInsertDirectoryEntry(_OBJECT_DIRECTORY *Directory, VOID *Object, _OBP_LOOKUP_CONTEXT *LookupContext){
VOID **PoolWithTag;
_OBJECT_DIRECTORY_ENTRY *v7;
_OBJECT_DIRECTORY_ENTRY **v8;
PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x18ui64, 1766089295i64);
v7 = (_OBJECT_DIRECTORY_ENTRY *)PoolWithTag;
if( PoolWithTag )
{
ObfReferenceObject(Object);
v8 = &Directory->HashBuckets[LookupContext->HashIndex];
v7->HashValue = LookupContext->HashValue;
v7->ChainLink = *v8;
*v8 = v7;
v7->Object = Object;
LookupContext->EntryLink = v8;
ObfReferenceObject(Directory);
LOBYTE(PoolWithTag) = 1;
*(_QWORD *)((char *)Object - *((unsigned __int8 *)&dword_140C25D60 + (*((char *)Object - 22) & 3)) - 48) = Directory;
}
return(unsigned __int8)PoolWithTag;
}Referenced by:
ObCreateObjectTypeEx
ObInitSystem
ObpLookupObjectName