make usb miniports not to use old header
[reactos.git] / reactos / include / ntos / obtypes.h
1 #ifndef _INCLUDE_DDK_OBTYPES_H
2 #define _INCLUDE_DDK_OBTYPES_H
3 /* $Id$ */
4 struct _DIRECTORY_OBJECT;
5 struct _OBJECT_ATTRIBUTES;
6
7 #ifndef __USE_W32API
8
9 typedef struct _OBJECT_HANDLE_INFORMATION
10 {
11 ULONG HandleAttributes;
12 ACCESS_MASK GrantedAccess;
13 } OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION;
14
15
16 typedef struct _OBJECT_BASIC_INFORMATION
17 {
18 ULONG Attributes;
19 ACCESS_MASK GrantedAccess;
20 ULONG HandleCount;
21 ULONG PointerCount;
22 ULONG PagedPoolUsage;
23 ULONG NonPagedPoolUsage;
24 ULONG Reserved[3];
25 ULONG NameInformationLength;
26 ULONG TypeInformationLength;
27 ULONG SecurityDescriptorLength;
28 LARGE_INTEGER CreateTime;
29 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
30
31
32 typedef struct _OBJECT_NAME_INFORMATION
33 {
34 UNICODE_STRING Name;
35 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
36
37
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;
57 ULONG PoolType;
58 ULONG DefaultPagedPoolCharge;
59 ULONG DefaultNonPagedPoolCharge;
60 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
61
62
63 typedef struct _OBJECT_ALL_TYPES_INFORMATION
64 {
65 ULONG NumberOfTypes;
66 OBJECT_TYPE_INFORMATION TypeInformation[1];
67 } OBJECT_ALL_TYPES_INFORMATION, *POBJECT_ALL_TYPES_INFORMATION;
68
69
70 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION
71 {
72 BOOLEAN Inherit;
73 BOOLEAN ProtectFromClose;
74 } OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION;
75
76
77 typedef struct _OBJECT_TYPE *POBJECT_TYPE;
78
79
80 typedef struct _OBJECT_ATTRIBUTES
81 {
82 ULONG Length;
83 HANDLE RootDirectory;
84 PUNICODE_STRING ObjectName;
85 ULONG Attributes;
86 PVOID SecurityDescriptor;
87 PVOID SecurityQualityOfService;
88 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
89
90 #endif
91
92 typedef struct _HANDLE_TABLE_ENTRY_INFO {
93 ULONG AuditMask;
94 } HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO;
95
96 typedef struct _HANDLE_TABLE_ENTRY {
97 union {
98 PVOID Object;
99 ULONG_PTR ObAttributes;
100 PHANDLE_TABLE_ENTRY_INFO InfoTable;
101 ULONG_PTR Value;
102 } u1;
103 union {
104 ULONG GrantedAccess;
105 USHORT GrantedAccessIndex;
106 LONG NextFreeTableEntry;
107 } u2;
108 } HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY;
109
110 typedef struct _HANDLE_TABLE
111 {
112 ULONG Flags;
113 LONG HandleCount;
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;
122 } HANDLE_TABLE;
123
124 #ifndef __USE_W32API
125
126 typedef struct _HANDLE_TABLE *PHANDLE_TABLE;
127
128 /*
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
131 * changes
132 */
133 typedef struct _OBJECT_DIRECTORY_ENTRY {
134 struct _OBJECT_DIRECTORY_ENTRY *ChainLink;
135 PVOID Object;
136 ULONG HashValue;
137 } OBJECT_DIRECTORY_ENTRY, *POBJECT_DIRECTORY_ENTRY;
138
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;
144 ULONG SessionId;
145 } OBJECT_DIRECTORY, *POBJECT_DIRECTORY;
146
147 #endif /* __USE_W32API */
148
149 typedef struct _DEVICE_MAP {
150 POBJECT_DIRECTORY DosDevicesDirectory;
151 POBJECT_DIRECTORY GlobalDosDevicesDirectory;
152 ULONG ReferenceCount;
153 ULONG DriveMap;
154 UCHAR DriveType[32];
155 } DEVICE_MAP, *PDEVICE_MAP;
156
157 extern POBJECT_TYPE ObDirectoryType;
158 extern PDEVICE_MAP ObSystemDeviceMap;
159
160 #endif /* ndef _INCLUDE_DDK_OBTYPES_H */