2 * PROJECT: ReactOS Native Headers
3 * FILE: include/ndk/umtypes.h
4 * PURPOSE: Definitions needed for Native Headers if target is not Kernel-Mode.
5 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
13 /*FIXME: REORGANIZE!!!*/
15 #define NTAPI __stdcall
16 #define OBJ_INHERIT 2L
17 #define OBJ_PERMANENT 16L
18 #define OBJ_EXCLUSIVE 32L
19 #define OBJ_CASE_INSENSITIVE 64L
20 #define OBJ_OPENIF 128L
21 #define OBJ_OPENLINK 256L
22 #define OBJ_VALID_ATTRIBUTES 498L
23 #define InitializeObjectAttributes(p,n,a,r,s) { \
24 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
25 (p)->RootDirectory = (r); \
26 (p)->Attributes = (a); \
27 (p)->ObjectName = (n); \
28 (p)->SecurityDescriptor = (s); \
29 (p)->SecurityQualityOfService = NULL; \
32 #define NT_SUCCESS(x) ((x)>=0)
33 #define STATUS_SUCCESS ((NTSTATUS)0)
35 #define NT_WARNING(x) ((ULONG)(x)>>30==2)
36 #define NT_ERROR(x) ((ULONG)(x)>>30==3)
37 #define PAGE_SIZE 0x1000
38 #define PAGE_SHIFT 12L
39 #define SharedUserData ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA)
40 #include <ddk/ntstatus.h>
41 typedef struct _OBJECT_TYPE
*POBJECT_TYPE
;
47 (RtlAssert( #exp, __FILE__, __LINE__, NULL ), FALSE) : TRUE)
49 #define ASSERTMSG(msg, exp) \
51 (RtlAssert( #exp, __FILE__, __LINE__, msg ), FALSE) : TRUE)
53 #define RTL_SOFT_ASSERT(exp) \
55 (DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE) : TRUE)
57 #define RTL_SOFT_ASSERTMSG(msg, exp) \
59 (DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE) : TRUE)
61 #define RTL_VERIFY(exp) ASSERT(exp)
62 #define RTL_VERIFYMSG(msg, exp) ASSERT(msg, exp)
64 #define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp)
65 #define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp)
69 #define ASSERT(exp) ((VOID) 0)
70 #define ASSERTMSG(msg, exp) ((VOID) 0)
72 #define RTL_SOFT_ASSERT(exp) ((VOID) 0)
73 #define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0)
75 #define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE)
76 #define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
78 #define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE)
79 #define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
83 #define FILE_ANY_ACCESS 0
84 #define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS
85 #define FILE_READ_ACCESS 1
86 #define FILE_WRITE_ACCESS 2
88 #define METHOD_BUFFERED 0
89 #define METHOD_IN_DIRECT 1
90 #define METHOD_OUT_DIRECT 2
91 #define METHOD_NEITHER 3
93 #define DEVICE_TYPE ULONG
95 #define FILE_DEVICE_BEEP 0x00000001
96 #define FILE_DEVICE_CD_ROM 0x00000002
97 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
98 #define FILE_DEVICE_CONTROLLER 0x00000004
99 #define FILE_DEVICE_DATALINK 0x00000005
100 #define FILE_DEVICE_DFS 0x00000006
101 #define FILE_DEVICE_DISK 0x00000007
102 #define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
103 #define FILE_DEVICE_FILE_SYSTEM 0x00000009
104 #define FILE_DEVICE_INPORT_PORT 0x0000000a
105 #define FILE_DEVICE_KEYBOARD 0x0000000b
106 #define FILE_DEVICE_MAILSLOT 0x0000000c
107 #define FILE_DEVICE_MIDI_IN 0x0000000d
108 #define FILE_DEVICE_MIDI_OUT 0x0000000e
109 #define FILE_DEVICE_MOUSE 0x0000000f
110 #define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
111 #define FILE_DEVICE_NAMED_PIPE 0x00000011
112 #define FILE_DEVICE_NETWORK 0x00000012
113 #define FILE_DEVICE_NETWORK_BROWSER 0x00000013
114 #define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
115 #define FILE_DEVICE_NULL 0x00000015
116 #define FILE_DEVICE_PARALLEL_PORT 0x00000016
117 #define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
118 #define FILE_DEVICE_PRINTER 0x00000018
119 #define FILE_DEVICE_SCANNER 0x00000019
120 #define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
121 #define FILE_DEVICE_SERIAL_PORT 0x0000001b
122 #define FILE_DEVICE_SCREEN 0x0000001c
123 #define FILE_DEVICE_SOUND 0x0000001d
124 #define FILE_DEVICE_STREAMS 0x0000001e
125 #define FILE_DEVICE_TAPE 0x0000001f
126 #define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
127 #define FILE_DEVICE_TRANSPORT 0x00000021
128 #define FILE_DEVICE_UNKNOWN 0x00000022
129 #define FILE_DEVICE_VIDEO 0x00000023
130 #define FILE_DEVICE_VIRTUAL_DISK 0x00000024
131 #define FILE_DEVICE_WAVE_IN 0x00000025
132 #define FILE_DEVICE_WAVE_OUT 0x00000026
133 #define FILE_DEVICE_8042_PORT 0x00000027
134 #define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
135 #define FILE_DEVICE_BATTERY 0x00000029
136 #define FILE_DEVICE_BUS_EXTENDER 0x0000002a
137 #define FILE_DEVICE_MODEM 0x0000002b
138 #define FILE_DEVICE_VDM 0x0000002c
139 #define FILE_DEVICE_MASS_STORAGE 0x0000002d
140 #define FILE_DEVICE_SMB 0x0000002e
141 #define FILE_DEVICE_KS 0x0000002f
142 #define FILE_DEVICE_CHANGER 0x00000030
143 #define FILE_DEVICE_SMARTCARD 0x00000031
144 #define FILE_DEVICE_ACPI 0x00000032
145 #define FILE_DEVICE_DVD 0x00000033
146 #define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
147 #define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035
148 #define FILE_DEVICE_DFS_VOLUME 0x00000036
149 #define FILE_DEVICE_SERENUM 0x00000037
150 #define FILE_DEVICE_TERMSRV 0x00000038
151 #define FILE_DEVICE_KSEC 0x00000039
152 #define FILE_DEVICE_FIPS 0x0000003a
153 #define CTL_CODE(DeviceType, Function, Method, Access)( \
154 ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
155 #define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
156 #define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
157 #define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
158 #define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
159 #define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
160 #define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
161 #define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
162 #define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
163 #define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
165 #define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
166 #define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
167 #define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
169 #define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS)
170 #define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
171 #define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
174 #define FSCTL_MARK_AS_SYSTEM_HIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS)
175 #define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
176 #define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
177 #define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
178 #define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
179 #define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
180 #define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
181 #define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
182 #define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS)
183 #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS)
184 #define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
185 #define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
186 #define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
187 #define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS)
188 #define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
189 #define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS)
190 #define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
191 #define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37, METHOD_NEITHER, FILE_ANY_ACCESS)
192 #define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_WRITE_DATA)
193 #define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
194 #define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_WRITE_DATA)
195 #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_WRITE_DATA)
196 #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
197 #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_WRITE_DATA)
198 #define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_READ_DATA)
199 #define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA)
200 #define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_READ_DATA)
201 #define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_WRITE_DATA)
202 #define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS)
203 #define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_WRITE_DATA)
204 #define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA)
205 #define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA)
206 #define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA)
207 #define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_BUFFERED, FILE_ANY_ACCESS)
208 #define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS)
209 #define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_ANY_ACCESS)
210 #define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_ANY_ACCESS)
211 #define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_READ_DATA)
212 #define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_READ_DATA)
213 #define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_READ_DATA)
214 #define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
215 #define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
216 #define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS)
217 #define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS)
218 #define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS)
219 #define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
220 #define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
221 #define FSCTL_NSS_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA)
222 #define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
223 #define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS)
224 #define FSCTL_NSS_RCONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA)
225 #define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA)
226 #define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
229 #define FSCTL_MAILSLOT_PEEK CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
231 #define FSCTL_NETWORK_SET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
232 #define FSCTL_NETWORK_GET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
233 #define FSCTL_NETWORK_GET_CONNECTION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS)
234 #define FSCTL_NETWORK_ENUMERATE_CONNECTIONS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS)
235 #define FSCTL_NETWORK_DELETE_CONNECTION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS)
236 #define FSCTL_NETWORK_GET_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS)
237 #define FSCTL_NETWORK_SET_DOMAIN_NAME CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS)
238 #define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS)
240 #define FSCTL_PIPE_ASSIGN_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
241 #define FSCTL_PIPE_DISCONNECT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
242 #define FSCTL_PIPE_LISTEN CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
243 #define FSCTL_PIPE_PEEK CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
244 #define FSCTL_PIPE_QUERY_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
245 #define FSCTL_PIPE_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
246 #define FSCTL_PIPE_WAIT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
247 #define FSCTL_PIPE_IMPERSONATE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
248 #define FSCTL_PIPE_SET_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
249 #define FSCTL_PIPE_QUERY_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
250 #define FSCTL_PIPE_INTERNAL_READ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
251 #define FSCTL_PIPE_INTERNAL_WRITE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
252 #define FSCTL_PIPE_INTERNAL_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
253 #define FSCTL_PIPE_INTERNAL_READ_OVFLOW CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
255 #define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS)
257 #define IOCTL_DISK_BASE FILE_DEVICE_DISK
258 #define IOCTL_DISK_GET_DRIVE_GEOMETRY \
259 CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
261 #define IOCTL_DISK_GET_PARTITION_INFO \
262 CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
264 #define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 )
265 #define ZwCurrentProcess() NtCurrentProcess()
266 #define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 )
267 #define ZwCurrentThread() NtCurrentThread()
269 typedef struct _KTHREAD
*PKTHREAD
, *PRKTHREAD
;
271 typedef CONST
int CINT
;
272 typedef LONG KPRIORITY
;
273 typedef LONG NTSTATUS
, *PNTSTATUS
;
274 typedef UCHAR KIRQL
, *PKIRQL
;
275 typedef ULONG_PTR KSPIN_LOCK
, *PKSPIN_LOCK
;
276 typedef ULONG WAIT_TYPE
;
277 typedef struct _PEB
*PPEB
;
278 typedef CONST
char *PCSZ
;
279 typedef ULONG KPROCESSOR_MODE
;
280 typedef PVOID PTHREAD_START_ROUTINE
;
281 typedef short CSHORT
;
282 typedef CSHORT
*PCSHORT
;
283 #define STATIC static
292 typedef struct _UNICODE_STRING
{
294 USHORT MaximumLength
;
296 } UNICODE_STRING
, *PUNICODE_STRING
;
298 typedef const UNICODE_STRING
* PCUNICODE_STRING
;
300 typedef struct _STRING
{
302 USHORT MaximumLength
;
306 typedef STRING ANSI_STRING
;
307 typedef PSTRING PANSI_STRING
;
308 typedef STRING OEM_STRING
;
309 typedef PSTRING POEM_STRING
;
310 typedef LARGE_INTEGER PHYSICAL_ADDRESS
, *PPHYSICAL_ADDRESS
;
312 typedef enum _SECTION_INHERIT
{
317 typedef struct _OBJECT_ATTRIBUTES
{
319 HANDLE RootDirectory
;
320 PUNICODE_STRING ObjectName
;
322 PVOID SecurityDescriptor
;
323 PVOID SecurityQualityOfService
;
324 } OBJECT_ATTRIBUTES
, *POBJECT_ATTRIBUTES
;
326 typedef ULONG KAFFINITY
, *PKAFFINITY
;
328 typedef struct _CLIENT_ID
{
329 HANDLE UniqueProcess
;
331 } CLIENT_ID
, *PCLIENT_ID
;
333 typedef enum _POOL_TYPE
{
336 NonPagedPoolMustSucceed
,
338 NonPagedPoolCacheAligned
,
339 PagedPoolCacheAligned
,
340 NonPagedPoolCacheAlignedMustS
,
342 NonPagedPoolSession
= 32,
344 NonPagedPoolMustSucceedSession
,
345 DontUseThisTypeSession
,
346 NonPagedPoolCacheAlignedSession
,
347 PagedPoolCacheAlignedSession
,
348 NonPagedPoolCacheAlignedMustSSession
351 typedef enum _EVENT_TYPE
{
356 typedef enum _TIMER_TYPE
{
361 typedef enum _KEY_INFORMATION_CLASS
{
366 KeyCachedInformation
,
368 } KEY_INFORMATION_CLASS
;
370 typedef enum _KEY_VALUE_INFORMATION_CLASS
{
371 KeyValueBasicInformation
,
372 KeyValueFullInformation
,
373 KeyValuePartialInformation
,
374 KeyValueFullInformationAlign64
,
375 KeyValuePartialInformationAlign64
376 } KEY_VALUE_INFORMATION_CLASS
;
378 typedef enum _KEY_SET_INFORMATION_CLASS
{
379 KeyWriteTimeInformation
,
380 KeyUserFlagsInformation
,
382 } KEY_SET_INFORMATION_CLASS
;
384 typedef struct _KEY_WRITE_TIME_INFORMATION
{
385 LARGE_INTEGER LastWriteTime
;
386 } KEY_WRITE_TIME_INFORMATION
, *PKEY_WRITE_TIME_INFORMATION
;
388 typedef struct _KEY_USER_FLAGS_INFORMATION
{
390 } KEY_USER_FLAGS_INFORMATION
, *PKEY_USER_FLAGS_INFORMATION
;
392 typedef struct _IO_STATUS_BLOCK
{
393 _ANONYMOUS_UNION
union {
397 ULONG_PTR Information
;
398 } IO_STATUS_BLOCK
, *PIO_STATUS_BLOCK
;
403 IN PIO_STATUS_BLOCK IoStatusBlock
,
406 typedef struct _FILE_BASIC_INFORMATION
{
407 LARGE_INTEGER CreationTime
;
408 LARGE_INTEGER LastAccessTime
;
409 LARGE_INTEGER LastWriteTime
;
410 LARGE_INTEGER ChangeTime
;
411 ULONG FileAttributes
;
412 } FILE_BASIC_INFORMATION
, *PFILE_BASIC_INFORMATION
;
414 typedef struct _FILE_NETWORK_OPEN_INFORMATION
{
415 LARGE_INTEGER CreationTime
;
416 LARGE_INTEGER LastAccessTime
;
417 LARGE_INTEGER LastWriteTime
;
418 LARGE_INTEGER ChangeTime
;
419 LARGE_INTEGER AllocationSize
;
420 LARGE_INTEGER EndOfFile
;
421 ULONG FileAttributes
;
422 } FILE_NETWORK_OPEN_INFORMATION
, *PFILE_NETWORK_OPEN_INFORMATION
;
424 typedef enum _PROCESSINFOCLASS
{
425 ProcessBasicInformation
,
431 ProcessRaisePriority
,
433 ProcessExceptionPort
,
435 ProcessLdtInformation
,
437 ProcessDefaultHardErrorMode
,
438 ProcessIoPortHandlers
,
439 ProcessPooledUsageAndLimits
,
440 ProcessWorkingSetWatch
,
442 ProcessEnableAlignmentFaultFixup
,
443 ProcessPriorityClass
,
444 ProcessWx86Information
,
447 ProcessPriorityBoost
,
449 ProcessSessionInformation
,
450 ProcessForegroundInformation
,
451 ProcessWow64Information
,
452 ProcessImageFileName
,
453 ProcessLUIDDeviceMapsEnabled
,
454 ProcessBreakOnTermination
,
455 ProcessDebugObjectHandle
,
457 ProcessHandleTracing
,
461 typedef enum _THREADINFOCLASS
{
462 ThreadBasicInformation
,
467 ThreadImpersonationToken
,
468 ThreadDescriptorTableEntry
,
469 ThreadEnableAlignmentFaultFixup
,
470 ThreadEventPair_Reusable
,
471 ThreadQuerySetWin32StartAddress
,
473 ThreadPerformanceCount
,
475 ThreadIdealProcessor
,
477 ThreadSetTlsArrayAddress
,
479 ThreadHideFromDebugger
,
480 ThreadBreakOnTermination
,
486 IN PVOID NormalContext
,
487 IN PVOID SystemArgument1
,
488 IN PVOID SystemArgument2
);
491 (*PTIMER_APC_ROUTINE
)(
492 IN PVOID TimerContext
,
493 IN ULONG TimerLowValue
,
494 IN LONG TimerHighValue
);
496 typedef enum _KPROFILE_SOURCE
{
498 ProfileAlignmentFixup
,
501 ProfileLoadInstructions
,
502 ProfilePipelineFrozen
,
503 ProfileBranchInstructions
,
504 ProfileTotalNonissues
,
508 ProfileBranchMispredictions
,
509 ProfileStoreInstructions
,
510 ProfileFpInstructions
,
511 ProfileIntegerInstructions
,
515 ProfileSpecialInstructions
,
518 ProfileDcacheAccesses
,
519 ProfileMemoryBarrierCycles
,
520 ProfileLoadLinkedIssues
,
524 typedef struct _KEY_VALUE_ENTRY
{
525 PUNICODE_STRING ValueName
;
529 } KEY_VALUE_ENTRY
, *PKEY_VALUE_ENTRY
;
531 typedef enum _FILE_INFORMATION_CLASS
{
532 FileDirectoryInformation
= 1,
533 FileFullDirectoryInformation
,
534 FileBothDirectoryInformation
,
535 FileBasicInformation
,
536 FileStandardInformation
,
537 FileInternalInformation
,
539 FileAccessInformation
,
541 FileRenameInformation
,
543 FileNamesInformation
,
544 FileDispositionInformation
,
545 FilePositionInformation
,
546 FileFullEaInformation
,
548 FileAlignmentInformation
,
550 FileAllocationInformation
,
551 FileEndOfFileInformation
,
552 FileAlternateNameInformation
,
553 FileStreamInformation
,
555 FilePipeLocalInformation
,
556 FilePipeRemoteInformation
,
557 FileMailslotQueryInformation
,
558 FileMailslotSetInformation
,
559 FileCompressionInformation
,
560 FileObjectIdInformation
,
561 FileCompletionInformation
,
562 FileMoveClusterInformation
,
563 FileQuotaInformation
,
564 FileReparsePointInformation
,
565 FileNetworkOpenInformation
,
566 FileAttributeTagInformation
,
567 FileTrackingInformation
,
568 FileIdBothDirectoryInformation
,
569 FileIdFullDirectoryInformation
,
570 FileValidDataLengthInformation
,
571 FileShortNameInformation
,
572 FileMaximumInformation
573 } FILE_INFORMATION_CLASS
, *PFILE_INFORMATION_CLASS
;
575 typedef enum _FSINFOCLASS
{
576 FileFsVolumeInformation
= 1,
577 FileFsLabelInformation
,
578 FileFsSizeInformation
,
579 FileFsDeviceInformation
,
580 FileFsAttributeInformation
,
581 FileFsControlInformation
,
582 FileFsFullSizeInformation
,
583 FileFsObjectIdInformation
,
584 FileFsDriverPathInformation
,
585 FileFsMaximumInformation
586 } FS_INFORMATION_CLASS
, *PFS_INFORMATION_CLASS
;
588 typedef struct _KEY_VALUE_PARTIAL_INFORMATION
{
593 } KEY_VALUE_PARTIAL_INFORMATION
, *PKEY_VALUE_PARTIAL_INFORMATION
;
595 typedef struct _FILE_ZERO_DATA_INFORMATION
{
596 LARGE_INTEGER FileOffset
;
597 LARGE_INTEGER BeyondFinalZero
;
598 } FILE_ZERO_DATA_INFORMATION
, *PFILE_ZERO_DATA_INFORMATION
;
600 typedef struct FILE_ALLOCATED_RANGE_BUFFER
{
601 LARGE_INTEGER FileOffset
;
602 LARGE_INTEGER Length
;
603 } FILE_ALLOCATED_RANGE_BUFFER
, *PFILE_ALLOCATED_RANGE_BUFFER
;
605 typedef struct _DISPATCHER_HEADER
{
611 LIST_ENTRY WaitListHead
;
612 } DISPATCHER_HEADER
, *PDISPATCHER_HEADER
;
614 typedef struct _KEVENT
{
615 DISPATCHER_HEADER Header
;
618 typedef struct _KSEMAPHORE
{
619 DISPATCHER_HEADER Header
;
621 } KSEMAPHORE
, *PKSEMAPHORE
;
623 typedef struct _FAST_MUTEX
{
625 struct _KTHREAD
*Owner
;
629 } FAST_MUTEX
, *PFAST_MUTEX
;
631 typedef struct _KTIMER
{
632 DISPATCHER_HEADER Header
;
633 ULARGE_INTEGER DueTime
;
634 LIST_ENTRY TimerListEntry
;
639 typedef struct _KMUTANT
{
640 DISPATCHER_HEADER Header
;
641 LIST_ENTRY MutantListEntry
;
642 struct _KTHREAD
*OwnerThread
;
645 } KMUTANT
, *PKMUTANT
, KMUTEX
, *PKMUTEX
;
647 typedef struct _PROCESS_BASIC_INFORMATION
651 KAFFINITY AffinityMask
;
652 KPRIORITY BasePriority
;
653 ULONG UniqueProcessId
;
654 ULONG InheritedFromUniqueProcessId
;
655 } PROCESS_BASIC_INFORMATION
, *PPROCESS_BASIC_INFORMATION
;
657 typedef enum _KWAIT_REASON
{
688 #define PROCESSOR_FEATURE_MAX 64
689 #define KI_USER_SHARED_DATA 0xffdf0000
691 typedef struct _KSYSTEM_TIME
{
695 } KSYSTEM_TIME
, *PKSYSTEM_TIME
;
697 typedef enum _NT_PRODUCT_TYPE
{
701 } NT_PRODUCT_TYPE
, *PNT_PRODUCT_TYPE
;
703 typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
{
707 } ALTERNATIVE_ARCHITECTURE_TYPE
;
709 typedef struct _KUSER_SHARED_DATA
{
710 ULONG TickCountLowDeprecated
;
711 ULONG TickCountMultiplier
;
712 volatile KSYSTEM_TIME InterruptTime
;
713 volatile KSYSTEM_TIME SystemTime
;
714 volatile KSYSTEM_TIME TimeZoneBias
;
715 USHORT ImageNumberLow
;
716 USHORT ImageNumberHigh
;
717 WCHAR NtSystemRoot
[ 260 ];
718 ULONG MaxStackTraceDepth
;
719 ULONG CryptoExponent
;
721 ULONG LargePageMinimum
;
722 ULONG Reserved2
[ 7 ];
723 NT_PRODUCT_TYPE NtProductType
;
724 BOOLEAN ProductTypeIsValid
;
725 ULONG NtMajorVersion
;
726 ULONG NtMinorVersion
;
727 BOOLEAN ProcessorFeatures
[PROCESSOR_FEATURE_MAX
];
730 volatile ULONG TimeSlip
;
731 ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture
;
732 LARGE_INTEGER SystemExpirationDate
;
734 BOOLEAN KdDebuggerEnabled
;
735 volatile ULONG ActiveConsoleId
;
736 volatile ULONG DismountCount
;
737 ULONG ComPlusPackage
;
738 ULONG LastSystemRITEventTickCount
;
739 ULONG NumberOfPhysicalPages
;
740 BOOLEAN SafeBootMode
;
743 ULONGLONG SystemCall
[4];
745 volatile KSYSTEM_TIME TickCount
;
746 volatile ULONG64 TickCountQuad
;
748 } KUSER_SHARED_DATA
, *PKUSER_SHARED_DATA
;
750 #define MAXIMUM_LEADBYTES 12
752 typedef struct _CPTABLEINFO
755 USHORT MaximumCharacterSize
;
757 USHORT UniDefaultChar
;
758 USHORT TransDefaultChar
;
759 USHORT TransUniDefaultChar
;
761 UCHAR LeadByte
[MAXIMUM_LEADBYTES
];
762 PUSHORT MultiByteTable
;
766 } CPTABLEINFO
, *PCPTABLEINFO
;
768 typedef struct _NLSTABLEINFO
770 CPTABLEINFO OemTableInfo
;
771 CPTABLEINFO AnsiTableInfo
;
772 PUSHORT UpperCaseTable
;
773 PUSHORT LowerCaseTable
;
774 } NLSTABLEINFO
, *PNLSTABLEINFO
;
776 typedef struct _VM_COUNTERS
778 SIZE_T PeakVirtualSize
;
780 ULONG PageFaultCount
;
781 SIZE_T PeakWorkingSetSize
;
782 SIZE_T WorkingSetSize
;
783 SIZE_T QuotaPeakPagedPoolUsage
;
784 SIZE_T QuotaPagedPoolUsage
;
785 SIZE_T QuotaPeakNonPagedPoolUsage
;
786 SIZE_T QuotaNonPagedPoolUsage
;
787 SIZE_T PagefileUsage
;
788 SIZE_T PeakPagefileUsage
;
790 typedef VM_COUNTERS
*PVM_COUNTERS
;
792 typedef struct _VM_COUNTERS_EX
794 SIZE_T PeakVirtualSize
;
796 ULONG PageFaultCount
;
797 SIZE_T PeakWorkingSetSize
;
798 SIZE_T WorkingSetSize
;
799 SIZE_T QuotaPeakPagedPoolUsage
;
800 SIZE_T QuotaPagedPoolUsage
;
801 SIZE_T QuotaPeakNonPagedPoolUsage
;
802 SIZE_T QuotaNonPagedPoolUsage
;
803 SIZE_T PagefileUsage
;
804 SIZE_T PeakPagefileUsage
;
807 typedef VM_COUNTERS_EX
*PVM_COUNTERS_EX
;
809 typedef struct _COMPRESSED_DATA_INFO
811 USHORT CompressionFormatAndEngine
;
812 UCHAR CompressionUnitShift
;
816 USHORT NumberOfChunks
;
817 ULONG CompressedChunkSizes
[ANYSIZE_ARRAY
];
818 } COMPRESSED_DATA_INFO
, *PCOMPRESSED_DATA_INFO
;
820 typedef struct _GENERATE_NAME_CONTEXT
823 BOOLEAN CheckSumInserted
;
826 ULONG ExtensionLength
;
827 WCHAR ExtensionBuffer
[4];
828 ULONG LastIndexValue
;
829 } GENERATE_NAME_CONTEXT
, *PGENERATE_NAME_CONTEXT
;
831 typedef struct _RTL_SPLAY_LINKS
{
832 struct _RTL_SPLAY_LINKS
*Parent
;
833 struct _RTL_SPLAY_LINKS
*LeftChild
;
834 struct _RTL_SPLAY_LINKS
*RightChild
;
836 typedef RTL_SPLAY_LINKS
*PRTL_SPLAY_LINKS
;
838 struct _RTL_AVL_TABLE
;
839 struct _RTL_GENERIC_TABLE
;
841 typedef enum _TABLE_SEARCH_RESULT
{
846 } TABLE_SEARCH_RESULT
;
849 NTSTATUS
STDCALL (*PRTL_AVL_MATCH_FUNCTION
)(
850 struct _RTL_AVL_TABLE
*Table
,
855 typedef enum _RTL_GENERIC_COMPARE_RESULTS
860 } RTL_GENERIC_COMPARE_RESULTS
;
863 RTL_GENERIC_COMPARE_RESULTS STDCALL
864 (*PRTL_AVL_COMPARE_ROUTINE
) (
865 struct _RTL_AVL_TABLE
*Table
,
871 RTL_GENERIC_COMPARE_RESULTS STDCALL
872 (*PRTL_GENERIC_COMPARE_ROUTINE
)(
873 struct _RTL_GENERIC_TABLE
*Table
,
880 (*PRTL_GENERIC_ALLOCATE_ROUTINE
) (
881 struct _RTL_GENERIC_TABLE
*Table
,
887 (*PRTL_GENERIC_FREE_ROUTINE
) (
888 struct _RTL_GENERIC_TABLE
*Table
,
894 (*PRTL_AVL_ALLOCATE_ROUTINE
) (
895 struct _RTL_AVL_TABLE
*Table
,
901 (*PRTL_AVL_FREE_ROUTINE
) (
902 struct _RTL_AVL_TABLE
*Table
,
906 typedef struct _RTL_GENERIC_TABLE
908 PRTL_SPLAY_LINKS TableRoot
;
909 LIST_ENTRY InsertOrderList
;
910 PLIST_ENTRY OrderedPointer
;
911 ULONG WhichOrderedElement
;
912 ULONG NumberGenericTableElements
;
913 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
;
914 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
;
915 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
;
918 typedef RTL_GENERIC_TABLE
*PRTL_GENERIC_TABLE
;
920 typedef struct _RTL_BALANCED_LINKS
922 struct _RTL_BALANCED_LINKS
*Parent
;
923 struct _RTL_BALANCED_LINKS
*LeftChild
;
924 struct _RTL_BALANCED_LINKS
*RightChild
;
927 } RTL_BALANCED_LINKS
;
928 typedef RTL_BALANCED_LINKS
*PRTL_BALANCED_LINKS
;
930 typedef struct _RTL_AVL_TABLE
932 RTL_BALANCED_LINKS BalancedRoot
;
933 PVOID OrderedPointer
;
934 ULONG WhichOrderedElement
;
935 ULONG NumberGenericTableElements
;
937 PRTL_BALANCED_LINKS RestartKey
;
939 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
;
940 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
;
941 PRTL_AVL_FREE_ROUTINE FreeRoutine
;
944 typedef RTL_AVL_TABLE
*PRTL_AVL_TABLE
;
946 #define RTL_REGISTRY_ABSOLUTE 0
947 #define RTL_REGISTRY_SERVICES 1
948 #define RTL_REGISTRY_CONTROL 2
949 #define RTL_REGISTRY_WINDOWS_NT 3
950 #define RTL_REGISTRY_DEVICEMAP 4
951 #define RTL_REGISTRY_USER 5
952 #define RTL_REGISTRY_MAXIMUM 6
953 #define RTL_REGISTRY_HANDLE 0x40000000
954 #define RTL_REGISTRY_OPTIONAL 0x80000000
956 typedef NTSTATUS STDCALL
957 (*PRTL_QUERY_REGISTRY_ROUTINE
)(
961 IN ULONG ValueLength
,
963 IN PVOID EntryContext
966 typedef struct _RTL_QUERY_REGISTRY_TABLE
968 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
;
975 } RTL_QUERY_REGISTRY_TABLE
, *PRTL_QUERY_REGISTRY_TABLE
;
977 typedef struct _KEY_VALUE_BASIC_INFORMATION
983 } KEY_VALUE_BASIC_INFORMATION
, *PKEY_VALUE_BASIC_INFORMATION
;
985 typedef struct _KEY_VALUE_FULL_INFORMATION
993 } KEY_VALUE_FULL_INFORMATION
, *PKEY_VALUE_FULL_INFORMATION
;
995 typedef struct _KEY_BASIC_INFORMATION
997 LARGE_INTEGER LastWriteTime
;
1001 } KEY_BASIC_INFORMATION
, *PKEY_BASIC_INFORMATION
;
1003 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
1004 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
1005 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
1006 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
1007 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
1008 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
1009 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
1011 #define SID_MAX_SUB_AUTHORITIES 15
1013 typedef struct _TIME_FIELDS
1021 CSHORT Milliseconds
;
1024 typedef TIME_FIELDS
*PTIME_FIELDS
;
1026 typedef struct _UNICODE_PREFIX_TABLE_ENTRY
1028 CSHORT NodeTypeCode
;
1030 struct _UNICODE_PREFIX_TABLE_ENTRY
*NextPrefixTree
;
1031 struct _UNICODE_PREFIX_TABLE_ENTRY
*CaseMatch
;
1032 RTL_SPLAY_LINKS Links
;
1033 PUNICODE_STRING Prefix
;
1034 } UNICODE_PREFIX_TABLE_ENTRY
;
1035 typedef UNICODE_PREFIX_TABLE_ENTRY
*PUNICODE_PREFIX_TABLE_ENTRY
;
1037 typedef struct _UNICODE_PREFIX_TABLE
1039 CSHORT NodeTypeCode
;
1041 PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree
;
1042 PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry
;
1043 } UNICODE_PREFIX_TABLE
;
1044 typedef UNICODE_PREFIX_TABLE
*PUNICODE_PREFIX_TABLE
;
1046 #define VER_MINORVERSION 0x0000001
1047 #define VER_MAJORVERSION 0x0000002
1048 #define VER_BUILDNUMBER 0x0000004
1049 #define VER_PLATFORMID 0x0000008
1050 #define VER_SERVICEPACKMINOR 0x0000010
1051 #define VER_SERVICEPACKMAJOR 0x0000020
1052 #define VER_SUITENAME 0x0000040
1053 #define VER_PRODUCT_TYPE 0x0000080
1054 #define VER_PLATFORM_WIN32s 0
1055 #define VER_PLATFORM_WIN32_WINDOWS 1
1056 #define VER_PLATFORM_WIN32_NT 2
1058 #define VER_GREATER 2
1059 #define VER_GREATER_EQUAL 3
1061 #define VER_LESS_EQUAL 5
1064 #define VER_CONDITION_MASK 7
1065 #define VER_NUM_BITS_PER_CONDITION_MASK 3
1067 typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW
;
1068 typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW
;
1069 typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW
;
1071 typedef enum _MEDIA_TYPE
{
1095 } MEDIA_TYPE
, *PMEDIA_TYPE
;
1097 typedef struct _PARTITION_INFORMATION
{
1098 LARGE_INTEGER StartingOffset
;
1099 LARGE_INTEGER PartitionLength
;
1100 DWORD HiddenSectors
;
1101 DWORD PartitionNumber
;
1103 BOOLEAN BootIndicator
;
1104 BOOLEAN RecognizedPartition
;
1105 BOOLEAN RewritePartition
;
1106 } PARTITION_INFORMATION
, *PPARTITION_INFORMATION
;
1108 typedef struct _DISK_GEOMETRY
{
1109 LARGE_INTEGER Cylinders
;
1110 MEDIA_TYPE MediaType
;
1111 ULONG TracksPerCylinder
;
1112 ULONG SectorsPerTrack
;
1113 ULONG BytesPerSector
;
1114 } DISK_GEOMETRY
, *PDISK_GEOMETRY
;