| 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 |