MiInitializeSessionIds
VOID __stdcall MiInitializeSessionIds(){
_QWORD *Pool;
NTSTATUS v1;
_UNICODE_STRING TypeName;
_OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
stru_140C4DAF8._bf_0 = 0i64;
TypeName.Buffer = L"Session";
*(_QWORD *)&TypeName.Length = 1048590i64;
Pool = MiAllocatePool(256i64, 0x20ui64, 0x20206D4Dui64);
*(&stru_140C4DB30 + 548) = Pool;
if( !Pool || (*(_DWORD *)Pool = 128, Pool[1] = Pool + 2, !*(&stru_140C4DB30 + 548)) )
KeBugCheckEx(0x7Du, *(&stru_140C50B28 + 853), *(&stru_140C50B28 + 851), *(&stru_140C50B28 + 852), (PVOID)0x200);
memset(
*(VOID **)(*(&stru_140C4DB30 + 548) + 8i64),
0i64,
4 * ((**(&stru_140C4DB30 + 548) >> 5) + ((**(&stru_140C4DB30 + 548) & 0x1F) != 0)));
Tree.Root = 0i64;
stru_140C4DB30 = 0;
*(&stru_140C4DB30 + 1) = 0;
*(&stru_140C4DB30 + 2) = (char *)&stru_140C4DB30 + 8;
*(&stru_140C4DB30 + 1) = (char *)&stru_140C4DB30 + 8;
*(&stru_140C4DB30 + 2) = 6;
memset(&ObjectTypeInitializer, 0i64, sizeof(ObjectTypeInitializer));
ObjectTypeInitializer.InvalidAttributes = 0;
ObjectTypeInitializer._bf_0 |= 0xCu;
ObjectTypeInitializer.Length = 120;
ObjectTypeInitializer.PoolType = NonPagedPoolNx;
ObjectTypeInitializer.DefaultNonPagedPoolCharge = 40;
ObjectTypeInitializer.GenericMapping = (_GENERIC_MAPPING)MiSessionMapping;
ObjectTypeInitializer.ValidAccessMask = 983043;
ObjectTypeInitializer.DeleteProcedure = (void(__fastcall *)(void *))MiSessionObjectDelete;
v1 = ObCreateObjectType(&TypeName, &ObjectTypeInitializer, 0i64, &MmSessionObjectType);
if( v1 < 0 )
KeBugCheckEx(0x1Au, (PVOID)0x1237, (PVOID)v1, &ObjectTypeInitializer, 0i64);
}Referenced by:
MiInitSystem