OBJECT_TYPE结构

typedef struct _object_type_flags{
	char CaseInsensitive : 1;
	char UnnamedObjectsOnly : 1;
	char UseDefaultObject : 1;
	char SecurityRequired : 1;
	char MaintainHandleCount : 1;
	char MaintainTypeList : 1;
	char SupportsObjectCallbacks : 1;
	char CacheAligned : 1;
}object_type_flags, *p_object_type_flags;


typedef struct _OBJECT_TYPE_INITIALIZER{
	USHORT				wLength;
	object_type_flags	ObjectTypeFlags;
	ULONG				ObjcetTypeCode;
	ULONG				InvalidAttributes;
	GENERIC_MAPPING		GenericMapping;
	ULONG				ValidAccessMask;
	ULONG				RetainAccess;
	ULONG				PoolType;
	ULONG				DefaultPagedPoolCharge;
	ULONG				DefaultNonPagedPoolCharge;
	PVOID				DumpProcedure;
	PVOID				OpenProcedure;
	PVOID				CloseProcedure;
	PVOID				DeleteProcedure;
	PVOID				ParseProcedure;
	PVOID				SecurityProcedure;
	PVOID				QueryNameProcedure;
	PVOID				OkayToCloseProcedure;
}OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER;

typedef struct _OBJECT_TYPE{
	LIST_ENTRY					TypeList;
	UNICODE_STRING				Name;
	ULONGLONG					DefaultObject;
	ULONG						Index;
	ULONG						TotalNumberOfObjects;
	ULONG						TotalNumberOfHandles;
	ULONG						HighWaterNumberOfObjects;
	ULONG						HighWaterNumberOfHandles;
	OBJECT_TYPE_INITIALIZER		TypeInfo;
	ULONGLONG					TypeLock;
	ULONG						Key;
	LIST_ENTRY					CallbackList;
}OBJECT_TYPE,*POBJECT_TYPE;

你可能感兴趣的:(内核驱动)