Define core Object Manager structures
This commit is contained in:
357
sdk/xtdk/obtypes.h
Normal file
357
sdk/xtdk/obtypes.h
Normal file
@@ -0,0 +1,357 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: sdk/xtdk/obtypes.h
|
||||
* DESCRIPTION: Object Manager structures definitions
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTDK_OBTYPES_H
|
||||
#define __XTDK_OBTYPES_H
|
||||
|
||||
#include <xtbase.h>
|
||||
#include <xttypes.h>
|
||||
#include <xtstruct.h>
|
||||
#include <iotypes.h>
|
||||
|
||||
|
||||
/* Object header information flag masks */
|
||||
#define OBJECT_FLAG_NEW_OBJECT 0x01
|
||||
#define OBJECT_FLAG_KERNEL_MODE 0x02
|
||||
#define OBJECT_FLAG_CREATOR_INFO 0x04
|
||||
#define OBJECT_FLAG_EXCLUSIVE 0x08
|
||||
#define OBJECT_FLAG_PERMANENT 0x10
|
||||
#define OBJECT_FLAG_SECURITY_QUOTA 0x20
|
||||
#define OBJECT_FLAG_SINGLE_PROCESS 0x40
|
||||
#define OBJECT_FLAG_DEFER_DELETE 0x80
|
||||
|
||||
/* Object lock states */
|
||||
#define OBJECT_LOCK_STATE_WAIT_EXCLUSIVE 0xAAAA1234
|
||||
#define OBJECT_LOCK_WAITSHARED_SIGNATURE 0xBBBB1234
|
||||
#define OBJECT_LOCK_STATE_OWNED_EXCLUSIVE 0xCCCC1234
|
||||
#define OBJECT_LOCK_OWNEDSHARED_SIGNATURE 0xDDDD1234
|
||||
#define OBJECT_LOCK_STATE_RELEASED_SIGNATURE 0xEEEE1234
|
||||
#define OBJECT_LOCK_STATE_INITIALIZED 0xFFFF1234
|
||||
|
||||
/* Object name attribute flags */
|
||||
#define OBJECT_INHERIT 0x00000002L
|
||||
#define OBJECT_PERMANENT 0x00000010L
|
||||
#define OBJECT_EXCLUSIVE 0x00000020L
|
||||
#define OBJECT_CASE_INSENSITIVE 0x00000040L
|
||||
#define OBJECT_OPENIF 0x00000080L
|
||||
#define OBJECT_OPENLINK 0x00000100L
|
||||
#define OBJECT_KERNEL_HANDLE 0x00000200L
|
||||
#define OBJECT_FORCE_ACCESS_CHECK 0x00000400L
|
||||
#define OBJECT_VALID_ATTRIBUTES 0x000007F2L
|
||||
|
||||
/* Maximum number of defined object types */
|
||||
#define OBJECT_MAX_DEFINED_OBJECT_TYPES 48
|
||||
|
||||
/* Object name buffer size */
|
||||
#define OBJECT_NAME_BUFFER_SIZE 248
|
||||
|
||||
/* Object name lock flags */
|
||||
#define OBJECT_NAME_LOCKED ((LONG)0x80000000)
|
||||
#define OBJECT_REMOVE_QUEUE_LOCKED (PVOID)1
|
||||
|
||||
/* Object name path separator */
|
||||
#define OBJECT_NAME_PATH_SEPARATOR ((WCHAR)L'\\')
|
||||
|
||||
/* Number of hash buckets */
|
||||
#define OBJECT_NUMBER_HASH_BUCKETS 37
|
||||
|
||||
|
||||
/* C/C++ specific code */
|
||||
#ifndef __XTOS_ASSEMBLER__
|
||||
|
||||
/* Object Manager routine callbacks */
|
||||
typedef VOID (XTAPI *POB_DUMP_METHOD)(IN PVOID Object, IN POBJECT_DUMP_CONTROL Control);
|
||||
typedef XTSTATUS (XTAPI *POB_OPEN_METHOD)(IN OBJECT_OPEN_REASON Reason, IN PEPROCESS Process, IN PVOID ObjectBody, IN ACCESS_MASK GrantedAccess, IN ULONG HandleCount);
|
||||
typedef VOID (XTAPI *POB_CLOSE_METHOD)(IN PEPROCESS Process, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG ProcessHandleCount, IN ULONG SystemHandleCount);
|
||||
typedef VOID (XTAPI *POB_DELETE_METHOD)(IN PVOID Object);
|
||||
typedef XTSTATUS (XTAPI *POB_PARSE_METHOD)(IN PVOID ParseObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE ProcessorMode, IN ULONG Attributes, IN OUT PUNICODE_STRING CompleteName, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, OUT PVOID *Object);
|
||||
typedef XTSTATUS (XTAPI *POB_SECURITY_METHOD)(IN PVOID Object, IN SECURITY_OPERATION_CODE OperationType, IN PSECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG CapturedLength, IN OUT PSECURITY_DESCRIPTOR *ObjectSecurityDescriptor, IN MMPOOL_TYPE PoolType, IN PGENERIC_MAPPING GenericMapping);
|
||||
typedef XTSTATUS (XTAPI *POB_QUERYNAME_METHOD)(IN PVOID Object, IN BOOLEAN HasObjectName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, IN KPROCESSOR_MODE ProcessorMode);
|
||||
typedef BOOLEAN (XTAPI *POB_OKAYTOCLOSE_METHOD)(IN PEPROCESS Process, IN PVOID Object, IN HANDLE Handle, IN KPROCESSOR_MODE ProcessorMode);
|
||||
|
||||
/* Bitmasks used to identify the presence of optional object headers in memory */
|
||||
typedef enum _OBJECT_HEADER_INFO
|
||||
{
|
||||
ObjectHeaderInfoNone = 0,
|
||||
ObjectHeaderInfoCreatorInfo = 0x01,
|
||||
ObjectHeaderInfoNameInfo = 0x02,
|
||||
ObjectHeaderInfoHandleInfo = 0x04,
|
||||
ObjectHeaderInfoQuotaInfo = 0x08,
|
||||
ObjectHeaderInfoProcessInfo = 0x10
|
||||
} OBJECT_HEADER_INFO, *POBJECT_HEADER_INFO;
|
||||
|
||||
/* List of information classes used when querying or setting object attributes */
|
||||
typedef enum _OBJECT_INFORMATION_CLASS
|
||||
{
|
||||
ObjectBasicInfo,
|
||||
ObjectNameInfo,
|
||||
ObjectTypeInfo,
|
||||
ObjectAllInfo,
|
||||
ObjectHandleFlagInfo
|
||||
} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
|
||||
|
||||
/* List of valid reasons for creating, opening, or duplicating an object handle */
|
||||
typedef enum _OBJECT_OPEN_REASON
|
||||
{
|
||||
ObCreateHandle,
|
||||
ObOpenHandle,
|
||||
ObDuplicateHandle,
|
||||
ObInheritHandle,
|
||||
ObMaxOpenReason
|
||||
} OBJECT_OPEN_REASON, *POBJECT_OPEN_REASON;
|
||||
|
||||
/* Mapping of device names to object manager devices */
|
||||
typedef struct _DEVICE_MAP
|
||||
{
|
||||
POBJECT_DIRECTORY DevicesDirectory;
|
||||
POBJECT_DIRECTORY GlobalDevicesDirectory;
|
||||
ULONG ReferenceCount;
|
||||
ULONG DriveMap;
|
||||
UCHAR DriveType[32];
|
||||
} DEVICE_MAP, *PDEVICE_MAP;
|
||||
|
||||
/* Parameters provided by a caller when creating or opening an object */
|
||||
typedef struct _OBJECT_ATTRIBUTES
|
||||
{
|
||||
ULONG Length;
|
||||
HANDLE RootDirectory;
|
||||
PUNICODE_STRING ObjectName;
|
||||
ULONG Attributes;
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
||||
PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
|
||||
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
|
||||
|
||||
/* Internal data stored during object creation */
|
||||
typedef struct _OBJECT_CREATE_INFORMATION
|
||||
{
|
||||
ULONG Attributes;
|
||||
HANDLE RootDirectory;
|
||||
PVOID ParseContext;
|
||||
KPROCESSOR_MODE ProbeMode;
|
||||
ULONG PagedPoolCharge;
|
||||
ULONG NonPagedPoolCharge;
|
||||
ULONG SecurityDescriptorCharge;
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
||||
PSECURITY_QUALITY_OF_SERVICE SecurityQos;
|
||||
SECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
|
||||
} OBJECT_CREATE_INFORMATION, *POBJECT_CREATE_INFORMATION;
|
||||
|
||||
/* Optional header storing information about the object's creator */
|
||||
typedef struct _OBJECT_CREATOR_INFO
|
||||
{
|
||||
LIST_ENTRY TypeList;
|
||||
HANDLE CreatorProcessId;
|
||||
} OBJECT_CREATOR_INFO, *POBJECT_CREATOR_INFO;
|
||||
|
||||
/* Directory object used to structure the namespace hierarchy */
|
||||
typedef struct _OBJECT_DIRECTORY
|
||||
{
|
||||
POBJECT_DIRECTORY_ENTRY HashBuckets[OBJECT_NUMBER_HASH_BUCKETS];
|
||||
KPUSH_LOCK Lock;
|
||||
PDEVICE_MAP DeviceMap;
|
||||
ULONG SessionId;
|
||||
} OBJECT_DIRECTORY, *POBJECT_DIRECTORY;
|
||||
|
||||
/* Linked list entry representing an object within a directory bucket */
|
||||
typedef struct _OBJECT_DIRECTORY_ENTRY
|
||||
{
|
||||
POBJECT_DIRECTORY_ENTRY ChainLink;
|
||||
PVOID Object;
|
||||
ULONG HashValue;
|
||||
} OBJECT_DIRECTORY_ENTRY, *POBJECT_DIRECTORY_ENTRY;
|
||||
|
||||
/* Control structure used during object diagnostic dumps */
|
||||
typedef struct _OBJECT_DUMP_CONTROL
|
||||
{
|
||||
PVOID Stream;
|
||||
ULONG Detail;
|
||||
} OBJECT_DUMP_CONTROL, *POBJECT_DUMP_CONTROL;
|
||||
|
||||
/* Entry tracking the number of open handles a specific process holds */
|
||||
typedef struct _OBJECT_HANDLE_COUNT_ENTRY
|
||||
{
|
||||
PEPROCESS OwningProcess;
|
||||
ULONG HandleTableIndex;
|
||||
ULONG HandleCount;
|
||||
} OBJECT_HANDLE_COUNT_ENTRY, *POBJECT_HANDLE_COUNT_ENTRY;
|
||||
|
||||
/* Database array tracking handle counts for objects opened by processes */
|
||||
typedef struct _OBJECT_HANDLE_COUNT_DATABASE
|
||||
{
|
||||
ULONG CountEntries;
|
||||
OBJECT_HANDLE_COUNT_ENTRY HandleCountEntries[1];
|
||||
} OBJECT_HANDLE_COUNT_DATABASE, *POBJECT_HANDLE_COUNT_DATABASE;
|
||||
|
||||
/* Database tracking all handle counts across different processes */
|
||||
typedef struct _OBJECT_HANDLE_COUNT_INFORMATION
|
||||
{
|
||||
ULONG TotalHandleCount;
|
||||
ULONG EntryCount;
|
||||
POBJECT_HANDLE_COUNT_ENTRY Entries;
|
||||
} OBJECT_HANDLE_COUNT_INFORMATION, *POBJECT_HANDLE_COUNT_INFORMATION;
|
||||
|
||||
/* Optional header containing the handle count database */
|
||||
typedef struct _OBJECT_HANDLE_INFO
|
||||
{
|
||||
OBJECT_HANDLE_COUNT_INFORMATION HandleCounts;
|
||||
} OBJECT_HANDLE_INFO, *POBJECT_HANDLE_INFO;
|
||||
|
||||
/* Core object header */
|
||||
typedef struct _OBJECT_HEADER
|
||||
{
|
||||
LONG_PTR PointerCount;
|
||||
union
|
||||
{
|
||||
LONG_PTR HandleCount;
|
||||
VOLATILE PVOID NextToFree;
|
||||
};
|
||||
POBJECT_TYPE Type;
|
||||
UCHAR NameInfoOffset;
|
||||
UCHAR HandleInfoOffset;
|
||||
UCHAR QuotaInfoOffset;
|
||||
UCHAR Flags;
|
||||
union
|
||||
{
|
||||
POBJECT_CREATE_INFORMATION ObjectCreateInfo;
|
||||
PVOID QuotaBlockCharged;
|
||||
};
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
||||
QUAD Body;
|
||||
} OBJECT_HEADER, *POBJECT_HEADER;
|
||||
|
||||
/* Creator tracking information */
|
||||
typedef struct _OBJECT_HEADER_CREATOR_INFO
|
||||
{
|
||||
LIST_ENTRY TypeList;
|
||||
PVOID CreatorUniqueProcess;
|
||||
USHORT CreatorBackTraceIndex;
|
||||
USHORT Reserved;
|
||||
} OBJECT_HEADER_CREATOR_INFO, *POBJECT_HEADER_CREATOR_INFO;
|
||||
|
||||
/* Union representing either a single handle count entry or a full database */
|
||||
typedef union _OBJECT_HEADER_HANDLE_INFO
|
||||
{
|
||||
POBJECT_HANDLE_COUNT_DATABASE HandleCountDatabase;
|
||||
OBJECT_HANDLE_COUNT_ENTRY SingleEntry;
|
||||
} OBJECT_HEADER_HANDLE_INFO, *POBJECT_HEADER_HANDLE_INFO;
|
||||
|
||||
/* Name information stored in the object header */
|
||||
typedef struct _OBJECT_HEADER_NAME_INFO
|
||||
{
|
||||
POBJECT_DIRECTORY Directory;
|
||||
UNICODE_STRING Name;
|
||||
ULONG QueryReferences;
|
||||
ULONG Reserved;
|
||||
ULONG DbgReferenceCount;
|
||||
} OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO;
|
||||
|
||||
/* Active quota information stored in the object header */
|
||||
typedef struct _OBJECT_HEADER_QUOTA_INFO
|
||||
{
|
||||
ULONG PagedPoolCharge;
|
||||
ULONG NonPagedPoolCharge;
|
||||
ULONG SecurityDescriptorCharge;
|
||||
PEPROCESS ExclusiveProcess;
|
||||
} OBJECT_HEADER_QUOTA_INFO, *POBJECT_HEADER_QUOTA_INFO;
|
||||
|
||||
/* Context maintained during namespace traversal and directory lookups */
|
||||
typedef struct _OBJECT_LOOKUP_CONTEXT
|
||||
{
|
||||
POBJECT_DIRECTORY Directory;
|
||||
PVOID Object;
|
||||
USHORT HashIndex;
|
||||
BOOLEAN DirectoryLocked;
|
||||
VOLATILE ULONG LockStateSignature;
|
||||
} OBJECT_LOOKUP_CONTEXT, *POBJECT_LOOKUP_CONTEXT;
|
||||
|
||||
/* Optional header storing the object's hierarchical name and directory links */
|
||||
typedef struct _OBJECT_NAME_INFO
|
||||
{
|
||||
LIST_ENTRY ObjectLinks;
|
||||
UNICODE_STRING ObjectName;
|
||||
PWSTR ObjectDirectoryPath;
|
||||
} OBJECT_NAME_INFO, *POBJECT_NAME_INFO;
|
||||
|
||||
/* Structure used to query an object's name */
|
||||
typedef struct _OBJECT_NAME_INFORMATION
|
||||
{
|
||||
UNICODE_STRING Name;
|
||||
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
|
||||
|
||||
/* Memory layout sizes for the object's optional headers */
|
||||
typedef struct _OBJECT_OPTIONAL_HEADER_LAYOUT
|
||||
{
|
||||
ULONG QuotaInfoSize;
|
||||
ULONG HandleInfoSize;
|
||||
ULONG NameInfoSize;
|
||||
ULONG CreatorInfoSize;
|
||||
ULONG TotalSize;
|
||||
} OBJECT_OPTIONAL_HEADER_LAYOUT, *POBJECT_OPTIONAL_HEADER_LAYOUT;
|
||||
|
||||
/* Information block linking an object to a specific process */
|
||||
typedef struct _OBJECT_PROCESS_INFO
|
||||
{
|
||||
LIST_ENTRY Entry;
|
||||
PEPROCESS Process;
|
||||
ULONG ReferenceCount;
|
||||
} OBJECT_PROCESS_INFO, *POBJECT_PROCESS_INFO;
|
||||
|
||||
/* Optional header tracking memory pool charges */
|
||||
typedef struct _OBJECT_QUOTA_INFO
|
||||
{
|
||||
ULONG PagedPoolCharge;
|
||||
ULONG NonPagedPoolCharge;
|
||||
ULONG SecurityDescriptorCharge;
|
||||
PEPROCESS ExclusiveProcess;
|
||||
} OBJECT_QUOTA_INFO, *POBJECT_QUOTA_INFO;
|
||||
|
||||
/* Configuration block defining the lifecycle and behavior of a specific object type */
|
||||
typedef struct _OBJECT_TYPE_INITIALIZER
|
||||
{
|
||||
USHORT Length;
|
||||
BOOLEAN UseDefaultObject;
|
||||
BOOLEAN CaseInsensitive;
|
||||
ULONG InvalidAttributes;
|
||||
GENERIC_MAPPING GenericMapping;
|
||||
ULONG ValidAccessMask;
|
||||
BOOLEAN SecurityRequired;
|
||||
BOOLEAN MaintainHandleCount;
|
||||
BOOLEAN MaintainTypeList;
|
||||
MMPOOL_TYPE PoolType;
|
||||
ULONG DefaultPagedPoolCharge;
|
||||
ULONG DefaultNonPagedPoolCharge;
|
||||
POB_DUMP_METHOD DumpProcedure;
|
||||
POB_OPEN_METHOD OpenProcedure;
|
||||
POB_CLOSE_METHOD CloseProcedure;
|
||||
POB_DELETE_METHOD DeleteProcedure;
|
||||
POB_PARSE_METHOD ParseProcedure;
|
||||
POB_SECURITY_METHOD SecurityProcedure;
|
||||
POB_QUERYNAME_METHOD QueryNameProcedure;
|
||||
POB_OKAYTOCLOSE_METHOD OkayToCloseProcedure;
|
||||
} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER;
|
||||
|
||||
|
||||
/* Descriptor representing a registered object type in the system */
|
||||
typedef struct _OBJECT_TYPE
|
||||
{
|
||||
LIST_ENTRY TypeList;
|
||||
UNICODE_STRING Name;
|
||||
PVOID DefaultObject;
|
||||
ULONG Index;
|
||||
ULONG TotalNumberOfObjects;
|
||||
ULONG TotalNumberOfHandles;
|
||||
ULONG HighWaterNumberOfObjects;
|
||||
ULONG HighWaterNumberOfHandles;
|
||||
OBJECT_TYPE_INITIALIZER TypeInfo;
|
||||
KPUSH_LOCK TypeLock;
|
||||
ULONG Key;
|
||||
LIST_ENTRY CallbackList;
|
||||
} OBJECT_TYPE;
|
||||
|
||||
#endif /* __XTOS_ASSEMBLER__ */
|
||||
#endif /* __XTDK_OBTYPES_H */
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <ldrtypes.h>
|
||||
#include <lpctypes.h>
|
||||
#include <mmtypes.h>
|
||||
#include <obtypes.h>
|
||||
#include <potypes.h>
|
||||
#include <pstypes.h>
|
||||
#include <rtltypes.h>
|
||||
|
||||
@@ -72,6 +72,9 @@ typedef enum _MMPOOL_TYPE MMPOOL_TYPE, *PMMPOOL_TYPE;
|
||||
typedef enum _MMSYSTEM_PTE_POOL_TYPE MMSYSTEM_PTE_POOL_TYPE, *PMMSYSTEM_PTE_POOL_TYPE;
|
||||
typedef enum _MODE MODE, *PMODE;
|
||||
typedef enum _NONPAGED_LOOKASIDE_NUMBER NONPAGED_LOOKASIDE_NUMBER, *PNONPAGED_LOOKASIDE_NUMBER;
|
||||
typedef enum _OBJECT_HEADER_INFO OBJECT_HEADER_INFO, *POBJECT_HEADER_INFO;
|
||||
typedef enum _OBJECT_INFORMATION_CLASS OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
|
||||
typedef enum _OBJECT_OPEN_REASON OBJECT_OPEN_REASON, *POBJECT_OPEN_REASON;
|
||||
typedef enum _POWER_ACTION POWER_ACTION, *PPOWER_ACTION;
|
||||
typedef enum _POWER_STATE_TYPE POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
|
||||
typedef enum _PS_QUOTA_TYPE PS_QUOTA_TYPE, *PPS_QUOTA_TYPE;
|
||||
@@ -114,6 +117,7 @@ typedef struct _CPPORT CPPORT, *PCPPORT;
|
||||
typedef struct _CPTABLE_INFO CPTABLE_INFO, *PCPTABLE_INFO;
|
||||
typedef struct _CSTRING CSTRING, *PCSTRING;
|
||||
typedef struct _DEVICE_CAPABILITIES DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
|
||||
typedef struct _DEVICE_MAP DEVICE_MAP, *PDEVICE_MAP;
|
||||
typedef struct _DEVICE_OBJECT DEVICE_OBJECT, *PDEVICE_OBJECT;
|
||||
typedef struct _DEVOBJ_EXTENSION DEVOBJ_EXTENSION, *PDEVOBJ_EXTENSION;
|
||||
typedef struct _DRIVER_EXTENSION DRIVER_EXTENSION, *PDRIVER_EXTENSION;
|
||||
@@ -363,6 +367,28 @@ typedef struct _MMPFNLIST MMPFNLIST, *PMMPFNLIST;
|
||||
typedef struct _NAMED_PIPE_CREATE_PARAMETERS NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS;
|
||||
typedef struct _NLSTABLE_INFO NLSTABLE_INFO, *PNLSTABLE_INFO;
|
||||
typedef struct _NONPAGED_LOOKASIDE_LIST NONPAGED_LOOKASIDE_LIST, *PNONPAGED_LOOKASIDE_LIST;
|
||||
typedef struct _OBJECT_ATTRIBUTES OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
|
||||
typedef struct _OBJECT_CREATE_INFORMATION OBJECT_CREATE_INFORMATION, *POBJECT_CREATE_INFORMATION;
|
||||
typedef struct _OBJECT_CREATOR_INFO OBJECT_CREATOR_INFO, *POBJECT_CREATOR_INFO;
|
||||
typedef struct _OBJECT_DIRECTORY OBJECT_DIRECTORY, *POBJECT_DIRECTORY;
|
||||
typedef struct _OBJECT_DIRECTORY_ENTRY OBJECT_DIRECTORY_ENTRY, *POBJECT_DIRECTORY_ENTRY;
|
||||
typedef struct _OBJECT_DUMP_CONTROL OBJECT_DUMP_CONTROL, *POBJECT_DUMP_CONTROL;
|
||||
typedef struct _OBJECT_HANDLE_COUNT_DATABASE OBJECT_HANDLE_COUNT_DATABASE, *POBJECT_HANDLE_COUNT_DATABASE;
|
||||
typedef struct _OBJECT_HANDLE_COUNT_ENTRY OBJECT_HANDLE_COUNT_ENTRY, *POBJECT_HANDLE_COUNT_ENTRY;
|
||||
typedef struct _OBJECT_HANDLE_COUNT_INFORMATION OBJECT_HANDLE_COUNT_INFORMATION, *POBJECT_HANDLE_COUNT_INFORMATION;
|
||||
typedef struct _OBJECT_HANDLE_INFO OBJECT_HANDLE_INFO, *POBJECT_HANDLE_INFO;
|
||||
typedef struct _OBJECT_HEADER OBJECT_HEADER, *POBJECT_HEADER;
|
||||
typedef struct _OBJECT_HEADER_CREATOR_INFO OBJECT_HEADER_CREATOR_INFO, *POBJECT_HEADER_CREATOR_INFO;
|
||||
typedef struct _OBJECT_HEADER_NAME_INFO OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO;
|
||||
typedef struct _OBJECT_HEADER_QUOTA_INFO OBJECT_HEADER_QUOTA_INFO, *POBJECT_HEADER_QUOTA_INFO;
|
||||
typedef struct _OBJECT_LOOKUP_CONTEXT OBJECT_LOOKUP_CONTEXT, *POBJECT_LOOKUP_CONTEXT;
|
||||
typedef struct _OBJECT_NAME_INFO OBJECT_NAME_INFO, *POBJECT_NAME_INFO;
|
||||
typedef struct _OBJECT_NAME_INFORMATION OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
|
||||
typedef struct _OBJECT_OPTIONAL_HEADER_LAYOUT OBJECT_OPTIONAL_HEADER_LAYOUT, *POBJECT_OPTIONAL_HEADER_LAYOUT;
|
||||
typedef struct _OBJECT_PROCESS_INFO OBJECT_PROCESS_INFO, *POBJECT_PROCESS_INFO;
|
||||
typedef struct _OBJECT_QUOTA_INFO OBJECT_QUOTA_INFO, *POBJECT_QUOTA_INFO;
|
||||
typedef struct _OBJECT_TYPE OBJECT_TYPE, *POBJECT_TYPE;
|
||||
typedef struct _OBJECT_TYPE_INITIALIZER OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER;
|
||||
typedef struct _OWNER_ENTRY OWNER_ENTRY, *POWNER_ENTRY;
|
||||
typedef struct _PAGED_LOOKASIDE_LIST PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
|
||||
typedef struct _PCAT_FIRMWARE_INFORMATION PCAT_FIRMWARE_INFORMATION, *PPCAT_FIRMWARE_INFORMATION;
|
||||
@@ -463,6 +489,7 @@ typedef union _EFI_PXE_BASE_CODE_PACKET EFI_PXE_BASE_CODE_PACKET, *PEFI_PXE_BASE
|
||||
typedef union _EX_RUNDOWN_REFERENCE EX_RUNDOWN_REFERENCE, *PEX_RUNDOWN_REFERENCE;
|
||||
typedef union _KPUSH_LOCK KPUSH_LOCK, *PKPUSH_LOCK;
|
||||
typedef union _LARGE_INTEGER LARGE_INTEGER, *PLARGE_INTEGER;
|
||||
typedef union _OBJECT_HEADER_HANDLE_INFO OBJECT_HEADER_HANDLE_INFO, *POBJECT_HEADER_HANDLE_INFO;
|
||||
typedef union _POWER_STATE POWER_STATE, *PPOWER_STATE;
|
||||
typedef union _ULARGE_INTEGER ULARGE_INTEGER, *PULARGE_INTEGER;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user