typedef struct _OBJECT_TYPE_INITIALIZER { unsigned short Length; union { unsigned char ObjectTypeFlags; struct { unsigned char CaseInsensitive : 1; unsigned char UnnamedObjectsOnly : 1; unsigned char UseDefaultObject : 1; unsigned char SecurityRequired : 1; unsigned char MaintainHandleCount : 1; unsigned char MaintainTypeList : 1; unsigned char SupportsObjectCallbacks : 1; unsigned char CacheAligned : 1; }; }; unsigned long ObjectTypeCode; unsigned long InvalidAttributes; GENERIC_MAPPING GenericMapping; unsigned long ValidAccessMask; unsigned long RetainAccess; POOL_TYPE PoolType; unsigned long DefaultPagedPoolCharge; unsigned long DefaultNonPagedPoolCharge; void (*DumpProcedure)(void *, OBJECT_DUMP_CONTROL *); long (*OpenProcedure)(OB_OPEN_REASON, char, EPROCESS *, void *, unsigned long *, unsigned long); void (*CloseProcedure)(EPROCESS *, void *, unsigned __int64, unsigned __int64); void (*DeleteProcedure)(void *); long (*ParseProcedure)(void *, void *, ACCESS_STATE *, char, unsigned long, UNICODE_STRING *, UNICODE_STRING *, void *, SECURITY_QUALITY_OF_SERVICE *, void **); long (*SecurityProcedure)(void *, SECURITY_OPERATION_CODE, unsigned long *, void *, unsigned long *, void **, POOL_TYPE, GENERIC_MAPPING *, char); long (*QueryNameProcedure)(void *, unsigned char, OBJECT_NAME_INFORMATION *, unsigned long, unsigned long *, char); unsigned char (*OkayToCloseProcedure)(EPROCESS *, void *, void *, char); } OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER;