struct _OBJECT_TYPE_INITIALIZER
{
USHORT Length;
union
{
UCHAR ObjectTypeFlags;
struct
{
UCHAR CaseInsensitive:
1;
UCHAR UnnamedObjectsOnly:
1;
UCHAR UseDefaultObject:
1;
UCHAR SecurityRequired:
1;
UCHAR MaintainHandleCount:
1;
UCHAR MaintainTypeList:
1;
UCHAR SupportsObjectCallbacks:
1;
UCHAR CacheAligned:
1;
};
};
ULONG ObjectTypeCode;
ULONG InvalidAttributes;
struct _GENERIC_MAPPING GenericMapping;
ULONG ValidAccessMask;
ULONG RetainAccess;
enum _POOL_TYPE PoolType;
ULONG DefaultPagedPoolCharge;
ULONG DefaultNonPagedPoolCharge;
VOID (*DumpProcedure)(
VOID* arg1,
struct _OBJECT_DUMP_CONTROL* arg2);
LONG (*OpenProcedure)(
enum _OB_OPEN_REASON arg1,
CHAR arg2,
struct _EPROCESS* arg3,
VOID* arg4,
ULONG* arg5,
ULONG arg6);
VOID (*CloseProcedure)(
struct _EPROCESS* arg1,
VOID* arg2,
ULONG arg3,
ULONG arg4);
VOID (*DeleteProcedure)(
VOID* arg1);
LONG (*ParseProcedure)(
VOID* arg1,
VOID* arg2,
struct _ACCESS_STATE* arg3,
CHAR arg4,
ULONG arg5,
struct _UNICODE_STRING* arg6,
struct _UNICODE_STRING* arg7,
VOID* arg8,
struct _SECURITY_QUALITY_OF_SERVICE* arg9,
VOID** arg10);
LONG (*SecurityProcedure)(
VOID* arg1,
enum _SECURITY_OPERATION_CODE arg2,
ULONG* arg3,
VOID* arg4,
ULONG* arg5,
VOID** arg6,
enum _POOL_TYPE arg7,
struct _GENERIC_MAPPING* arg8,
CHAR arg9);
LONG (*QueryNameProcedure)(
VOID* arg1,
UCHAR arg2,
struct _OBJECT_NAME_INFORMATION* arg3,
ULONG arg4,
ULONG* arg5,
CHAR arg6);
UCHAR (*OkayToCloseProcedure)(
struct _EPROCESS* arg1,
VOID* arg2,
VOID* arg3,
CHAR arg4);
ULONG WaitObjectFlagMask;
USHORT WaitObjectFlagOffset;
USHORT WaitObjectPointerOffset;
};