1 #ifndef _INCLUDE_DDK_OBTYPES_H
2 #define _INCLUDE_DDK_OBTYPES_H
4 struct _DIRECTORY_OBJECT
;
5 struct _OBJECT_ATTRIBUTES
;
9 typedef struct _OBJECT_HANDLE_INFORMATION
11 ULONG HandleAttributes
;
12 ACCESS_MASK GrantedAccess
;
13 } OBJECT_HANDLE_INFORMATION
, *POBJECT_HANDLE_INFORMATION
;
16 typedef struct _OBJECT_BASIC_INFORMATION
19 ACCESS_MASK GrantedAccess
;
23 ULONG NonPagedPoolUsage
;
25 ULONG NameInformationLength
;
26 ULONG TypeInformationLength
;
27 ULONG SecurityDescriptorLength
;
28 LARGE_INTEGER CreateTime
;
29 } OBJECT_BASIC_INFORMATION
, *POBJECT_BASIC_INFORMATION
;
32 typedef struct _OBJECT_NAME_INFORMATION
35 } OBJECT_NAME_INFORMATION
, *POBJECT_NAME_INFORMATION
;
38 typedef struct _OBJECT_TYPE_INFORMATION
{
39 UNICODE_STRING TypeName
;
40 ULONG TotalNumberOfObjects
;
41 ULONG TotalNumberOfHandles
;
42 ULONG TotalPagedPoolUsage
;
43 ULONG TotalNonPagedPoolUsage
;
44 ULONG TotalNamePoolUsage
;
45 ULONG TotalHandleTableUsage
;
46 ULONG PeakNumberOfObjects
;
47 ULONG PeakNumberOfHandles
;
48 ULONG PeakPagedPoolUsage
;
49 ULONG PeakNonPagedPoolUsage
;
50 ULONG PeakNamePoolUsage
;
51 ULONG PeakHandleTableUsage
;
52 ULONG InvalidAttributes
;
53 GENERIC_MAPPING GenericMapping
;
54 ULONG ValidAccessMask
;
55 BOOLEAN SecurityRequired
;
56 BOOLEAN MaintainHandleCount
;
58 ULONG DefaultPagedPoolCharge
;
59 ULONG DefaultNonPagedPoolCharge
;
60 } OBJECT_TYPE_INFORMATION
, *POBJECT_TYPE_INFORMATION
;
63 typedef struct _OBJECT_ALL_TYPES_INFORMATION
66 OBJECT_TYPE_INFORMATION TypeInformation
[1];
67 } OBJECT_ALL_TYPES_INFORMATION
, *POBJECT_ALL_TYPES_INFORMATION
;
70 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION
73 BOOLEAN ProtectFromClose
;
74 } OBJECT_HANDLE_ATTRIBUTE_INFORMATION
, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION
;
77 typedef struct _OBJECT_TYPE
*POBJECT_TYPE
;
80 typedef struct _OBJECT_ATTRIBUTES
84 PUNICODE_STRING ObjectName
;
86 PVOID SecurityDescriptor
;
87 PVOID SecurityQualityOfService
;
88 } OBJECT_ATTRIBUTES
, *POBJECT_ATTRIBUTES
;
92 typedef struct _HANDLE_TABLE_ENTRY_INFO
{
94 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
96 typedef struct _HANDLE_TABLE_ENTRY
{
99 ULONG_PTR ObAttributes
;
100 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
105 USHORT GrantedAccessIndex
;
106 LONG NextFreeTableEntry
;
108 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
110 typedef struct _HANDLE_TABLE
114 PHANDLE_TABLE_ENTRY
**Table
;
115 PEPROCESS QuotaProcess
;
116 HANDLE UniqueProcessId
;
117 LONG FirstFreeTableEntry
;
118 LONG NextIndexNeedingPool
;
119 ERESOURCE HandleTableLock
;
120 LIST_ENTRY HandleTableList
;
121 KEVENT HandleContentionEvent
;
126 typedef struct _HANDLE_TABLE
*PHANDLE_TABLE
;
129 * FIXME: These will eventually become centerfold in the compliant Ob Manager
130 * For now, they are only here so Device Map is properly defined before the header
133 typedef struct _OBJECT_DIRECTORY_ENTRY
{
134 struct _OBJECT_DIRECTORY_ENTRY
*ChainLink
;
137 } OBJECT_DIRECTORY_ENTRY
, *POBJECT_DIRECTORY_ENTRY
;
139 #define NUMBER_HASH_BUCKETS 37
140 typedef struct _OBJECT_DIRECTORY
{
141 struct _OBJECT_DIRECTORY_ENTRY
*HashBuckets
[NUMBER_HASH_BUCKETS
];
142 struct _EX_PUSH_LOCK
*Lock
;
143 struct _DEVICE_MAP
*DeviceMap
;
145 } OBJECT_DIRECTORY
, *POBJECT_DIRECTORY
;
147 #endif /* __USE_W32API */
149 typedef struct _DEVICE_MAP
{
150 POBJECT_DIRECTORY DosDevicesDirectory
;
151 POBJECT_DIRECTORY GlobalDosDevicesDirectory
;
152 ULONG ReferenceCount
;
155 } DEVICE_MAP
, *PDEVICE_MAP
;
157 extern POBJECT_TYPE ObDirectoryType
;
158 extern PDEVICE_MAP ObSystemDeviceMap
;
160 #endif /* ndef _INCLUDE_DDK_OBTYPES_H */