CmpCreateObjectTypes
INT64 __stdcall CmpCreateObjectTypes(){
INT64 result;
_OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
memset(&ObjectTypeInitializer, 0i64, sizeof(ObjectTypeInitializer));
ObjectTypeInitializer.DumpProcedure = 0i64;
ObjectTypeInitializer.OpenProcedure = 0i64;
ObjectTypeInitializer._bf_1 |= 1u;
ObjectTypeInitializer.Length = 120;
ObjectTypeInitializer.GenericMapping.GenericAll = 983103;
ObjectTypeInitializer.ValidAccessMask = 983103;
ObjectTypeInitializer.InvalidAttributes = 48;
ObjectTypeInitializer.GenericMapping.GenericRead = 131097;
ObjectTypeInitializer._bf_0 = ObjectTypeInitializer._bf_0 & 0xE2 | 0xD;
ObjectTypeInitializer.CloseProcedure = (void(__fastcall *)(_EPROCESS *, void *, unsigned __int64, unsigned __int64))CmpCloseKeyObject;
ObjectTypeInitializer.DeleteProcedure = (void(__fastcall *)(void *))CmpDeleteKeyObject;
ObjectTypeInitializer.ParseProcedure = (int(__fastcall *)(void *, void *, _ACCESS_STATE *, char, unsigned int, _UNICODE_STRING *, _UNICODE_STRING *, void *, _SECURITY_QUALITY_OF_SERVICE *, void **))CmpParseKey;
ObjectTypeInitializer.SecurityProcedure = (int(__fastcall *)(void *, _SECURITY_OPERATION_CODE, unsigned int *, void *, unsigned int *, void **, _POOL_TYPE, _GENERIC_MAPPING *, char))CmpSecurityMethod;
ObjectTypeInitializer.QueryNameProcedure = (int(__fastcall *)(void *, unsigned __int8, _OBJECT_NAME_INFORMATION *, unsigned int, unsigned int *, char))CmpQueryKeyName;
ObjectTypeInitializer.GenericMapping.GenericWrite = 131078;
ObjectTypeInitializer.GenericMapping.GenericExecute = 131129;
ObjectTypeInitializer.DefaultPagedPoolCharge = 104;
ObjectTypeInitializer.PoolType = PagedPool;
ObjectTypeInitializer.ObjectTypeCode = 256;
LODWORD(result) = ObCreateObjectType(
(_UNICODE_STRING *)&CmpKeyTypeNameString,
&ObjectTypeInitializer,
0i64,
(_OBJECT_TYPE **)&CmKeyObjectType);
return result;
}Referenced by:
CmInitSystem1