OLD | NEW |
| (Empty) |
1 // Copyright (c) 2006-2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef SANDBOX_TOOLS_FINDER_NTUNDOC_H__ | |
6 #define SANDBOX_TOOLS_FINDER_NTUNDOC_H__ | |
7 | |
8 #define NTSTATUS ULONG | |
9 #define STATUS_SUCCESS 0x00000000 | |
10 #define STATUS_INFO_LENGTH_MISMATCH 0xC0000004 | |
11 #define STATUS_ACCESS_DENIED 0xC0000022 | |
12 #define STATUS_BUFFER_OVERFLOW 0x80000005 | |
13 | |
14 typedef struct _LSA_UNICODE_STRING { | |
15 USHORT Length; | |
16 USHORT MaximumLength; | |
17 PWSTR Buffer; | |
18 } UNICODE_STRING; | |
19 | |
20 typedef struct _OBJDIR_INFORMATION { | |
21 UNICODE_STRING ObjectName; | |
22 UNICODE_STRING ObjectTypeName; | |
23 BYTE Data[1]; | |
24 } OBJDIR_INFORMATION; | |
25 | |
26 typedef struct _OBJECT_ATTRIBUTES { | |
27 ULONG Length; | |
28 HANDLE RootDirectory; | |
29 UNICODE_STRING *ObjectName; | |
30 ULONG Attributes; | |
31 PVOID SecurityDescriptor; | |
32 PVOID SecurityQualityOfService; | |
33 } OBJECT_ATTRIBUTES; | |
34 | |
35 typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION { | |
36 ULONG Attributes; | |
37 ACCESS_MASK GrantedAccess; | |
38 ULONG HandleCount; | |
39 ULONG PointerCount; | |
40 ULONG Reserved[10]; // reserved for internal use | |
41 } PUBLIC_OBJECT_BASIC_INFORMATION, *PPUBLIC_OBJECT_BASIC_INFORMATION; | |
42 | |
43 typedef struct __PUBLIC_OBJECT_TYPE_INFORMATION { | |
44 UNICODE_STRING TypeName; | |
45 ULONG Reserved [22]; // reserved for internal use | |
46 } PUBLIC_OBJECT_TYPE_INFORMATION, *PPUBLIC_OBJECT_TYPE_INFORMATION; | |
47 | |
48 typedef enum _POOL_TYPE { | |
49 NonPagedPool, | |
50 PagedPool, | |
51 NonPagedPoolMustSucceed, | |
52 ReservedType, | |
53 NonPagedPoolCacheAligned, | |
54 PagedPoolCacheAligned, | |
55 NonPagedPoolCacheAlignedMustS | |
56 } POOL_TYPE; | |
57 | |
58 typedef struct _OBJECT_TYPE_INFORMATION { | |
59 UNICODE_STRING Name; | |
60 ULONG TotalNumberOfObjects; | |
61 ULONG TotalNumberOfHandles; | |
62 ULONG TotalPagedPoolUsage; | |
63 ULONG TotalNonPagedPoolUsage; | |
64 ULONG TotalNamePoolUsage; | |
65 ULONG TotalHandleTableUsage; | |
66 ULONG HighWaterNumberOfObjects; | |
67 ULONG HighWaterNumberOfHandles; | |
68 ULONG HighWaterPagedPoolUsage; | |
69 ULONG HighWaterNonPagedPoolUsage; | |
70 ULONG HighWaterNamePoolUsage; | |
71 ULONG HighWaterHandleTableUsage; | |
72 ULONG InvalidAttributes; | |
73 GENERIC_MAPPING GenericMapping; | |
74 ULONG ValidAccess; | |
75 BOOLEAN SecurityRequired; | |
76 BOOLEAN MaintainHandleCount; | |
77 USHORT MaintainTypeList; | |
78 POOL_TYPE PoolType; | |
79 ULONG PagedPoolUsage; | |
80 ULONG NonPagedPoolUsage; | |
81 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION; | |
82 | |
83 typedef struct _OBJECT_NAME_INFORMATION { | |
84 UNICODE_STRING ObjectName; | |
85 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; | |
86 | |
87 typedef enum _OBJECT_INFORMATION_CLASS { | |
88 ObjectBasicInformation, | |
89 ObjectNameInformation, | |
90 ObjectTypeInformation, | |
91 ObjectAllInformation, | |
92 ObjectDataInformation | |
93 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; | |
94 | |
95 typedef struct _FILE_NAME_INFORMATION { | |
96 ULONG FileNameLength; | |
97 WCHAR FileName[1]; | |
98 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; | |
99 | |
100 typedef enum _FILE_INFORMATION_CLASS { | |
101 // end_wdm | |
102 FileDirectoryInformation = 1, | |
103 FileFullDirectoryInformation, // 2 | |
104 FileBothDirectoryInformation, // 3 | |
105 FileBasicInformation, // 4 wdm | |
106 FileStandardInformation, // 5 wdm | |
107 FileInternalInformation, // 6 | |
108 FileEaInformation, // 7 | |
109 FileAccessInformation, // 8 | |
110 FileNameInformation, // 9 | |
111 FileRenameInformation, // 10 | |
112 FileLinkInformation, // 11 | |
113 FileNamesInformation, // 12 | |
114 FileDispositionInformation, // 13 | |
115 FilePositionInformation, // 14 wdm | |
116 FileFullEaInformation, // 15 | |
117 FileModeInformation, // 16 | |
118 FileAlignmentInformation, // 17 | |
119 FileAllInformation, // 18 | |
120 FileAllocationInformation, // 19 | |
121 FileEndOfFileInformation, // 20 wdm | |
122 FileAlternateNameInformation, // 21 | |
123 FileStreamInformation, // 22 | |
124 FilePipeInformation, // 23 | |
125 FilePipeLocalInformation, // 24 | |
126 FilePipeRemoteInformation, // 25 | |
127 FileMailslotQueryInformation, // 26 | |
128 FileMailslotSetInformation, // 27 | |
129 FileCompressionInformation, // 28 | |
130 FileObjectIdInformation, // 29 | |
131 FileCompletionInformation, // 30 | |
132 FileMoveClusterInformation, // 31 | |
133 FileQuotaInformation, // 32 | |
134 FileReparsePointInformation, // 33 | |
135 FileNetworkOpenInformation, // 34 | |
136 FileAttributeTagInformation, // 35 | |
137 FileTrackingInformation, // 36 | |
138 FileMaximumInformation | |
139 // begin_wdm | |
140 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; | |
141 | |
142 typedef enum _SYSTEM_INFORMATION_CLASS { | |
143 SystemHandleInformation = 16 | |
144 } SYSTEM_INFORMATION_CLASS; | |
145 | |
146 typedef struct _IO_STATUS_BLOCK { | |
147 union { | |
148 NTSTATUS Status; | |
149 PVOID Pointer; | |
150 }; | |
151 ULONG_PTR Information; | |
152 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; | |
153 | |
154 #define InitializeObjectAttributes( p, n, a, r, s ) { \ | |
155 (p)->Length = sizeof( OBJECT_ATTRIBUTES ); \ | |
156 (p)->RootDirectory = r; \ | |
157 (p)->Attributes = a; \ | |
158 (p)->ObjectName = n; \ | |
159 (p)->SecurityDescriptor = s; \ | |
160 (p)->SecurityQualityOfService = NULL; \ | |
161 } | |
162 | |
163 typedef struct _SYSTEM_HANDLE_INFORMATION { | |
164 USHORT ProcessId; | |
165 USHORT CreatorBackTraceIndex; | |
166 UCHAR ObjectTypeNumber; | |
167 UCHAR Flags; | |
168 USHORT Handle; | |
169 PVOID Object; | |
170 ACCESS_MASK GrantedAccess; | |
171 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; | |
172 | |
173 typedef struct _SYSTEM_HANDLE_INFORMATION_EX { | |
174 ULONG NumberOfHandles; | |
175 SYSTEM_HANDLE_INFORMATION Information[1]; | |
176 } SYSTEM_HANDLE_INFORMATION_EX, *PSYSTEM_HANDLE_INFORMATION_EX; | |
177 | |
178 #define POBJECT_ATTRIBUTES OBJECT_ATTRIBUTES* | |
179 | |
180 typedef NTSTATUS (WINAPI* NTQUERYDIRECTORYOBJECT)( | |
181 HANDLE, | |
182 OBJDIR_INFORMATION*, | |
183 DWORD, | |
184 DWORD, | |
185 DWORD, | |
186 DWORD*, | |
187 DWORD*); | |
188 | |
189 typedef NTSTATUS (WINAPI* NTOPENDIRECTORYOBJECT)( | |
190 HANDLE *, | |
191 DWORD, | |
192 OBJECT_ATTRIBUTES* ); | |
193 | |
194 typedef NTSTATUS (WINAPI* NTGENERICOPEN) ( | |
195 OUT PHANDLE EventHandle, | |
196 IN ACCESS_MASK DesiredAccess, | |
197 IN POBJECT_ATTRIBUTES ObjectAttributes); | |
198 | |
199 typedef NTSTATUS (WINAPI* NTOPENEVENT)( | |
200 OUT PHANDLE EventHandle, | |
201 IN ACCESS_MASK DesiredAccess, | |
202 IN POBJECT_ATTRIBUTES ObjectAttributes); | |
203 | |
204 typedef NTSTATUS (WINAPI* NTOPENJOBOBJECT)( | |
205 OUT PHANDLE JobHandle, | |
206 IN ACCESS_MASK DesiredAccess, | |
207 IN POBJECT_ATTRIBUTES ObjectAttributes); | |
208 | |
209 typedef NTSTATUS (WINAPI* NTOPENKEYEDEVENT)( | |
210 OUT PHANDLE KeyedEventHandle, | |
211 IN ACCESS_MASK DesiredAccess, | |
212 IN POBJECT_ATTRIBUTES ObjectAttributes); | |
213 | |
214 typedef NTSTATUS (WINAPI* NTOPENMUTANT)( | |
215 OUT PHANDLE MutantHandle, | |
216 IN ACCESS_MASK DesiredAccess, | |
217 IN POBJECT_ATTRIBUTES ObjectAttributes); | |
218 | |
219 typedef NTSTATUS (WINAPI* NTOPENSECTION)( | |
220 OUT PHANDLE SectionHandle, | |
221 IN ACCESS_MASK DesiredAccess, | |
222 IN POBJECT_ATTRIBUTES ObjectAttributes); | |
223 | |
224 typedef NTSTATUS (WINAPI* NTOPENSEMAPHORE)( | |
225 OUT PHANDLE SemaphoreHandle, | |
226 IN ACCESS_MASK DesiredAccess, | |
227 IN POBJECT_ATTRIBUTES ObjectAttributes); | |
228 | |
229 typedef NTSTATUS (WINAPI* NTOPENSYMBOLICLINKOBJECT)( | |
230 OUT PHANDLE SymbolicLinkHandle, | |
231 IN ACCESS_MASK DesiredAccess, | |
232 IN POBJECT_ATTRIBUTES ObjectAttributes); | |
233 | |
234 typedef NTSTATUS (WINAPI* NTOPENTIMER)( | |
235 OUT PHANDLE TimerHandle, | |
236 IN ACCESS_MASK DesiredAccess, | |
237 IN POBJECT_ATTRIBUTES ObjectAttributes); | |
238 | |
239 typedef NTSTATUS (WINAPI* NTOPENFILE)( | |
240 HANDLE *, | |
241 DWORD, | |
242 OBJECT_ATTRIBUTES *, | |
243 IO_STATUS_BLOCK *, | |
244 DWORD, | |
245 DWORD); | |
246 | |
247 typedef NTSTATUS (WINAPI* NTQUERYINFORMATIONFILE)( | |
248 HANDLE, | |
249 PIO_STATUS_BLOCK, | |
250 PVOID, | |
251 ULONG, | |
252 FILE_INFORMATION_CLASS); | |
253 | |
254 typedef NTSTATUS (WINAPI* NTQUERYSYSTEMINFORMATION)( | |
255 SYSTEM_INFORMATION_CLASS SystemInformationClass, | |
256 PVOID SystemInformation, | |
257 ULONG SystemInformationLength, | |
258 PULONG ReturnLength); | |
259 | |
260 typedef NTSTATUS (WINAPI* NTQUERYOBJECT)( | |
261 HANDLE Handle, | |
262 OBJECT_INFORMATION_CLASS ObjectInformationClass, | |
263 PVOID ObjectInformation, | |
264 ULONG ObjectInformationLength, | |
265 PULONG ReturnLength); | |
266 | |
267 typedef NTSTATUS (WINAPI* NTCLOSE) (HANDLE); | |
268 | |
269 #define DIRECTORY_QUERY 0x0001 | |
270 #define DIRECTORY_TRAVERSE 0x0002 | |
271 #define DIRECTORY_CREATE_OBJECT 0x0004 | |
272 #define DIRECTORY_CREATE_SUBDIRECTORY 0x0008 | |
273 #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF) | |
274 | |
275 #endif // SANDBOX_TOOLS_FINDER_NTUNDOC_H__ | |
OLD | NEW |