4 * Windows NT Filesystem Driver Developer Kit
6 * This file is part of the w32api package.
9 * Created by Bo Brantén <bosse@acc.umu.se>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
28 #pragma GCC system_header
40 #define VER_PRODUCTBUILD 10000
47 #define NTKERNELAPI DECLSPEC_IMPORT
50 typedef struct _SE_EXPORTS
*PSE_EXPORTS
;
53 extern PUCHAR FsRtlLegalAnsiCharacterArray
;
55 extern DECLSPEC_IMPORT PUCHAR FsRtlLegalAnsiCharacterArray
;
57 extern PSE_EXPORTS SeExports
;
58 extern PACL SePublicDefaultDacl
;
59 extern PACL SeSystemDefaultDacl
;
61 extern KSPIN_LOCK IoStatisticsLock
;
62 extern ULONG IoReadOperationCount
;
63 extern ULONG IoWriteOperationCount
;
64 extern ULONG IoOtherOperationCount
;
65 extern LARGE_INTEGER IoReadTransferCount
;
66 extern LARGE_INTEGER IoWriteTransferCount
;
67 extern LARGE_INTEGER IoOtherTransferCount
;
69 #define ANSI_DOS_STAR ('<')
70 #define ANSI_DOS_QM ('>')
71 #define ANSI_DOS_DOT ('"')
73 #define DOS_STAR (L'<')
75 #define DOS_DOT (L'"')
78 #define ACCESS_MIN_MS_ACE_TYPE (0x0)
79 #define ACCESS_ALLOWED_ACE_TYPE (0x0)
80 #define ACCESS_DENIED_ACE_TYPE (0x1)
81 #define SYSTEM_AUDIT_ACE_TYPE (0x2)
82 #define SYSTEM_ALARM_ACE_TYPE (0x3)
83 #define ACCESS_MAX_MS_V2_ACE_TYPE (0x3)
84 #define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4)
85 #define ACCESS_MAX_MS_V3_ACE_TYPE (0x4)
86 #define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5)
87 #define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5)
88 #define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6)
89 #define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7)
90 #define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8)
91 #define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8)
92 #define ACCESS_MAX_MS_V4_ACE_TYPE (0x8)
93 #define ACCESS_MAX_MS_ACE_TYPE (0x8)
94 #define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9)
95 #define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA)
96 #define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB)
97 #define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC)
98 #define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD)
99 #define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE)
100 #define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF)
101 #define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10)
102 #define ACCESS_MAX_MS_V5_ACE_TYPE (0x10)
104 #define COMPRESSION_FORMAT_NONE (0x0000)
105 #define COMPRESSION_FORMAT_DEFAULT (0x0001)
106 #define COMPRESSION_FORMAT_LZNT1 (0x0002)
107 #define COMPRESSION_ENGINE_STANDARD (0x0000)
108 #define COMPRESSION_ENGINE_MAXIMUM (0x0100)
109 #define COMPRESSION_ENGINE_HIBER (0x0200)
111 #define FILE_ACTION_ADDED 0x00000001
112 #define FILE_ACTION_REMOVED 0x00000002
113 #define FILE_ACTION_MODIFIED 0x00000003
114 #define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
115 #define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
116 #define FILE_ACTION_ADDED_STREAM 0x00000006
117 #define FILE_ACTION_REMOVED_STREAM 0x00000007
118 #define FILE_ACTION_MODIFIED_STREAM 0x00000008
119 #define FILE_ACTION_REMOVED_BY_DELETE 0x00000009
120 #define FILE_ACTION_ID_NOT_TUNNELLED 0x0000000A
121 #define FILE_ACTION_TUNNELLED_ID_COLLISION 0x0000000B
124 #define FILE_EA_TYPE_BINARY 0xfffe
125 #define FILE_EA_TYPE_ASCII 0xfffd
126 #define FILE_EA_TYPE_BITMAP 0xfffb
127 #define FILE_EA_TYPE_METAFILE 0xfffa
128 #define FILE_EA_TYPE_ICON 0xfff9
129 #define FILE_EA_TYPE_EA 0xffee
130 #define FILE_EA_TYPE_MVMT 0xffdf
131 #define FILE_EA_TYPE_MVST 0xffde
132 #define FILE_EA_TYPE_ASN1 0xffdd
133 #define FILE_EA_TYPE_FAMILY_IDS 0xff01
135 #define FILE_NEED_EA 0x00000080
137 /* also in winnt.h */
138 #define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
139 #define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
140 #define FILE_NOTIFY_CHANGE_NAME 0x00000003
141 #define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
142 #define FILE_NOTIFY_CHANGE_SIZE 0x00000008
143 #define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
144 #define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
145 #define FILE_NOTIFY_CHANGE_CREATION 0x00000040
146 #define FILE_NOTIFY_CHANGE_EA 0x00000080
147 #define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
148 #define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
149 #define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
150 #define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
151 #define FILE_NOTIFY_VALID_MASK 0x00000fff
154 #define FILE_OPLOCK_BROKEN_TO_LEVEL_2 0x00000007
155 #define FILE_OPLOCK_BROKEN_TO_NONE 0x00000008
157 #define FILE_OPBATCH_BREAK_UNDERWAY 0x00000009
159 #define FILE_CASE_SENSITIVE_SEARCH 0x00000001
160 #define FILE_CASE_PRESERVED_NAMES 0x00000002
161 #define FILE_UNICODE_ON_DISK 0x00000004
162 #define FILE_PERSISTENT_ACLS 0x00000008
163 #define FILE_FILE_COMPRESSION 0x00000010
164 #define FILE_VOLUME_QUOTAS 0x00000020
165 #define FILE_SUPPORTS_SPARSE_FILES 0x00000040
166 #define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
167 #define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
168 #define FS_LFN_APIS 0x00004000
169 #define FILE_VOLUME_IS_COMPRESSED 0x00008000
170 #define FILE_SUPPORTS_OBJECT_IDS 0x00010000
171 #define FILE_SUPPORTS_ENCRYPTION 0x00020000
172 #define FILE_NAMED_STREAMS 0x00040000
174 #define FILE_PIPE_BYTE_STREAM_TYPE 0x00000000
175 #define FILE_PIPE_MESSAGE_TYPE 0x00000001
177 #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
178 #define FILE_PIPE_MESSAGE_MODE 0x00000001
180 #define FILE_PIPE_QUEUE_OPERATION 0x00000000
181 #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
183 #define FILE_PIPE_INBOUND 0x00000000
184 #define FILE_PIPE_OUTBOUND 0x00000001
185 #define FILE_PIPE_FULL_DUPLEX 0x00000002
187 #define FILE_PIPE_DISCONNECTED_STATE 0x00000001
188 #define FILE_PIPE_LISTENING_STATE 0x00000002
189 #define FILE_PIPE_CONNECTED_STATE 0x00000003
190 #define FILE_PIPE_CLOSING_STATE 0x00000004
192 #define FILE_PIPE_CLIENT_END 0x00000000
193 #define FILE_PIPE_SERVER_END 0x00000001
195 #define FILE_PIPE_READ_DATA 0x00000000
196 #define FILE_PIPE_WRITE_SPACE 0x00000001
198 #define FILE_STORAGE_TYPE_SPECIFIED 0x00000041 /* FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE */
199 #define FILE_STORAGE_TYPE_DEFAULT (StorageTypeDefault << FILE_STORAGE_TYPE_SHIFT)
200 #define FILE_STORAGE_TYPE_DIRECTORY (StorageTypeDirectory << FILE_STORAGE_TYPE_SHIFT)
201 #define FILE_STORAGE_TYPE_FILE (StorageTypeFile << FILE_STORAGE_TYPE_SHIFT)
202 #define FILE_STORAGE_TYPE_DOCFILE (StorageTypeDocfile << FILE_STORAGE_TYPE_SHIFT)
203 #define FILE_STORAGE_TYPE_JUNCTION_POINT (StorageTypeJunctionPoint << FILE_STORAGE_TYPE_SHIFT)
204 #define FILE_STORAGE_TYPE_CATALOG (StorageTypeCatalog << FILE_STORAGE_TYPE_SHIFT)
205 #define FILE_STORAGE_TYPE_STRUCTURED_STORAGE (StorageTypeStructuredStorage << FILE_STORAGE_TYPE_SHIFT)
206 #define FILE_STORAGE_TYPE_EMBEDDING (StorageTypeEmbedding << FILE_STORAGE_TYPE_SHIFT)
207 #define FILE_STORAGE_TYPE_STREAM (StorageTypeStream << FILE_STORAGE_TYPE_SHIFT)
208 #define FILE_MINIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_DEFAULT
209 #define FILE_MAXIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_STREAM
210 #define FILE_STORAGE_TYPE_MASK 0x000f0000
211 #define FILE_STORAGE_TYPE_SHIFT 16
213 #define FILE_VC_QUOTA_NONE 0x00000000
214 #define FILE_VC_QUOTA_TRACK 0x00000001
215 #define FILE_VC_QUOTA_ENFORCE 0x00000002
216 #define FILE_VC_QUOTA_MASK 0x00000003
218 #define FILE_VC_QUOTAS_LOG_VIOLATIONS 0x00000004
219 #define FILE_VC_CONTENT_INDEX_DISABLED 0x00000008
221 #define FILE_VC_LOG_QUOTA_THRESHOLD 0x00000010
222 #define FILE_VC_LOG_QUOTA_LIMIT 0x00000020
223 #define FILE_VC_LOG_VOLUME_THRESHOLD 0x00000040
224 #define FILE_VC_LOG_VOLUME_LIMIT 0x00000080
226 #define FILE_VC_QUOTAS_INCOMPLETE 0x00000100
227 #define FILE_VC_QUOTAS_REBUILDING 0x00000200
229 #define FILE_VC_VALID_MASK 0x000003ff
231 #define FSRTL_FLAG_FILE_MODIFIED (0x01)
232 #define FSRTL_FLAG_FILE_LENGTH_CHANGED (0x02)
233 #define FSRTL_FLAG_LIMIT_MODIFIED_PAGES (0x04)
234 #define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX (0x08)
235 #define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH (0x10)
236 #define FSRTL_FLAG_USER_MAPPED_FILE (0x20)
237 #define FSRTL_FLAG_EOF_ADVANCE_ACTIVE (0x80)
239 #define FSRTL_FLAG2_DO_MODIFIED_WRITE (0x01)
241 #define FSRTL_FSP_TOP_LEVEL_IRP (0x01)
242 #define FSRTL_CACHE_TOP_LEVEL_IRP (0x02)
243 #define FSRTL_MOD_WRITE_TOP_LEVEL_IRP (0x03)
244 #define FSRTL_FAST_IO_TOP_LEVEL_IRP (0x04)
245 #define FSRTL_MAX_TOP_LEVEL_IRP_FLAG (0x04)
247 #define FSRTL_VOLUME_DISMOUNT 1
248 #define FSRTL_VOLUME_DISMOUNT_FAILED 2
249 #define FSRTL_VOLUME_LOCK 3
250 #define FSRTL_VOLUME_LOCK_FAILED 4
251 #define FSRTL_VOLUME_UNLOCK 5
252 #define FSRTL_VOLUME_MOUNT 6
254 #define FSRTL_WILD_CHARACTER 0x08
256 #define FSRTL_FAT_LEGAL 0x01
257 #define FSRTL_HPFS_LEGAL 0x02
258 #define FSRTL_NTFS_LEGAL 0x04
259 #define FSRTL_WILD_CHARACTER 0x08
260 #define FSRTL_OLE_LEGAL 0x10
261 #define FSRTL_NTFS_STREAM_LEGAL 0x14
264 #define HARDWARE_PTE HARDWARE_PTE_X86
265 #define PHARDWARE_PTE PHARDWARE_PTE_X86
267 #define HARDWARE_PTE ULONG
268 #define PHARDWARE_PTE PULONG
271 #define IO_CHECK_CREATE_PARAMETERS 0x0200
272 #define IO_ATTACH_DEVICE 0x0400
274 #define IO_ATTACH_DEVICE_API 0x80000000
275 /* also in winnt.h */
276 #define IO_COMPLETION_QUERY_STATE 0x0001
277 #define IO_COMPLETION_MODIFY_STATE 0x0002
278 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
280 #define IO_FILE_OBJECT_NON_PAGED_POOL_CHARGE 64
281 #define IO_FILE_OBJECT_PAGED_POOL_CHARGE 1024
283 #define IO_TYPE_APC 18
284 #define IO_TYPE_DPC 19
285 #define IO_TYPE_DEVICE_QUEUE 20
286 #define IO_TYPE_EVENT_PAIR 21
287 #define IO_TYPE_INTERRUPT 22
288 #define IO_TYPE_PROFILE 23
290 #define IRP_BEING_VERIFIED 0x10
292 #define MAILSLOT_CLASS_FIRSTCLASS 1
293 #define MAILSLOT_CLASS_SECONDCLASS 2
295 #define MAILSLOT_SIZE_AUTO 0
297 #define MAP_PROCESS 1L
298 #define MAP_SYSTEM 2L
299 #define MEM_DOS_LIM 0x40000000
300 /* also in winnt.h */
301 #define MEM_IMAGE SEC_IMAGE
303 #define OB_TYPE_TYPE 1
304 #define OB_TYPE_DIRECTORY 2
305 #define OB_TYPE_SYMBOLIC_LINK 3
306 #define OB_TYPE_TOKEN 4
307 #define OB_TYPE_PROCESS 5
308 #define OB_TYPE_THREAD 6
309 #define OB_TYPE_EVENT 7
310 #define OB_TYPE_EVENT_PAIR 8
311 #define OB_TYPE_MUTANT 9
312 #define OB_TYPE_SEMAPHORE 10
313 #define OB_TYPE_TIMER 11
314 #define OB_TYPE_PROFILE 12
315 #define OB_TYPE_WINDOW_STATION 13
316 #define OB_TYPE_DESKTOP 14
317 #define OB_TYPE_SECTION 15
318 #define OB_TYPE_KEY 16
319 #define OB_TYPE_PORT 17
320 #define OB_TYPE_ADAPTER 18
321 #define OB_TYPE_CONTROLLER 19
322 #define OB_TYPE_DEVICE 20
323 #define OB_TYPE_DRIVER 21
324 #define OB_TYPE_IO_COMPLETION 22
325 #define OB_TYPE_FILE 23
328 #define PIN_EXCLUSIVE (2)
329 #define PIN_NO_READ (4)
330 #define PIN_IF_BCB (8)
332 #define PORT_CONNECT 0x0001
333 #define PORT_ALL_ACCESS (STANDARD_RIGHTS_ALL |\
335 /* also in winnt.h */
336 #define SEC_BASED 0x00200000
337 #define SEC_NO_CHANGE 0x00400000
338 #define SEC_FILE 0x00800000
339 #define SEC_IMAGE 0x01000000
340 #define SEC_VLM 0x02000000
341 #define SEC_RESERVE 0x04000000
342 #define SEC_COMMIT 0x08000000
343 #define SEC_NOCACHE 0x10000000
345 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
346 #define SECURITY_WORLD_RID (0x00000000L)
348 #define SID_REVISION 1
349 #define SID_MAX_SUB_AUTHORITIES 15
350 #define SID_RECOMMENDED_SUB_AUTHORITIES 1
352 #define TOKEN_ASSIGN_PRIMARY (0x0001)
353 #define TOKEN_DUPLICATE (0x0002)
354 #define TOKEN_IMPERSONATE (0x0004)
355 #define TOKEN_QUERY (0x0008)
356 #define TOKEN_QUERY_SOURCE (0x0010)
357 #define TOKEN_ADJUST_PRIVILEGES (0x0020)
358 #define TOKEN_ADJUST_GROUPS (0x0040)
359 #define TOKEN_ADJUST_DEFAULT (0x0080)
360 #define TOKEN_ADJUST_SESSIONID (0x0100)
362 #define TOKEN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
363 TOKEN_ASSIGN_PRIMARY |\
367 TOKEN_QUERY_SOURCE |\
368 TOKEN_ADJUST_PRIVILEGES |\
369 TOKEN_ADJUST_GROUPS |\
370 TOKEN_ADJUST_DEFAULT |\
371 TOKEN_ADJUST_SESSIONID)
373 #define TOKEN_READ (STANDARD_RIGHTS_READ |\
376 #define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\
377 TOKEN_ADJUST_PRIVILEGES |\
378 TOKEN_ADJUST_GROUPS |\
379 TOKEN_ADJUST_DEFAULT)
381 #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE)
383 #define TOKEN_SOURCE_LENGTH 8
386 #define TOKEN_HAS_TRAVERSE_PRIVILEGE 0x01
387 #define TOKEN_HAS_BACKUP_PRIVILEGE 0x02
388 #define TOKEN_HAS_RESTORE_PRIVILEGE 0x04
389 #define TOKEN_HAS_ADMIN_GROUP 0x08
390 #define TOKEN_IS_RESTRICTED 0x10
392 #define VACB_MAPPING_GRANULARITY (0x40000)
393 #define VACB_OFFSET_SHIFT (18)
395 #define SE_OWNER_DEFAULTED 0x0001
396 #define SE_GROUP_DEFAULTED 0x0002
397 #define SE_DACL_PRESENT 0x0004
398 #define SE_DACL_DEFAULTED 0x0008
399 #define SE_SACL_PRESENT 0x0010
400 #define SE_SACL_DEFAULTED 0x0020
401 #define SE_DACL_UNTRUSTED 0x0040
402 #define SE_SERVER_SECURITY 0x0080
403 #define SE_DACL_AUTO_INHERIT_REQ 0x0100
404 #define SE_SACL_AUTO_INHERIT_REQ 0x0200
405 #define SE_DACL_AUTO_INHERITED 0x0400
406 #define SE_SACL_AUTO_INHERITED 0x0800
407 #define SE_DACL_PROTECTED 0x1000
408 #define SE_SACL_PROTECTED 0x2000
409 #define SE_RM_CONTROL_VALID 0x4000
410 #define SE_SELF_RELATIVE 0x8000
412 #define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
413 #define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
414 #define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
415 #define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
416 #define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
417 #define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
418 #define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
419 #define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
420 #define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
422 #define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
423 #define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
424 #define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
426 #define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS)
427 #define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
428 #define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
431 #define FSCTL_MARK_AS_SYSTEM_HIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS)
432 #define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
433 #define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
434 #define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
435 #define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
436 #define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
438 #if (VER_PRODUCTBUILD >= 1381)
440 #define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
441 #define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
442 #define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS)
443 #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS)
444 #define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
445 #define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
446 #define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
447 #define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS)
449 #endif /* (VER_PRODUCTBUILD >= 1381) */
451 #if (VER_PRODUCTBUILD >= 2195)
453 #define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
454 #define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS)
455 #define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
457 #define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37, METHOD_NEITHER, FILE_ANY_ACCESS)
458 #define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_WRITE_DATA)
459 #define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
460 #define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_WRITE_DATA)
461 #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_WRITE_DATA)
462 #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
463 #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_WRITE_DATA)
464 #define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_READ_DATA)
465 #define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA)
466 #define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_READ_DATA)
467 #define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_WRITE_DATA)
468 #define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS)
469 #define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_WRITE_DATA)
470 #define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA)
471 #define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA)
472 #define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA)
473 #define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_BUFFERED, FILE_ANY_ACCESS)
474 #define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS)
475 #define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_ANY_ACCESS)
476 #define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_ANY_ACCESS)
477 #define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_READ_DATA)
478 #define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_READ_DATA)
479 #define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_READ_DATA)
480 #define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
481 #define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
482 #define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS)
483 #define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS)
484 #define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS)
485 #define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
486 #define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
487 #define FSCTL_NSS_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA)
488 #define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
489 #define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS)
490 #define FSCTL_NSS_RCONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA)
491 #define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA)
492 #define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
494 #endif /* (VER_PRODUCTBUILD >= 2195) */
496 #define FSCTL_MAILSLOT_PEEK CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
498 #define FSCTL_NETWORK_SET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
499 #define FSCTL_NETWORK_GET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
500 #define FSCTL_NETWORK_GET_CONNECTION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS)
501 #define FSCTL_NETWORK_ENUMERATE_CONNECTIONS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS)
502 #define FSCTL_NETWORK_DELETE_CONNECTION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS)
503 #define FSCTL_NETWORK_GET_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS)
504 #define FSCTL_NETWORK_SET_DOMAIN_NAME CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS)
505 #define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS)
507 #define FSCTL_PIPE_ASSIGN_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
508 #define FSCTL_PIPE_DISCONNECT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
509 #define FSCTL_PIPE_LISTEN CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
510 #define FSCTL_PIPE_PEEK CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
511 #define FSCTL_PIPE_QUERY_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
512 #define FSCTL_PIPE_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
513 #define FSCTL_PIPE_WAIT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
514 #define FSCTL_PIPE_IMPERSONATE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
515 #define FSCTL_PIPE_SET_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
516 #define FSCTL_PIPE_QUERY_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
517 #define FSCTL_PIPE_INTERNAL_READ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
518 #define FSCTL_PIPE_INTERNAL_WRITE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
519 #define FSCTL_PIPE_INTERNAL_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
520 #define FSCTL_PIPE_INTERNAL_READ_OVFLOW CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
522 #define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS)
524 typedef PVOID OPLOCK
, *POPLOCK
;
526 typedef struct _CACHE_MANAGER_CALLBACKS
*PCACHE_MANAGER_CALLBACKS
;
527 typedef struct _EPROCESS_QUOTA_BLOCK
*PEPROCESS_QUOTA_BLOCK
;
528 typedef struct _FILE_GET_QUOTA_INFORMATION
*PFILE_GET_QUOTA_INFORMATION
;
529 typedef struct _HANDLE_TABLE
*PHANDLE_TABLE
;
530 typedef struct _KPROCESS
*PKPROCESS
;
531 typedef struct _KQUEUE
*PKQUEUE
;
532 typedef struct _KTRAP_FRAME
*PKTRAP_FRAME
;
533 typedef struct _MMWSL
*PMMWSL
;
534 typedef struct _OBJECT_DIRECTORY
*POBJECT_DIRECTORY
;
535 typedef struct _PAGEFAULT_HISTORY
*PPAGEFAULT_HISTORY
;
536 typedef struct _PS_IMPERSONATION_INFORMATION
*PPS_IMPERSONATION_INFORMATION
;
537 typedef struct _SECTION_OBJECT
*PSECTION_OBJECT
;
538 typedef struct _SHARED_CACHE_MAP
*PSHARED_CACHE_MAP
;
539 typedef struct _VACB
*PVACB
;
540 typedef struct _VAD_HEADER
*PVAD_HEADER
;
542 typedef struct _NOTIFY_SYNC
555 } NOTIFY_SYNC
, * PNOTIFY_SYNC
;
557 typedef enum _FAST_IO_POSSIBLE
{
563 typedef enum _FILE_STORAGE_TYPE
{
564 StorageTypeDefault
= 1,
565 StorageTypeDirectory
,
567 StorageTypeJunctionPoint
,
569 StorageTypeStructuredStorage
,
570 StorageTypeEmbedding
,
574 typedef enum _OBJECT_INFO_CLASS
{
582 typedef struct _KAPC_STATE
{
583 LIST_ENTRY ApcListHead
[2];
585 BOOLEAN KernelApcInProgress
;
586 BOOLEAN KernelApcPending
;
587 BOOLEAN UserApcPending
;
588 } KAPC_STATE
, *PKAPC_STATE
, *RESTRICTED_POINTER PRKAPC_STATE
;
590 #if (VER_PRODUCTBUILD >= 2600)
592 typedef struct _MMSUPPORT_FLAGS
{
593 ULONG SessionSpace
: 1;
594 ULONG BeingTrimmed
: 1;
595 ULONG SessionLeader
: 1;
597 ULONG WorkingSetHard
: 1;
598 ULONG AddressSpaceBeingDeleted
: 1;
599 ULONG Available
: 10;
600 ULONG AllowWorkingSetAdjustment
: 8;
601 ULONG MemoryPriority
: 8;
602 } MMSUPPORT_FLAGS
, *PMMSUPPORT_FLAGS
;
606 typedef struct _MMSUPPORT_FLAGS
{
607 ULONG SessionSpace
: 1;
608 ULONG BeingTrimmed
: 1;
609 ULONG ProcessInSession
: 1;
610 ULONG SessionLeader
: 1;
612 ULONG WorkingSetHard
: 1;
613 ULONG WriteWatch
: 1;
615 } MMSUPPORT_FLAGS
, *PMMSUPPORT_FLAGS
;
619 #if (VER_PRODUCTBUILD >= 2600)
621 typedef struct _MMSUPPORT
{
622 LARGE_INTEGER LastTrimTime
;
623 MMSUPPORT_FLAGS Flags
;
624 ULONG PageFaultCount
;
625 ULONG PeakWorkingSetSize
;
626 ULONG WorkingSetSize
;
627 ULONG MinimumWorkingSetSize
;
628 ULONG MaximumWorkingSetSize
;
629 PMMWSL VmWorkingSetList
;
630 LIST_ENTRY WorkingSetExpansionLinks
;
632 ULONG NextEstimationSlot
;
634 ULONG EstimatedAvailable
;
635 ULONG GrowthSinceLastEstimate
;
636 } MMSUPPORT
, *PMMSUPPORT
;
640 typedef struct _MMSUPPORT
{
641 LARGE_INTEGER LastTrimTime
;
642 ULONG LastTrimFaultCount
;
643 ULONG PageFaultCount
;
644 ULONG PeakWorkingSetSize
;
645 ULONG WorkingSetSize
;
646 ULONG MinimumWorkingSetSize
;
647 ULONG MaximumWorkingSetSize
;
648 PMMWSL VmWorkingSetList
;
649 LIST_ENTRY WorkingSetExpansionLinks
;
650 BOOLEAN AllowWorkingSetAdjustment
;
651 BOOLEAN AddressSpaceBeingDeleted
;
652 UCHAR ForegroundSwitchCount
;
653 UCHAR MemoryPriority
;
654 #if (VER_PRODUCTBUILD >= 2195)
657 MMSUPPORT_FLAGS Flags
;
660 ULONG NextEstimationSlot
;
662 ULONG EstimatedAvailable
;
663 ULONG GrowthSinceLastEstimate
;
664 #endif /* (VER_PRODUCTBUILD >= 2195) */
665 } MMSUPPORT
, *PMMSUPPORT
;
669 typedef struct _SE_AUDIT_PROCESS_CREATION_INFO
{
670 POBJECT_NAME_INFORMATION ImageFileName
;
671 } SE_AUDIT_PROCESS_CREATION_INFO
, *PSE_AUDIT_PROCESS_CREATION_INFO
;
673 typedef struct _BITMAP_RANGE
{
675 LARGE_INTEGER BasePage
;
676 ULONG FirstDirtyPage
;
680 } BITMAP_RANGE
, *PBITMAP_RANGE
;
682 typedef struct _CACHE_UNINITIALIZE_EVENT
{
683 struct _CACHE_UNINITIALIZE_EVENT
*Next
;
685 } CACHE_UNINITIALIZE_EVENT
, *PCACHE_UNINITIALIZE_EVENT
;
687 typedef struct _CC_FILE_SIZES
{
688 LARGE_INTEGER AllocationSize
;
689 LARGE_INTEGER FileSize
;
690 LARGE_INTEGER ValidDataLength
;
691 } CC_FILE_SIZES
, *PCC_FILE_SIZES
;
693 typedef struct _COMPRESSED_DATA_INFO
{
694 USHORT CompressionFormatAndEngine
;
695 UCHAR CompressionUnitShift
;
699 USHORT NumberOfChunks
;
700 ULONG CompressedChunkSizes
[ANYSIZE_ARRAY
];
701 } COMPRESSED_DATA_INFO
, *PCOMPRESSED_DATA_INFO
;
703 typedef struct _DEVICE_MAP
{
704 POBJECT_DIRECTORY DosDevicesDirectory
;
705 POBJECT_DIRECTORY GlobalDosDevicesDirectory
;
706 ULONG ReferenceCount
;
709 } DEVICE_MAP
, *PDEVICE_MAP
;
711 #if (VER_PRODUCTBUILD >= 2600)
713 typedef struct _EX_FAST_REF
{
714 _ANONYMOUS_UNION
union {
719 } EX_FAST_REF
, *PEX_FAST_REF
;
721 typedef struct _EX_PUSH_LOCK
{
722 _ANONYMOUS_UNION
union {
723 _ANONYMOUS_STRUCT
struct {
731 } EX_PUSH_LOCK
, *PEX_PUSH_LOCK
;
733 #define EX_RUNDOWN_ACTIVE 0x1
734 #define EX_RUNDOWN_COUNT_SHIFT 0x1
735 #define EX_RUNDOWN_COUNT_INC (1 << EX_RUNDOWN_COUNT_SHIFT)
737 typedef struct _EX_RUNDOWN_REF
{
738 _ANONYMOUS_UNION
union {
742 } EX_RUNDOWN_REF
, *PEX_RUNDOWN_REF
;
746 typedef struct _EPROCESS_QUOTA_ENTRY
{
751 } EPROCESS_QUOTA_ENTRY
, *PEPROCESS_QUOTA_ENTRY
;
753 typedef struct _EPROCESS_QUOTA_BLOCK
{
754 EPROCESS_QUOTA_ENTRY QuotaEntry
[3];
755 LIST_ENTRY QuotaList
;
756 ULONG ReferenceCount
;
758 } EPROCESS_QUOTA_BLOCK
, *PEPROCESS_QUOTA_BLOCK
;
760 typedef struct _FILE_ACCESS_INFORMATION
{
761 ACCESS_MASK AccessFlags
;
762 } FILE_ACCESS_INFORMATION
, *PFILE_ACCESS_INFORMATION
;
764 typedef struct _FILE_ALLOCATION_INFORMATION
{
765 LARGE_INTEGER AllocationSize
;
766 } FILE_ALLOCATION_INFORMATION
, *PFILE_ALLOCATION_INFORMATION
;
768 typedef struct _FILE_BOTH_DIR_INFORMATION
{
769 ULONG NextEntryOffset
;
771 LARGE_INTEGER CreationTime
;
772 LARGE_INTEGER LastAccessTime
;
773 LARGE_INTEGER LastWriteTime
;
774 LARGE_INTEGER ChangeTime
;
775 LARGE_INTEGER EndOfFile
;
776 LARGE_INTEGER AllocationSize
;
777 ULONG FileAttributes
;
778 ULONG FileNameLength
;
780 CCHAR ShortNameLength
;
783 } FILE_BOTH_DIR_INFORMATION
, *PFILE_BOTH_DIR_INFORMATION
;
785 typedef struct _FILE_COMPLETION_INFORMATION
{
788 } FILE_COMPLETION_INFORMATION
, *PFILE_COMPLETION_INFORMATION
;
790 typedef struct _FILE_COMPRESSION_INFORMATION
{
791 LARGE_INTEGER CompressedFileSize
;
792 USHORT CompressionFormat
;
793 UCHAR CompressionUnitShift
;
797 } FILE_COMPRESSION_INFORMATION
, *PFILE_COMPRESSION_INFORMATION
;
799 typedef struct _FILE_COPY_ON_WRITE_INFORMATION
{
800 BOOLEAN ReplaceIfExists
;
801 HANDLE RootDirectory
;
802 ULONG FileNameLength
;
804 } FILE_COPY_ON_WRITE_INFORMATION
, *PFILE_COPY_ON_WRITE_INFORMATION
;
806 typedef struct _FILE_DIRECTORY_INFORMATION
{
807 ULONG NextEntryOffset
;
809 LARGE_INTEGER CreationTime
;
810 LARGE_INTEGER LastAccessTime
;
811 LARGE_INTEGER LastWriteTime
;
812 LARGE_INTEGER ChangeTime
;
813 LARGE_INTEGER EndOfFile
;
814 LARGE_INTEGER AllocationSize
;
815 ULONG FileAttributes
;
816 ULONG FileNameLength
;
818 } FILE_DIRECTORY_INFORMATION
, *PFILE_DIRECTORY_INFORMATION
;
820 typedef struct _FILE_FULL_DIRECTORY_INFORMATION
{
821 ULONG NextEntryOffset
;
823 LARGE_INTEGER CreationTime
;
824 LARGE_INTEGER LastAccessTime
;
825 LARGE_INTEGER LastWriteTime
;
826 LARGE_INTEGER ChangeTime
;
827 LARGE_INTEGER EndOfFile
;
828 LARGE_INTEGER AllocationSize
;
829 ULONG FileAttributes
;
830 ULONG FileNameLength
;
833 } FILE_FULL_DIRECTORY_INFORMATION
, *PFILE_FULL_DIRECTORY_INFORMATION
;
835 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION
{
836 ULONG NextEntryOffset
;
838 LARGE_INTEGER CreationTime
;
839 LARGE_INTEGER LastAccessTime
;
840 LARGE_INTEGER LastWriteTime
;
841 LARGE_INTEGER ChangeTime
;
842 LARGE_INTEGER EndOfFile
;
843 LARGE_INTEGER AllocationSize
;
844 ULONG FileAttributes
;
845 ULONG FileNameLength
;
847 CHAR ShortNameLength
;
850 } FILE_BOTH_DIRECTORY_INFORMATION
, *PFILE_BOTH_DIRECTORY_INFORMATION
;
852 typedef struct _FILE_EA_INFORMATION
{
854 } FILE_EA_INFORMATION
, *PFILE_EA_INFORMATION
;
856 typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
{
857 ULONG FileSystemAttributes
;
858 ULONG MaximumComponentNameLength
;
859 ULONG FileSystemNameLength
;
860 WCHAR FileSystemName
[1];
861 } FILE_FS_ATTRIBUTE_INFORMATION
, *PFILE_FS_ATTRIBUTE_INFORMATION
;
863 typedef struct _FILE_FS_CONTROL_INFORMATION
{
864 LARGE_INTEGER FreeSpaceStartFiltering
;
865 LARGE_INTEGER FreeSpaceThreshold
;
866 LARGE_INTEGER FreeSpaceStopFiltering
;
867 LARGE_INTEGER DefaultQuotaThreshold
;
868 LARGE_INTEGER DefaultQuotaLimit
;
869 ULONG FileSystemControlFlags
;
870 } FILE_FS_CONTROL_INFORMATION
, *PFILE_FS_CONTROL_INFORMATION
;
872 typedef struct _FILE_FS_FULL_SIZE_INFORMATION
{
873 LARGE_INTEGER TotalAllocationUnits
;
874 LARGE_INTEGER CallerAvailableAllocationUnits
;
875 LARGE_INTEGER ActualAvailableAllocationUnits
;
876 ULONG SectorsPerAllocationUnit
;
877 ULONG BytesPerSector
;
878 } FILE_FS_FULL_SIZE_INFORMATION
, *PFILE_FS_FULL_SIZE_INFORMATION
;
880 typedef struct _FILE_FS_LABEL_INFORMATION
{
881 ULONG VolumeLabelLength
;
882 WCHAR VolumeLabel
[1];
883 } FILE_FS_LABEL_INFORMATION
, *PFILE_FS_LABEL_INFORMATION
;
885 #if (VER_PRODUCTBUILD >= 2195)
887 typedef struct _FILE_FS_OBJECT_ID_INFORMATION
{
889 UCHAR ExtendedInfo
[48];
890 } FILE_FS_OBJECT_ID_INFORMATION
, *PFILE_FS_OBJECT_ID_INFORMATION
;
892 #endif /* (VER_PRODUCTBUILD >= 2195) */
894 typedef struct _FILE_FS_SIZE_INFORMATION
{
895 LARGE_INTEGER TotalAllocationUnits
;
896 LARGE_INTEGER AvailableAllocationUnits
;
897 ULONG SectorsPerAllocationUnit
;
898 ULONG BytesPerSector
;
899 } FILE_FS_SIZE_INFORMATION
, *PFILE_FS_SIZE_INFORMATION
;
901 typedef struct _FILE_FS_VOLUME_INFORMATION
{
902 LARGE_INTEGER VolumeCreationTime
;
903 ULONG VolumeSerialNumber
;
904 ULONG VolumeLabelLength
;
905 BOOLEAN SupportsObjects
;
906 WCHAR VolumeLabel
[1];
907 } FILE_FS_VOLUME_INFORMATION
, *PFILE_FS_VOLUME_INFORMATION
;
909 typedef struct _FILE_FULL_DIR_INFORMATION
{
910 ULONG NextEntryOffset
;
912 LARGE_INTEGER CreationTime
;
913 LARGE_INTEGER LastAccessTime
;
914 LARGE_INTEGER LastWriteTime
;
915 LARGE_INTEGER ChangeTime
;
916 LARGE_INTEGER EndOfFile
;
917 LARGE_INTEGER AllocationSize
;
918 ULONG FileAttributes
;
919 ULONG FileNameLength
;
922 } FILE_FULL_DIR_INFORMATION
, *PFILE_FULL_DIR_INFORMATION
;
924 typedef struct _FILE_GET_EA_INFORMATION
{
925 ULONG NextEntryOffset
;
928 } FILE_GET_EA_INFORMATION
, *PFILE_GET_EA_INFORMATION
;
930 typedef struct _FILE_GET_QUOTA_INFORMATION
{
931 ULONG NextEntryOffset
;
934 } FILE_GET_QUOTA_INFORMATION
, *PFILE_GET_QUOTA_INFORMATION
;
936 typedef struct _FILE_INTERNAL_INFORMATION
{
937 LARGE_INTEGER IndexNumber
;
938 } FILE_INTERNAL_INFORMATION
, *PFILE_INTERNAL_INFORMATION
;
940 typedef struct _FILE_LINK_INFORMATION
{
941 BOOLEAN ReplaceIfExists
;
942 HANDLE RootDirectory
;
943 ULONG FileNameLength
;
945 } FILE_LINK_INFORMATION
, *PFILE_LINK_INFORMATION
;
947 typedef struct _FILE_LOCK_INFO
{
948 LARGE_INTEGER StartingByte
;
949 LARGE_INTEGER Length
;
950 BOOLEAN ExclusiveLock
;
952 PFILE_OBJECT FileObject
;
954 LARGE_INTEGER EndingByte
;
955 } FILE_LOCK_INFO
, *PFILE_LOCK_INFO
;
957 /* raw internal file lock struct returned from FsRtlGetNextFileLock */
958 typedef struct _FILE_SHARED_LOCK_ENTRY
{
961 FILE_LOCK_INFO FileLock
;
962 } FILE_SHARED_LOCK_ENTRY
, *PFILE_SHARED_LOCK_ENTRY
;
964 /* raw internal file lock struct returned from FsRtlGetNextFileLock */
965 typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY
{
966 LIST_ENTRY ListEntry
;
969 FILE_LOCK_INFO FileLock
;
970 } FILE_EXCLUSIVE_LOCK_ENTRY
, *PFILE_EXCLUSIVE_LOCK_ENTRY
;
972 typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE
) (
977 typedef VOID (NTAPI
*PUNLOCK_ROUTINE
) (
979 IN PFILE_LOCK_INFO FileLockInfo
982 typedef struct _FILE_LOCK
{
983 PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine
;
984 PUNLOCK_ROUTINE UnlockRoutine
;
985 BOOLEAN FastIoIsQuestionable
;
987 PVOID LockInformation
;
988 FILE_LOCK_INFO LastReturnedLockInfo
;
989 PVOID LastReturnedLock
;
990 } FILE_LOCK
, *PFILE_LOCK
;
992 typedef struct _FILE_MAILSLOT_PEEK_BUFFER
{
993 ULONG ReadDataAvailable
;
994 ULONG NumberOfMessages
;
996 } FILE_MAILSLOT_PEEK_BUFFER
, *PFILE_MAILSLOT_PEEK_BUFFER
;
998 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION
{
999 ULONG MaximumMessageSize
;
1000 ULONG MailslotQuota
;
1001 ULONG NextMessageSize
;
1002 ULONG MessagesAvailable
;
1003 LARGE_INTEGER ReadTimeout
;
1004 } FILE_MAILSLOT_QUERY_INFORMATION
, *PFILE_MAILSLOT_QUERY_INFORMATION
;
1006 typedef struct _FILE_MAILSLOT_SET_INFORMATION
{
1007 LARGE_INTEGER ReadTimeout
;
1008 } FILE_MAILSLOT_SET_INFORMATION
, *PFILE_MAILSLOT_SET_INFORMATION
;
1010 typedef struct _FILE_MODE_INFORMATION
{
1012 } FILE_MODE_INFORMATION
, *PFILE_MODE_INFORMATION
;
1014 typedef struct _FILE_ALL_INFORMATION
{
1015 FILE_BASIC_INFORMATION BasicInformation
;
1016 FILE_STANDARD_INFORMATION StandardInformation
;
1017 FILE_INTERNAL_INFORMATION InternalInformation
;
1018 FILE_EA_INFORMATION EaInformation
;
1019 FILE_ACCESS_INFORMATION AccessInformation
;
1020 FILE_POSITION_INFORMATION PositionInformation
;
1021 FILE_MODE_INFORMATION ModeInformation
;
1022 FILE_ALIGNMENT_INFORMATION AlignmentInformation
;
1023 FILE_NAME_INFORMATION NameInformation
;
1024 } FILE_ALL_INFORMATION
, *PFILE_ALL_INFORMATION
;
1026 typedef struct _FILE_NAMES_INFORMATION
{
1027 ULONG NextEntryOffset
;
1029 ULONG FileNameLength
;
1031 } FILE_NAMES_INFORMATION
, *PFILE_NAMES_INFORMATION
;
1033 typedef struct _FILE_OBJECTID_INFORMATION
{
1034 LONGLONG FileReference
;
1036 _ANONYMOUS_UNION
union {
1038 UCHAR BirthVolumeId
[16];
1039 UCHAR BirthObjectId
[16];
1042 UCHAR ExtendedInfo
[48];
1044 } FILE_OBJECTID_INFORMATION
, *PFILE_OBJECTID_INFORMATION
;
1046 typedef struct _FILE_OLE_CLASSID_INFORMATION
{
1048 } FILE_OLE_CLASSID_INFORMATION
, *PFILE_OLE_CLASSID_INFORMATION
;
1050 typedef struct _FILE_OLE_ALL_INFORMATION
{
1051 FILE_BASIC_INFORMATION BasicInformation
;
1052 FILE_STANDARD_INFORMATION StandardInformation
;
1053 FILE_INTERNAL_INFORMATION InternalInformation
;
1054 FILE_EA_INFORMATION EaInformation
;
1055 FILE_ACCESS_INFORMATION AccessInformation
;
1056 FILE_POSITION_INFORMATION PositionInformation
;
1057 FILE_MODE_INFORMATION ModeInformation
;
1058 FILE_ALIGNMENT_INFORMATION AlignmentInformation
;
1061 LARGE_INTEGER SecurityChangeTime
;
1062 FILE_OLE_CLASSID_INFORMATION OleClassIdInformation
;
1063 FILE_OBJECTID_INFORMATION ObjectIdInformation
;
1064 FILE_STORAGE_TYPE StorageType
;
1067 ULONG NumberOfStreamReferences
;
1070 BOOLEAN ContentIndexDisable
;
1071 BOOLEAN InheritContentIndexDisable
;
1072 FILE_NAME_INFORMATION NameInformation
;
1073 } FILE_OLE_ALL_INFORMATION
, *PFILE_OLE_ALL_INFORMATION
;
1075 typedef struct _FILE_OLE_DIR_INFORMATION
{
1076 ULONG NextEntryOffset
;
1078 LARGE_INTEGER CreationTime
;
1079 LARGE_INTEGER LastAccessTime
;
1080 LARGE_INTEGER LastWriteTime
;
1081 LARGE_INTEGER ChangeTime
;
1082 LARGE_INTEGER EndOfFile
;
1083 LARGE_INTEGER AllocationSize
;
1084 ULONG FileAttributes
;
1085 ULONG FileNameLength
;
1086 FILE_STORAGE_TYPE StorageType
;
1089 BOOLEAN ContentIndexDisable
;
1090 BOOLEAN InheritContentIndexDisable
;
1092 } FILE_OLE_DIR_INFORMATION
, *PFILE_OLE_DIR_INFORMATION
;
1094 typedef struct _FILE_OLE_INFORMATION
{
1095 LARGE_INTEGER SecurityChangeTime
;
1096 FILE_OLE_CLASSID_INFORMATION OleClassIdInformation
;
1097 FILE_OBJECTID_INFORMATION ObjectIdInformation
;
1098 FILE_STORAGE_TYPE StorageType
;
1100 BOOLEAN ContentIndexDisable
;
1101 BOOLEAN InheritContentIndexDisable
;
1102 } FILE_OLE_INFORMATION
, *PFILE_OLE_INFORMATION
;
1104 typedef struct _FILE_OLE_STATE_BITS_INFORMATION
{
1106 ULONG StateBitsMask
;
1107 } FILE_OLE_STATE_BITS_INFORMATION
, *PFILE_OLE_STATE_BITS_INFORMATION
;
1109 typedef struct _FILE_PIPE_ASSIGN_EVENT_BUFFER
{
1112 } FILE_PIPE_ASSIGN_EVENT_BUFFER
, *PFILE_PIPE_ASSIGN_EVENT_BUFFER
;
1114 typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER
{
1115 PVOID ClientSession
;
1116 PVOID ClientProcess
;
1117 } FILE_PIPE_CLIENT_PROCESS_BUFFER
, *PFILE_PIPE_CLIENT_PROCESS_BUFFER
;
1119 typedef struct _FILE_PIPE_EVENT_BUFFER
{
1120 ULONG NamedPipeState
;
1124 ULONG NumberRequests
;
1125 } FILE_PIPE_EVENT_BUFFER
, *PFILE_PIPE_EVENT_BUFFER
;
1127 typedef struct _FILE_PIPE_PEEK_BUFFER
1129 ULONG NamedPipeState
;
1130 ULONG ReadDataAvailable
;
1131 ULONG NumberOfMessages
;
1132 ULONG MessageLength
;
1134 } FILE_PIPE_PEEK_BUFFER
, *PFILE_PIPE_PEEK_BUFFER
;
1136 typedef struct _FILE_PIPE_INFORMATION
{
1138 ULONG CompletionMode
;
1139 } FILE_PIPE_INFORMATION
, *PFILE_PIPE_INFORMATION
;
1141 typedef struct _FILE_PIPE_LOCAL_INFORMATION
{
1142 ULONG NamedPipeType
;
1143 ULONG NamedPipeConfiguration
;
1144 ULONG MaximumInstances
;
1145 ULONG CurrentInstances
;
1147 ULONG ReadDataAvailable
;
1148 ULONG OutboundQuota
;
1149 ULONG WriteQuotaAvailable
;
1150 ULONG NamedPipeState
;
1152 } FILE_PIPE_LOCAL_INFORMATION
, *PFILE_PIPE_LOCAL_INFORMATION
;
1154 typedef struct _FILE_PIPE_REMOTE_INFORMATION
{
1155 LARGE_INTEGER CollectDataTime
;
1156 ULONG MaximumCollectionCount
;
1157 } FILE_PIPE_REMOTE_INFORMATION
, *PFILE_PIPE_REMOTE_INFORMATION
;
1159 typedef struct _FILE_PIPE_WAIT_FOR_BUFFER
{
1160 LARGE_INTEGER Timeout
;
1162 BOOLEAN TimeoutSpecified
;
1164 } FILE_PIPE_WAIT_FOR_BUFFER
, *PFILE_PIPE_WAIT_FOR_BUFFER
;
1166 typedef struct _FILE_QUOTA_INFORMATION
{
1167 ULONG NextEntryOffset
;
1169 LARGE_INTEGER ChangeTime
;
1170 LARGE_INTEGER QuotaUsed
;
1171 LARGE_INTEGER QuotaThreshold
;
1172 LARGE_INTEGER QuotaLimit
;
1174 } FILE_QUOTA_INFORMATION
, *PFILE_QUOTA_INFORMATION
;
1176 typedef struct _FILE_RENAME_INFORMATION
{
1177 BOOLEAN ReplaceIfExists
;
1178 HANDLE RootDirectory
;
1179 ULONG FileNameLength
;
1181 } FILE_RENAME_INFORMATION
, *PFILE_RENAME_INFORMATION
;
1183 typedef struct _FILE_STREAM_INFORMATION
{
1184 ULONG NextEntryOffset
;
1185 ULONG StreamNameLength
;
1186 LARGE_INTEGER StreamSize
;
1187 LARGE_INTEGER StreamAllocationSize
;
1188 WCHAR StreamName
[1];
1189 } FILE_STREAM_INFORMATION
, *PFILE_STREAM_INFORMATION
;
1191 typedef struct _FILE_TRACKING_INFORMATION
{
1192 HANDLE DestinationFile
;
1193 ULONG ObjectInformationLength
;
1194 CHAR ObjectInformation
[1];
1195 } FILE_TRACKING_INFORMATION
, *PFILE_TRACKING_INFORMATION
;
1197 #if (VER_PRODUCTBUILD >= 2195)
1198 typedef struct _FILE_ZERO_DATA_INFORMATION
{
1199 LARGE_INTEGER FileOffset
;
1200 LARGE_INTEGER BeyondFinalZero
;
1201 } FILE_ZERO_DATA_INFORMATION
, *PFILE_ZERO_DATA_INFORMATION
;
1203 typedef struct FILE_ALLOCATED_RANGE_BUFFER
{
1204 LARGE_INTEGER FileOffset
;
1205 LARGE_INTEGER Length
;
1206 } FILE_ALLOCATED_RANGE_BUFFER
, *PFILE_ALLOCATED_RANGE_BUFFER
;
1207 #endif /* (VER_PRODUCTBUILD >= 2195) */
1209 typedef struct _FSRTL_COMMON_FCB_HEADER
{
1210 CSHORT NodeTypeCode
;
1211 CSHORT NodeByteSize
;
1213 UCHAR IsFastIoPossible
;
1214 #if (VER_PRODUCTBUILD >= 1381)
1217 #endif /* (VER_PRODUCTBUILD >= 1381) */
1218 PERESOURCE Resource
;
1219 PERESOURCE PagingIoResource
;
1220 LARGE_INTEGER AllocationSize
;
1221 LARGE_INTEGER FileSize
;
1222 LARGE_INTEGER ValidDataLength
;
1223 } FSRTL_COMMON_FCB_HEADER
, *PFSRTL_COMMON_FCB_HEADER
;
1225 #if (VER_PRODUCTBUILD >= 2600)
1227 typedef struct _FSRTL_ADVANCED_FCB_HEADER
{
1228 CSHORT NodeTypeCode
;
1229 CSHORT NodeByteSize
;
1231 UCHAR IsFastIoPossible
;
1234 PERESOURCE Resource
;
1235 PERESOURCE PagingIoResource
;
1236 LARGE_INTEGER AllocationSize
;
1237 LARGE_INTEGER FileSize
;
1238 LARGE_INTEGER ValidDataLength
;
1239 PFAST_MUTEX FastMutex
;
1240 LIST_ENTRY FilterContexts
;
1241 } FSRTL_ADVANCED_FCB_HEADER
, *PFSRTL_ADVANCED_FCB_HEADER
;
1243 typedef struct _FSRTL_PER_STREAM_CONTEXT
{
1247 PFREE_FUNCTION FreeCallback
;
1248 } FSRTL_PER_STREAM_CONTEXT
, *PFSRTL_PER_STREAM_CONTEXT
;
1250 #endif /* (VER_PRODUCTBUILD >= 2600) */
1252 typedef struct _GENERATE_NAME_CONTEXT
{
1254 BOOLEAN CheckSumInserted
;
1256 WCHAR NameBuffer
[8];
1257 ULONG ExtensionLength
;
1258 WCHAR ExtensionBuffer
[4];
1259 ULONG LastIndexValue
;
1260 } GENERATE_NAME_CONTEXT
, *PGENERATE_NAME_CONTEXT
;
1262 typedef struct _MAPPING_PAIR
{
1265 } MAPPING_PAIR
, *PMAPPING_PAIR
;
1267 typedef struct _GET_RETRIEVAL_DESCRIPTOR
{
1268 ULONG NumberOfPairs
;
1270 MAPPING_PAIR Pair
[1];
1271 } GET_RETRIEVAL_DESCRIPTOR
, *PGET_RETRIEVAL_DESCRIPTOR
;
1273 typedef struct _IO_CLIENT_EXTENSION
{
1274 struct _IO_CLIENT_EXTENSION
*NextExtension
;
1275 PVOID ClientIdentificationAddress
;
1276 } IO_CLIENT_EXTENSION
, *PIO_CLIENT_EXTENSION
;
1278 typedef struct _IO_COMPLETION_BASIC_INFORMATION
{
1280 } IO_COMPLETION_BASIC_INFORMATION
, *PIO_COMPLETION_BASIC_INFORMATION
;
1282 typedef struct _KQUEUE
{
1283 DISPATCHER_HEADER Header
;
1284 LIST_ENTRY EntryListHead
;
1287 LIST_ENTRY ThreadListHead
;
1288 } KQUEUE
, *PKQUEUE
, *RESTRICTED_POINTER PRKQUEUE
;
1290 typedef struct _MBCB
{
1291 CSHORT NodeTypeCode
;
1292 CSHORT NodeIsInZone
;
1296 LIST_ENTRY BitmapRanges
;
1297 LONGLONG ResumeWritePage
;
1298 BITMAP_RANGE BitmapRange1
;
1299 BITMAP_RANGE BitmapRange2
;
1300 BITMAP_RANGE BitmapRange3
;
1303 typedef struct _MOVEFILE_DESCRIPTOR
{
1306 LARGE_INTEGER StartVcn
;
1307 LARGE_INTEGER TargetLcn
;
1310 } MOVEFILE_DESCRIPTOR
, *PMOVEFILE_DESCRIPTOR
;
1312 typedef struct _OBJECT_BASIC_INFO
{
1314 ACCESS_MASK GrantedAccess
;
1316 ULONG ReferenceCount
;
1317 ULONG PagedPoolUsage
;
1318 ULONG NonPagedPoolUsage
;
1320 ULONG NameInformationLength
;
1321 ULONG TypeInformationLength
;
1322 ULONG SecurityDescriptorLength
;
1323 LARGE_INTEGER CreateTime
;
1324 } OBJECT_BASIC_INFO
, *POBJECT_BASIC_INFO
;
1326 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFO
{
1328 BOOLEAN ProtectFromClose
;
1329 } OBJECT_HANDLE_ATTRIBUTE_INFO
, *POBJECT_HANDLE_ATTRIBUTE_INFO
;
1331 typedef struct _OBJECT_NAME_INFO
{
1332 UNICODE_STRING ObjectName
;
1333 WCHAR ObjectNameBuffer
[1];
1334 } OBJECT_NAME_INFO
, *POBJECT_NAME_INFO
;
1336 typedef struct _OBJECT_PROTECTION_INFO
{
1338 BOOLEAN ProtectHandle
;
1339 } OBJECT_PROTECTION_INFO
, *POBJECT_PROTECTION_INFO
;
1341 typedef struct _OBJECT_TYPE_INFO
{
1342 UNICODE_STRING ObjectTypeName
;
1343 UCHAR Unknown
[0x58];
1344 WCHAR ObjectTypeNameBuffer
[1];
1345 } OBJECT_TYPE_INFO
, *POBJECT_TYPE_INFO
;
1347 typedef struct _OBJECT_ALL_TYPES_INFO
{
1348 ULONG NumberOfObjectTypes
;
1349 OBJECT_TYPE_INFO ObjectsTypeInfo
[1];
1350 } OBJECT_ALL_TYPES_INFO
, *POBJECT_ALL_TYPES_INFO
;
1353 typedef struct _PATHNAME_BUFFER
{
1354 ULONG PathNameLength
;
1356 } PATHNAME_BUFFER
, *PPATHNAME_BUFFER
;
1358 #if (VER_PRODUCTBUILD >= 2600)
1360 typedef struct _PRIVATE_CACHE_MAP_FLAGS
{
1362 ULONG ReadAheadActive
: 1;
1363 ULONG ReadAheadEnabled
: 1;
1364 ULONG Available
: 14;
1365 } PRIVATE_CACHE_MAP_FLAGS
, *PPRIVATE_CACHE_MAP_FLAGS
;
1367 typedef struct _PRIVATE_CACHE_MAP
{
1368 _ANONYMOUS_UNION
union {
1369 CSHORT NodeTypeCode
;
1370 PRIVATE_CACHE_MAP_FLAGS Flags
;
1373 ULONG ReadAheadMask
;
1374 PFILE_OBJECT FileObject
;
1375 LARGE_INTEGER FileOffset1
;
1376 LARGE_INTEGER BeyondLastByte1
;
1377 LARGE_INTEGER FileOffset2
;
1378 LARGE_INTEGER BeyondLastByte2
;
1379 LARGE_INTEGER ReadAheadOffset
[2];
1380 ULONG ReadAheadLength
[2];
1381 KSPIN_LOCK ReadAheadSpinLock
;
1382 LIST_ENTRY PrivateLinks
;
1383 } PRIVATE_CACHE_MAP
, *PPRIVATE_CACHE_MAP
;
1387 typedef struct _PS_IMPERSONATION_INFORMATION
{
1388 PACCESS_TOKEN Token
;
1390 BOOLEAN EffectiveOnly
;
1391 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;
1392 } PS_IMPERSONATION_INFORMATION
, *PPS_IMPERSONATION_INFORMATION
;
1394 typedef struct _PUBLIC_BCB
{
1395 CSHORT NodeTypeCode
;
1396 CSHORT NodeByteSize
;
1398 LARGE_INTEGER MappedFileOffset
;
1399 } PUBLIC_BCB
, *PPUBLIC_BCB
;
1401 typedef struct _QUERY_PATH_REQUEST
{
1402 ULONG PathNameLength
;
1403 PIO_SECURITY_CONTEXT SecurityContext
;
1404 WCHAR FilePathName
[1];
1405 } QUERY_PATH_REQUEST
, *PQUERY_PATH_REQUEST
;
1407 typedef struct _QUERY_PATH_RESPONSE
{
1408 ULONG LengthAccepted
;
1409 } QUERY_PATH_RESPONSE
, *PQUERY_PATH_RESPONSE
;
1411 #pragma pack(push,8)
1412 typedef struct _RETRIEVAL_POINTERS_BUFFER
{
1414 LARGE_INTEGER StartingVcn
;
1416 LARGE_INTEGER NextVcn
;
1419 } RETRIEVAL_POINTERS_BUFFER
, *PRETRIEVAL_POINTERS_BUFFER
;
1422 typedef struct _RTL_SPLAY_LINKS
{
1423 struct _RTL_SPLAY_LINKS
*Parent
;
1424 struct _RTL_SPLAY_LINKS
*LeftChild
;
1425 struct _RTL_SPLAY_LINKS
*RightChild
;
1426 } RTL_SPLAY_LINKS
, *PRTL_SPLAY_LINKS
;
1428 typedef struct _SE_EXPORTS
{
1430 LUID SeCreateTokenPrivilege
;
1431 LUID SeAssignPrimaryTokenPrivilege
;
1432 LUID SeLockMemoryPrivilege
;
1433 LUID SeIncreaseQuotaPrivilege
;
1434 LUID SeUnsolicitedInputPrivilege
;
1435 LUID SeTcbPrivilege
;
1436 LUID SeSecurityPrivilege
;
1437 LUID SeTakeOwnershipPrivilege
;
1438 LUID SeLoadDriverPrivilege
;
1439 LUID SeCreatePagefilePrivilege
;
1440 LUID SeIncreaseBasePriorityPrivilege
;
1441 LUID SeSystemProfilePrivilege
;
1442 LUID SeSystemtimePrivilege
;
1443 LUID SeProfileSingleProcessPrivilege
;
1444 LUID SeCreatePermanentPrivilege
;
1445 LUID SeBackupPrivilege
;
1446 LUID SeRestorePrivilege
;
1447 LUID SeShutdownPrivilege
;
1448 LUID SeDebugPrivilege
;
1449 LUID SeAuditPrivilege
;
1450 LUID SeSystemEnvironmentPrivilege
;
1451 LUID SeChangeNotifyPrivilege
;
1452 LUID SeRemoteShutdownPrivilege
;
1457 PSID SeCreatorOwnerSid
;
1458 PSID SeCreatorGroupSid
;
1460 PSID SeNtAuthoritySid
;
1464 PSID SeInteractiveSid
;
1465 PSID SeLocalSystemSid
;
1466 PSID SeAliasAdminsSid
;
1467 PSID SeAliasUsersSid
;
1468 PSID SeAliasGuestsSid
;
1469 PSID SeAliasPowerUsersSid
;
1470 PSID SeAliasAccountOpsSid
;
1471 PSID SeAliasSystemOpsSid
;
1472 PSID SeAliasPrintOpsSid
;
1473 PSID SeAliasBackupOpsSid
;
1475 PSID SeAuthenticatedUsersSid
;
1477 PSID SeRestrictedSid
;
1478 PSID SeAnonymousLogonSid
;
1480 LUID SeUndockPrivilege
;
1481 LUID SeSyncAgentPrivilege
;
1482 LUID SeEnableDelegationPrivilege
;
1484 } SE_EXPORTS
, *PSE_EXPORTS
;
1486 #if (VER_PRODUCTBUILD >= 2600)
1488 typedef struct _SHARED_CACHE_MAP
{
1489 CSHORT NodeTypeCode
;
1490 CSHORT NodeByteSize
;
1492 LARGE_INTEGER FileSize
;
1494 LARGE_INTEGER SectionSize
;
1495 LARGE_INTEGER ValidDataLength
;
1496 LARGE_INTEGER ValidDataGoal
;
1497 PVACB InitialVacbs
[4];
1499 PFILE_OBJECT FileObject
;
1503 ULONG NeedToZeroPage
;
1504 KSPIN_LOCK ActiveVacbSpinLock
;
1505 ULONG VacbActiveCount
;
1507 LIST_ENTRY SharedCacheMapLinks
;
1512 PKEVENT CreateEvent
;
1513 PKEVENT WaitOnActiveCount
;
1515 LONGLONG BeyondLastFlush
;
1516 PCACHE_MANAGER_CALLBACKS Callbacks
;
1517 PVOID LazyWriteContext
;
1518 LIST_ENTRY PrivateList
;
1520 PVOID FlushToLsnRoutine
;
1521 ULONG DirtyPageThreshold
;
1522 ULONG LazyWritePassCount
;
1523 PCACHE_UNINITIALIZE_EVENT UninitializeEvent
;
1524 PVACB NeedToZeroVacb
;
1525 KSPIN_LOCK BcbSpinLock
;
1528 EX_PUSH_LOCK VacbPushLock
;
1529 PRIVATE_CACHE_MAP PrivateCacheMap
;
1530 } SHARED_CACHE_MAP
, *PSHARED_CACHE_MAP
;
1534 typedef struct _STARTING_VCN_INPUT_BUFFER
{
1535 LARGE_INTEGER StartingVcn
;
1536 } STARTING_VCN_INPUT_BUFFER
, *PSTARTING_VCN_INPUT_BUFFER
;
1538 typedef struct _SECURITY_CLIENT_CONTEXT
{
1539 SECURITY_QUALITY_OF_SERVICE SecurityQos
;
1540 PACCESS_TOKEN ClientToken
;
1541 BOOLEAN DirectlyAccessClientToken
;
1542 BOOLEAN DirectAccessEffectiveOnly
;
1543 BOOLEAN ServerIsRemote
;
1544 TOKEN_CONTROL ClientTokenControl
;
1545 } SECURITY_CLIENT_CONTEXT
, *PSECURITY_CLIENT_CONTEXT
;
1547 typedef struct _TUNNEL
{
1549 PRTL_SPLAY_LINKS Cache
;
1550 LIST_ENTRY TimerQueue
;
1554 typedef struct _VACB
{
1556 PSHARED_CACHE_MAP SharedCacheMap
;
1558 LARGE_INTEGER FileOffset
;
1564 typedef struct _VAD_HEADER
{
1567 PVAD_HEADER ParentLink
;
1568 PVAD_HEADER LeftLink
;
1569 PVAD_HEADER RightLink
;
1570 ULONG Flags
; /* LSB = CommitCharge */
1572 PVOID FirstProtoPte
;
1576 } VAD_HEADER
, *PVAD_HEADER
;
1578 #if (VER_PRODUCTBUILD >= 2600)
1581 (NTAPI
*PFILTER_REPORT_CHANGE
) (
1582 IN PVOID NotifyContext
,
1583 IN PVOID FilterContext
1586 typedef enum _FS_FILTER_SECTION_SYNC_TYPE
{
1588 SyncTypeCreateSection
1589 } FS_FILTER_SECTION_SYNC_TYPE
, *PFS_FILTER_SECTION_SYNC_TYPE
;
1591 typedef union _FS_FILTER_PARAMETERS
{
1593 PLARGE_INTEGER EndingOffset
;
1594 } AcquireForModifiedPageWriter
;
1597 PERESOURCE ResourceToRelease
;
1598 } ReleaseForModifiedPageWriter
;
1601 FS_FILTER_SECTION_SYNC_TYPE SyncType
;
1602 ULONG PageProtection
;
1603 } AcquireForSectionSynchronization
;
1612 } FS_FILTER_PARAMETERS
, *PFS_FILTER_PARAMETERS
;
1614 typedef struct _FS_FILTER_CALLBACK_DATA
{
1615 ULONG SizeOfFsFilterCallbackData
;
1618 struct _DEVICE_OBJECT
*DeviceObject
;
1619 struct _FILE_OBJECT
*FileObject
;
1620 FS_FILTER_PARAMETERS Parameters
;
1621 } FS_FILTER_CALLBACK_DATA
, *PFS_FILTER_CALLBACK_DATA
;
1624 (NTAPI
*PFS_FILTER_CALLBACK
) (
1625 IN PFS_FILTER_CALLBACK_DATA Data
,
1626 OUT PVOID
*CompletionContext
1630 (NTAPI
*PFS_FILTER_COMPLETION_CALLBACK
) (
1631 IN PFS_FILTER_CALLBACK_DATA Data
,
1632 IN NTSTATUS OperationStatus
,
1633 IN PVOID CompletionContext
1636 typedef struct _FS_FILTER_CALLBACKS
{
1637 ULONG SizeOfFsFilterCallbacks
;
1639 PFS_FILTER_CALLBACK PreAcquireForSectionSynchronization
;
1640 PFS_FILTER_COMPLETION_CALLBACK PostAcquireForSectionSynchronization
;
1641 PFS_FILTER_CALLBACK PreReleaseForSectionSynchronization
;
1642 PFS_FILTER_COMPLETION_CALLBACK PostReleaseForSectionSynchronization
;
1643 PFS_FILTER_CALLBACK PreAcquireForCcFlush
;
1644 PFS_FILTER_COMPLETION_CALLBACK PostAcquireForCcFlush
;
1645 PFS_FILTER_CALLBACK PreReleaseForCcFlush
;
1646 PFS_FILTER_COMPLETION_CALLBACK PostReleaseForCcFlush
;
1647 PFS_FILTER_CALLBACK PreAcquireForModifiedPageWriter
;
1648 PFS_FILTER_COMPLETION_CALLBACK PostAcquireForModifiedPageWriter
;
1649 PFS_FILTER_CALLBACK PreReleaseForModifiedPageWriter
;
1650 PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter
;
1651 } FS_FILTER_CALLBACKS
, *PFS_FILTER_CALLBACKS
;
1653 typedef struct _READ_LIST
{
1654 PFILE_OBJECT FileObject
;
1655 ULONG NumberOfEntries
;
1657 FILE_SEGMENT_ELEMENT List
[ANYSIZE_ARRAY
];
1658 } READ_LIST
, *PREAD_LIST
;
1666 IN PFILE_OBJECT FileObject
,
1667 IN ULONG BytesToWrite
,
1676 IN PFILE_OBJECT FileObject
,
1677 IN PLARGE_INTEGER FileOffset
,
1681 OUT PIO_STATUS_BLOCK IoStatus
1688 IN PFILE_OBJECT FileObject
,
1689 IN PLARGE_INTEGER FileOffset
,
1695 #define CcCopyWriteWontFlush(FO, FOFF, LEN) ((LEN) <= 0x10000)
1697 typedef VOID (NTAPI
*PCC_POST_DEFERRED_WRITE
) (
1706 IN PFILE_OBJECT FileObject
,
1707 IN PCC_POST_DEFERRED_WRITE PostRoutine
,
1710 IN ULONG BytesToWrite
,
1718 IN PFILE_OBJECT FileObject
,
1719 IN ULONG FileOffset
,
1723 OUT PIO_STATUS_BLOCK IoStatus
1730 IN PFILE_OBJECT FileObject
,
1731 IN ULONG FileOffset
,
1740 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
1741 IN PLARGE_INTEGER FileOffset OPTIONAL
,
1743 OUT PIO_STATUS_BLOCK IoStatus OPTIONAL
1746 typedef VOID (*PDIRTY_PAGE_ROUTINE
) (
1747 IN PFILE_OBJECT FileObject
,
1748 IN PLARGE_INTEGER FileOffset
,
1750 IN PLARGE_INTEGER OldestLsn
,
1751 IN PLARGE_INTEGER NewestLsn
,
1761 IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine
,
1769 CcGetFileObjectFromBcb (
1776 CcGetFileObjectFromSectionPtrs (
1777 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
1780 #define CcGetFileSizePointer(FO) ( \
1781 ((PLARGE_INTEGER)((FO)->SectionObjectPointer->SharedCacheMap) + 1) \
1784 #if (VER_PRODUCTBUILD >= 2195)
1789 CcGetFlushedValidData (
1790 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
1791 IN BOOLEAN BcbListHeld
1794 #endif /* (VER_PRODUCTBUILD >= 2195) */
1799 CcGetLsnForFileObject (
1800 IN PFILE_OBJECT FileObject
,
1801 OUT PLARGE_INTEGER OldestLsn OPTIONAL
1804 typedef BOOLEAN (NTAPI
*PACQUIRE_FOR_LAZY_WRITE
) (
1809 typedef VOID (NTAPI
*PRELEASE_FROM_LAZY_WRITE
) (
1813 typedef BOOLEAN (NTAPI
*PACQUIRE_FOR_READ_AHEAD
) (
1818 typedef VOID (NTAPI
*PRELEASE_FROM_READ_AHEAD
) (
1822 typedef struct _CACHE_MANAGER_CALLBACKS
{
1823 PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite
;
1824 PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite
;
1825 PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead
;
1826 PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead
;
1827 } CACHE_MANAGER_CALLBACKS
, *PCACHE_MANAGER_CALLBACKS
;
1832 CcInitializeCacheMap (
1833 IN PFILE_OBJECT FileObject
,
1834 IN PCC_FILE_SIZES FileSizes
,
1835 IN BOOLEAN PinAccess
,
1836 IN PCACHE_MANAGER_CALLBACKS Callbacks
,
1837 IN PVOID LazyWriteContext
1840 #define CcIsFileCached(FO) ( \
1841 ((FO)->SectionObjectPointer != NULL) && \
1842 (((PSECTION_OBJECT_POINTERS)(FO)->SectionObjectPointer)->SharedCacheMap != NULL) \
1848 CcIsThereDirtyData (
1856 IN PFILE_OBJECT FileObject
,
1857 IN PLARGE_INTEGER FileOffset
,
1868 IN PFILE_OBJECT FileObject
,
1869 IN PLARGE_INTEGER FileOffset
,
1872 OUT PIO_STATUS_BLOCK IoStatus
1879 IN PFILE_OBJECT FileObject
,
1886 CcMdlWriteComplete (
1887 IN PFILE_OBJECT FileObject
,
1888 IN PLARGE_INTEGER FileOffset
,
1896 IN PFILE_OBJECT FileObject
,
1897 IN PLARGE_INTEGER FileOffset
,
1899 #if (VER_PRODUCTBUILD >= 2195)
1911 IN PFILE_OBJECT FileObject
,
1912 IN PLARGE_INTEGER FileOffset
,
1914 #if (VER_PRODUCTBUILD >= 2195)
1927 IN PFILE_OBJECT FileObject
,
1928 IN PLARGE_INTEGER FileOffset
,
1931 OUT PIO_STATUS_BLOCK IoStatus
1938 IN PFILE_OBJECT FileObject
,
1939 IN PLARGE_INTEGER FileOffset
,
1942 #if (VER_PRODUCTBUILD >= 2195)
1954 CcPurgeCacheSection (
1955 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
1956 IN PLARGE_INTEGER FileOffset OPTIONAL
,
1958 IN BOOLEAN UninitializeCacheMaps
1961 #define CcReadAhead(FO, FOFF, LEN) ( \
1962 if ((LEN) >= 256) { \
1963 CcScheduleReadAhead((FO), (FOFF), (LEN)); \
1967 #if (VER_PRODUCTBUILD >= 2195)
1976 #endif /* (VER_PRODUCTBUILD >= 2195) */
1988 CcScheduleReadAhead (
1989 IN PFILE_OBJECT FileObject
,
1990 IN PLARGE_INTEGER FileOffset
,
1997 CcSetAdditionalCacheAttributes (
1998 IN PFILE_OBJECT FileObject
,
1999 IN BOOLEAN DisableReadAhead
,
2000 IN BOOLEAN DisableWriteBehind
2006 CcSetBcbOwnerPointer (
2008 IN PVOID OwnerPointer
2014 CcSetDirtyPageThreshold (
2015 IN PFILE_OBJECT FileObject
,
2016 IN ULONG DirtyPageThreshold
2022 CcSetDirtyPinnedData (
2024 IN PLARGE_INTEGER Lsn OPTIONAL
2031 IN PFILE_OBJECT FileObject
,
2032 IN PCC_FILE_SIZES FileSizes
2035 typedef VOID (NTAPI
*PFLUSH_TO_LSN
) (
2037 IN PLARGE_INTEGER Lsn
2043 CcSetLogHandleForFile (
2044 IN PFILE_OBJECT FileObject
,
2046 IN PFLUSH_TO_LSN FlushToLsnRoutine
2052 CcSetReadAheadGranularity (
2053 IN PFILE_OBJECT FileObject
,
2054 IN ULONG Granularity
/* default: PAGE_SIZE */
2055 /* allowed: 2^n * PAGE_SIZE */
2061 CcUninitializeCacheMap (
2062 IN PFILE_OBJECT FileObject
,
2063 IN PLARGE_INTEGER TruncateSize OPTIONAL
,
2064 IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL
2077 CcUnpinDataForThread (
2079 IN ERESOURCE_THREAD ResourceThreadId
2085 CcUnpinRepinnedBcb (
2087 IN BOOLEAN WriteThrough
,
2088 OUT PIO_STATUS_BLOCK IoStatus
2091 #if (VER_PRODUCTBUILD >= 2195)
2096 CcWaitForCurrentLazyWriterActivity (
2100 #endif /* (VER_PRODUCTBUILD >= 2195) */
2106 IN PFILE_OBJECT FileObject
,
2107 IN PLARGE_INTEGER StartOffset
,
2108 IN PLARGE_INTEGER EndOffset
,
2115 ExDisableResourceBoostLite (
2116 IN PERESOURCE Resource
2122 ExQueryPoolBlockSize (
2124 OUT PBOOLEAN QuotaCharged
2127 #if (VER_PRODUCTBUILD >= 2600)
2132 ExInitializeRundownProtection (
2133 IN PEX_RUNDOWN_REF RunRef
2139 ExReInitializeRundownProtection (
2140 IN PEX_RUNDOWN_REF RunRef
2146 ExAcquireRundownProtection (
2147 IN PEX_RUNDOWN_REF RunRef
2153 ExAcquireRundownProtectionEx (
2154 IN PEX_RUNDOWN_REF RunRef
,
2161 ExReleaseRundownProtection (
2162 IN PEX_RUNDOWN_REF RunRef
2168 ExReleaseRundownProtectionEx (
2169 IN PEX_RUNDOWN_REF RunRef
,
2176 ExRundownCompleted (
2177 IN PEX_RUNDOWN_REF RunRef
2183 ExWaitForRundownProtectionRelease (
2184 IN PEX_RUNDOWN_REF RunRef
2187 #endif /* (VER_PRODUCTBUILD >= 2600) */
2189 #define FlagOn(x, f) ((x) & (f))
2194 FsRtlAddToTunnelCache (
2196 IN ULONGLONG DirectoryKey
,
2197 IN PUNICODE_STRING ShortName
,
2198 IN PUNICODE_STRING LongName
,
2199 IN BOOLEAN KeyByShortName
,
2200 IN ULONG DataLength
,
2204 #if (VER_PRODUCTBUILD >= 2195)
2208 FsRtlAllocateFileLock (
2209 IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL
,
2210 IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
2213 #endif /* (VER_PRODUCTBUILD >= 2195) */
2219 IN POOL_TYPE PoolType
,
2220 IN ULONG NumberOfBytes
2226 FsRtlAllocatePoolWithQuota (
2227 IN POOL_TYPE PoolType
,
2228 IN ULONG NumberOfBytes
2234 FsRtlAllocatePoolWithQuotaTag (
2235 IN POOL_TYPE PoolType
,
2236 IN ULONG NumberOfBytes
,
2243 FsRtlAllocatePoolWithTag (
2244 IN POOL_TYPE PoolType
,
2245 IN ULONG NumberOfBytes
,
2252 FsRtlAreNamesEqual (
2253 IN PUNICODE_STRING Name1
,
2254 IN PUNICODE_STRING Name2
,
2255 IN BOOLEAN IgnoreCase
,
2256 IN PWCHAR UpcaseTable OPTIONAL
2259 #define FsRtlAreThereCurrentFileLocks(FL) ( \
2260 ((FL)->FastIoIsQuestionable) \
2264 FsRtlCheckLockForReadAccess:
2266 All this really does is pick out the lock parameters from the irp (io stack
2267 location?), get IoGetRequestorProcess, and pass values on to
2268 FsRtlFastCheckLockForRead.
2273 FsRtlCheckLockForReadAccess (
2274 IN PFILE_LOCK FileLock
,
2279 FsRtlCheckLockForWriteAccess:
2281 All this really does is pick out the lock parameters from the irp (io stack
2282 location?), get IoGetRequestorProcess, and pass values on to
2283 FsRtlFastCheckLockForWrite.
2288 FsRtlCheckLockForWriteAccess (
2289 IN PFILE_LOCK FileLock
,
2295 (NTAPI
*POPLOCK_WAIT_COMPLETE_ROUTINE
) (
2302 (NTAPI
*POPLOCK_FS_PREPOST_IRP
) (
2314 IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL
,
2315 IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL
2322 IN PFILE_OBJECT FileObject
,
2323 IN PLARGE_INTEGER FileOffset
,
2328 OUT PIO_STATUS_BLOCK IoStatus
,
2329 IN PDEVICE_OBJECT DeviceObject
2336 IN PFILE_OBJECT FileObject
,
2337 IN PLARGE_INTEGER FileOffset
,
2342 OUT PIO_STATUS_BLOCK IoStatus
,
2343 IN PDEVICE_OBJECT DeviceObject
2349 FsRtlCurrentBatchOplock (
2356 FsRtlDeleteKeyFromTunnelCache (
2358 IN ULONGLONG DirectoryKey
2364 FsRtlDeleteTunnelCache (
2371 FsRtlDeregisterUncProvider (
2379 IN ANSI_STRING Name
,
2380 OUT PANSI_STRING FirstPart
,
2381 OUT PANSI_STRING RemainingPart
2388 IN UNICODE_STRING Name
,
2389 OUT PUNICODE_STRING FirstPart
,
2390 OUT PUNICODE_STRING RemainingPart
2396 FsRtlDoesDbcsContainWildCards (
2397 IN PANSI_STRING Name
2403 FsRtlDoesNameContainWildCards (
2404 IN PUNICODE_STRING Name
2407 #define FsRtlEnterFileSystem KeEnterCriticalRegion
2409 #define FsRtlExitFileSystem KeLeaveCriticalRegion
2414 FsRtlFastCheckLockForRead (
2415 IN PFILE_LOCK FileLock
,
2416 IN PLARGE_INTEGER FileOffset
,
2417 IN PLARGE_INTEGER Length
,
2419 IN PFILE_OBJECT FileObject
,
2420 IN PEPROCESS Process
2426 FsRtlFastCheckLockForWrite (
2427 IN PFILE_LOCK FileLock
,
2428 IN PLARGE_INTEGER FileOffset
,
2429 IN PLARGE_INTEGER Length
,
2431 IN PFILE_OBJECT FileObject
,
2432 IN PEPROCESS Process
2435 #define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ( \
2436 FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11) \
2442 FsRtlFastUnlockAll (
2443 IN PFILE_LOCK FileLock
,
2444 IN PFILE_OBJECT FileObject
,
2445 IN PEPROCESS Process
,
2446 IN PVOID Context OPTIONAL
2448 /* ret: STATUS_RANGE_NOT_LOCKED */
2453 FsRtlFastUnlockAllByKey (
2454 IN PFILE_LOCK FileLock
,
2455 IN PFILE_OBJECT FileObject
,
2456 IN PEPROCESS Process
,
2458 IN PVOID Context OPTIONAL
2460 /* ret: STATUS_RANGE_NOT_LOCKED */
2465 FsRtlFastUnlockSingle (
2466 IN PFILE_LOCK FileLock
,
2467 IN PFILE_OBJECT FileObject
,
2468 IN PLARGE_INTEGER FileOffset
,
2469 IN PLARGE_INTEGER Length
,
2470 IN PEPROCESS Process
,
2472 IN PVOID Context OPTIONAL
,
2473 IN BOOLEAN AlreadySynchronized
2475 /* ret: STATUS_RANGE_NOT_LOCKED */
2480 FsRtlFindInTunnelCache (
2482 IN ULONGLONG DirectoryKey
,
2483 IN PUNICODE_STRING Name
,
2484 OUT PUNICODE_STRING ShortName
,
2485 OUT PUNICODE_STRING LongName
,
2486 IN OUT PULONG DataLength
,
2490 #if (VER_PRODUCTBUILD >= 2195)
2496 IN PFILE_LOCK FileLock
2499 #endif /* (VER_PRODUCTBUILD >= 2195) */
2505 IN PFILE_OBJECT FileObject
,
2506 IN OUT PLARGE_INTEGER FileSize
2510 FsRtlGetNextFileLock:
2512 ret: NULL if no more locks
2515 FsRtlGetNextFileLock uses FileLock->LastReturnedLockInfo and
2516 FileLock->LastReturnedLock as storage.
2517 LastReturnedLock is a pointer to the 'raw' lock inkl. double linked
2518 list, and FsRtlGetNextFileLock needs this to get next lock on subsequent
2519 calls with Restart = FALSE.
2524 FsRtlGetNextFileLock (
2525 IN PFILE_LOCK FileLock
,
2532 FsRtlInitializeFileLock (
2533 IN PFILE_LOCK FileLock
,
2534 IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL
,
2535 IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
2541 FsRtlInitializeOplock (
2542 IN OUT POPLOCK Oplock
2548 FsRtlInitializeTunnelCache (
2555 FsRtlIsNameInExpression (
2556 IN PUNICODE_STRING Expression
,
2557 IN PUNICODE_STRING Name
,
2558 IN BOOLEAN IgnoreCase
,
2559 IN PWCHAR UpcaseTable OPTIONAL
2565 FsRtlIsNtstatusExpected (
2566 IN NTSTATUS Ntstatus
2569 #define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \
2570 (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
2571 (NLS_MB_CODE_PAGE_TAG && \
2572 (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
2575 #define FsRtlIsAnsiCharacterWild(C) ( \
2576 FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
2579 #define FsRtlIsUnicodeCharacterWild(C) ( \
2582 FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER )) \
2589 IN PFILE_OBJECT FileObject
,
2590 IN PLARGE_INTEGER FileOffset
,
2594 OUT PIO_STATUS_BLOCK IoStatus
,
2595 IN PDEVICE_OBJECT DeviceObject
2601 FsRtlMdlReadComplete (
2602 IN PFILE_OBJECT FileObject
,
2609 FsRtlMdlReadCompleteDev (
2610 IN PFILE_OBJECT FileObject
,
2612 IN PDEVICE_OBJECT DeviceObject
2618 FsRtlPrepareMdlWriteDev (
2619 IN PFILE_OBJECT FileObject
,
2620 IN PLARGE_INTEGER FileOffset
,
2624 OUT PIO_STATUS_BLOCK IoStatus
,
2625 IN PDEVICE_OBJECT DeviceObject
2631 FsRtlMdlWriteComplete (
2632 IN PFILE_OBJECT FileObject
,
2633 IN PLARGE_INTEGER FileOffset
,
2640 FsRtlMdlWriteCompleteDev (
2641 IN PFILE_OBJECT FileObject
,
2642 IN PLARGE_INTEGER FileOffset
,
2644 IN PDEVICE_OBJECT DeviceObject
2650 FsRtlNormalizeNtstatus (
2651 IN NTSTATUS Exception
,
2652 IN NTSTATUS GenericException
2658 FsRtlNotifyChangeDirectory (
2659 IN PNOTIFY_SYNC NotifySync
,
2661 IN PSTRING FullDirectoryName
,
2662 IN PLIST_ENTRY NotifyList
,
2663 IN BOOLEAN WatchTree
,
2664 IN ULONG CompletionFilter
,
2671 FsRtlNotifyCleanup (
2672 IN PNOTIFY_SYNC NotifySync
,
2673 IN PLIST_ENTRY NotifyList
,
2677 typedef BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS
) (
2678 IN PVOID NotifyContext
,
2679 IN PVOID TargetContext
,
2680 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
2686 FsRtlNotifyFullChangeDirectory (
2687 IN PNOTIFY_SYNC NotifySync
,
2688 IN PLIST_ENTRY NotifyList
,
2690 IN PSTRING FullDirectoryName
,
2691 IN BOOLEAN WatchTree
,
2692 IN BOOLEAN IgnoreBuffer
,
2693 IN ULONG CompletionFilter
,
2695 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL
,
2696 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
2702 FsRtlNotifyFullReportChange (
2703 IN PNOTIFY_SYNC NotifySync
,
2704 IN PLIST_ENTRY NotifyList
,
2705 IN PSTRING FullTargetName
,
2706 IN USHORT TargetNameOffset
,
2707 IN PSTRING StreamName OPTIONAL
,
2708 IN PSTRING NormalizedParentName OPTIONAL
,
2709 IN ULONG FilterMatch
,
2711 IN PVOID TargetContext
2717 FsRtlNotifyInitializeSync (
2718 IN PNOTIFY_SYNC
*NotifySync
2724 FsRtlNotifyReportChange (
2725 IN PNOTIFY_SYNC NotifySync
,
2726 IN PLIST_ENTRY NotifyList
,
2727 IN PSTRING FullTargetName
,
2728 IN PUSHORT FileNamePartLength
,
2729 IN ULONG FilterMatch
2735 FsRtlNotifyUninitializeSync (
2736 IN PNOTIFY_SYNC
*NotifySync
2739 #if (VER_PRODUCTBUILD >= 2195)
2744 FsRtlNotifyVolumeEvent (
2745 IN PFILE_OBJECT FileObject
,
2749 #endif /* (VER_PRODUCTBUILD >= 2195) */
2763 FsRtlOplockIsFastIoPossible (
2770 ret: IoStatus->Status: STATUS_PENDING, STATUS_LOCK_NOT_GRANTED
2773 -Calls IoCompleteRequest if Irp
2774 -Uses exception handling / ExRaiseStatus with STATUS_INSUFFICIENT_RESOURCES
2780 IN PFILE_LOCK FileLock
,
2781 IN PFILE_OBJECT FileObject
,
2782 IN PLARGE_INTEGER FileOffset
,
2783 IN PLARGE_INTEGER Length
,
2784 IN PEPROCESS Process
,
2786 IN BOOLEAN FailImmediately
,
2787 IN BOOLEAN ExclusiveLock
,
2788 OUT PIO_STATUS_BLOCK IoStatus
,
2789 IN PIRP Irp OPTIONAL
,
2791 IN BOOLEAN AlreadySynchronized
2795 FsRtlProcessFileLock:
2798 -STATUS_INVALID_DEVICE_REQUEST
2799 -STATUS_RANGE_NOT_LOCKED from unlock routines.
2800 -STATUS_PENDING, STATUS_LOCK_NOT_GRANTED from FsRtlPrivateLock
2801 (redirected IoStatus->Status).
2804 -switch ( Irp->CurrentStackLocation->MinorFunction )
2805 lock: return FsRtlPrivateLock;
2806 unlocksingle: return FsRtlFastUnlockSingle;
2807 unlockall: return FsRtlFastUnlockAll;
2808 unlockallbykey: return FsRtlFastUnlockAllByKey;
2809 default: IofCompleteRequest with STATUS_INVALID_DEVICE_REQUEST;
2810 return STATUS_INVALID_DEVICE_REQUEST;
2812 -'AllwaysZero' is passed thru as 'AllwaysZero' to lock / unlock routines.
2813 -'Irp' is passet thru as 'Irp' to FsRtlPrivateLock.
2818 FsRtlProcessFileLock (
2819 IN PFILE_LOCK FileLock
,
2821 IN PVOID Context OPTIONAL
2827 FsRtlRegisterUncProvider (
2828 IN OUT PHANDLE MupHandle
,
2829 IN PUNICODE_STRING RedirectorDeviceName
,
2830 IN BOOLEAN MailslotsSupported
2834 (NTAPI
*PFSRTL_STACK_OVERFLOW_ROUTINE
) (
2842 FsRtlPostStackOverflow (
2845 IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
2851 FsRtlPostPagingFileStackOverflow (
2854 IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
2860 FsRtlUninitializeFileLock (
2861 IN PFILE_LOCK FileLock
2867 FsRtlUninitializeOplock (
2868 IN OUT POPLOCK Oplock
2881 HalQueryRealTimeClock (
2882 IN OUT PTIME_FIELDS TimeFields
2888 HalSetRealTimeClock (
2889 IN PTIME_FIELDS TimeFields
2895 IoAttachDeviceToDeviceStackSafe(
2896 IN PDEVICE_OBJECT SourceDevice
,
2897 IN PDEVICE_OBJECT TargetDevice
,
2898 OUT PDEVICE_OBJECT
*AttachedToDeviceObject
2904 IoAcquireVpbSpinLock (
2911 IoCheckDesiredAccess (
2912 IN OUT PACCESS_MASK DesiredAccess
,
2913 IN ACCESS_MASK GrantedAccess
2919 IoCheckEaBufferValidity (
2920 IN PFILE_FULL_EA_INFORMATION EaBuffer
,
2922 OUT PULONG ErrorOffset
2928 IoCheckFunctionAccess (
2929 IN ACCESS_MASK GrantedAccess
,
2930 IN UCHAR MajorFunction
,
2931 IN UCHAR MinorFunction
,
2932 IN ULONG IoControlCode
,
2933 IN PVOID Argument1 OPTIONAL
,
2934 IN PVOID Argument2 OPTIONAL
2937 #if (VER_PRODUCTBUILD >= 2195)
2942 IoCheckQuotaBufferValidity (
2943 IN PFILE_QUOTA_INFORMATION QuotaBuffer
,
2944 IN ULONG QuotaLength
,
2945 OUT PULONG ErrorOffset
2948 #endif /* (VER_PRODUCTBUILD >= 2195) */
2953 IoCreateStreamFileObject (
2954 IN PFILE_OBJECT FileObject OPTIONAL
,
2955 IN PDEVICE_OBJECT DeviceObject OPTIONAL
2958 #if (VER_PRODUCTBUILD >= 2195)
2963 IoCreateStreamFileObjectLite (
2964 IN PFILE_OBJECT FileObject OPTIONAL
,
2965 IN PDEVICE_OBJECT DeviceObject OPTIONAL
2968 #endif /* (VER_PRODUCTBUILD >= 2195) */
2973 IoFastQueryNetworkAttributes (
2974 IN POBJECT_ATTRIBUTES ObjectAttributes
,
2975 IN ACCESS_MASK DesiredAccess
,
2976 IN ULONG OpenOptions
,
2977 OUT PIO_STATUS_BLOCK IoStatus
,
2978 OUT PFILE_NETWORK_OPEN_INFORMATION Buffer
2984 IoGetAttachedDevice (
2985 IN PDEVICE_OBJECT DeviceObject
2991 IoGetBaseFileSystemDeviceObject (
2992 IN PFILE_OBJECT FileObject
2998 IoGetRequestorProcess (
3002 #if (VER_PRODUCTBUILD >= 2195)
3007 IoGetRequestorProcessId (
3011 #endif /* (VER_PRODUCTBUILD >= 2195) */
3020 #define IoIsFileOpenedExclusively(FileObject) ( \
3022 (FileObject)->SharedRead || \
3023 (FileObject)->SharedWrite || \
3024 (FileObject)->SharedDelete \
3031 IoIsOperationSynchronous (
3042 #if (VER_PRODUCTBUILD >= 2195)
3047 IoIsValidNameGraftingBuffer (
3049 IN PREPARSE_DATA_BUFFER ReparseBuffer
3052 #endif /* (VER_PRODUCTBUILD >= 2195) */
3058 IN PFILE_OBJECT FileObject
,
3060 IN PLARGE_INTEGER Offset
,
3062 OUT PIO_STATUS_BLOCK IoStatusBlock
3068 IoQueryFileInformation (
3069 IN PFILE_OBJECT FileObject
,
3070 IN FILE_INFORMATION_CLASS FileInformationClass
,
3072 OUT PVOID FileInformation
,
3073 OUT PULONG ReturnedLength
3079 IoQueryVolumeInformation (
3080 IN PFILE_OBJECT FileObject
,
3081 IN FS_INFORMATION_CLASS FsInformationClass
,
3083 OUT PVOID FsInformation
,
3084 OUT PULONG ReturnedLength
3097 IoRegisterFileSystem (
3098 IN OUT PDEVICE_OBJECT DeviceObject
3101 #if (VER_PRODUCTBUILD >= 1381)
3103 typedef VOID (NTAPI
*PDRIVER_FS_NOTIFICATION
) (
3104 IN PDEVICE_OBJECT DeviceObject
,
3105 IN BOOLEAN DriverActive
3111 IoRegisterFsRegistrationChange (
3112 IN PDRIVER_OBJECT DriverObject
,
3113 IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine
3116 #endif /* (VER_PRODUCTBUILD >= 1381) */
3121 IoReleaseVpbSpinLock (
3128 IoSetDeviceToVerify (
3130 IN PDEVICE_OBJECT DeviceObject
3137 IN PFILE_OBJECT FileObject
,
3138 IN FILE_INFORMATION_CLASS FileInformationClass
,
3140 IN PVOID FileInformation
3153 IoSynchronousPageWrite (
3154 IN PFILE_OBJECT FileObject
,
3156 IN PLARGE_INTEGER FileOffset
,
3158 OUT PIO_STATUS_BLOCK IoStatusBlock
3171 IoUnregisterFileSystem (
3172 IN OUT PDEVICE_OBJECT DeviceObject
3175 #if (VER_PRODUCTBUILD >= 1381)
3180 IoUnregisterFsRegistrationChange (
3181 IN PDRIVER_OBJECT DriverObject
,
3182 IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine
3185 #endif /* (VER_PRODUCTBUILD >= 1381) */
3191 IN PDEVICE_OBJECT DeviceObject
,
3192 IN BOOLEAN AllowRawMount
3199 IN PKPROCESS Process
3214 IN ULONG Count OPTIONAL
3222 IN PLIST_ENTRY Entry
3230 IN PLIST_ENTRY Entry
3238 IN PVOID SystemArgument1
,
3239 IN PVOID SystemArgument2
,
3240 IN KPRIORITY PriorityBoost
3255 IN KPROCESSOR_MODE WaitMode
,
3256 IN PLARGE_INTEGER Timeout OPTIONAL
3269 KeInitializeMutant (
3270 IN PRKMUTANT Mutant
,
3271 IN BOOLEAN InitialOwner
3285 IN PRKMUTANT Mutant
,
3286 IN KPRIORITY Increment
,
3287 IN BOOLEAN Abandoned
,
3291 #if (VER_PRODUCTBUILD >= 2195)
3296 KeStackAttachProcess (
3297 IN PKPROCESS Process
,
3298 OUT PKAPC_STATE ApcState
3304 KeUnstackDetachProcess (
3305 IN PKAPC_STATE ApcState
3308 #endif /* (VER_PRODUCTBUILD >= 2195) */
3313 MmCanFileBeTruncated (
3314 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
3315 IN PLARGE_INTEGER NewFileSize
3321 MmFlushImageSection (
3322 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
3323 IN MMFLUSH_TYPE FlushType
3329 MmForceSectionClosed (
3330 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
3331 IN BOOLEAN DelayClose
3334 #if (VER_PRODUCTBUILD >= 1381)
3339 MmIsRecursiveIoFault (
3345 #define MmIsRecursiveIoFault() ( \
3346 (PsGetCurrentThread()->DisablePageFaultClustering) | \
3347 (PsGetCurrentThread()->ForwardClusterOnly) \
3355 MmMapViewOfSection (
3356 IN PVOID SectionObject
,
3357 IN PEPROCESS Process
,
3358 IN OUT PVOID
*BaseAddress
,
3360 IN ULONG CommitSize
,
3361 IN OUT PLARGE_INTEGER SectionOffset OPTIONAL
,
3362 IN OUT PULONG ViewSize
,
3363 IN SECTION_INHERIT InheritDisposition
,
3364 IN ULONG AllocationType
,
3371 MmSetAddressRangeModified (
3380 IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL
,
3381 IN POBJECT_TYPE ObjectType
,
3382 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
3383 IN KPROCESSOR_MODE AccessMode
,
3384 IN OUT PVOID ParseContext OPTIONAL
,
3385 IN ULONG ObjectSize
,
3386 IN ULONG PagedPoolCharge OPTIONAL
,
3387 IN ULONG NonPagedPoolCharge OPTIONAL
,
3394 ObGetObjectPointerCount (
3403 IN PACCESS_STATE PassedAccessState OPTIONAL
,
3404 IN ACCESS_MASK DesiredAccess
,
3405 IN ULONG AdditionalReferences
,
3406 OUT PVOID
*ReferencedObject OPTIONAL
,
3413 ObMakeTemporaryObject (
3420 ObOpenObjectByPointer (
3422 IN ULONG HandleAttributes
,
3423 IN PACCESS_STATE PassedAccessState OPTIONAL
,
3424 IN ACCESS_MASK DesiredAccess OPTIONAL
,
3425 IN POBJECT_TYPE ObjectType OPTIONAL
,
3426 IN KPROCESSOR_MODE AccessMode
,
3435 OUT POBJECT_NAME_INFORMATION ObjectNameInfo
,
3437 OUT PULONG ReturnLength
3443 ObQueryObjectAuditingByHandle (
3445 OUT PBOOLEAN GenerateOnClose
3451 ObReferenceObjectByName (
3452 IN PUNICODE_STRING ObjectName
,
3453 IN ULONG Attributes
,
3454 IN PACCESS_STATE PassedAccessState OPTIONAL
,
3455 IN ACCESS_MASK DesiredAccess OPTIONAL
,
3456 IN POBJECT_TYPE ObjectType
,
3457 IN KPROCESSOR_MODE AccessMode
,
3458 IN OUT PVOID ParseContext OPTIONAL
,
3465 PsAssignImpersonationToken (
3474 IN PEPROCESS Process
,
3475 IN POOL_TYPE PoolType
,
3482 PsChargeProcessPoolQuota (
3483 IN PEPROCESS Process
,
3484 IN POOL_TYPE PoolType
,
3488 #define PsDereferenceImpersonationToken(T) \
3489 {if (ARGUMENT_PRESENT(T)) { \
3490 (ObDereferenceObject((T))); \
3496 #define PsDereferencePrimaryToken(T) (ObDereferenceObject((T)))
3501 PsDisableImpersonation(
3503 IN PSE_IMPERSONATION_STATE ImpersonationState
3509 PsGetProcessExitTime (
3516 PsImpersonateClient(
3518 IN PACCESS_TOKEN Token
,
3519 IN BOOLEAN CopyOnOpen
,
3520 IN BOOLEAN EffectiveOnly
,
3521 IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
3534 PsIsThreadTerminating (
3541 PsLookupProcessByProcessId (
3542 IN HANDLE ProcessId
,
3543 OUT PEPROCESS
*Process
3549 PsLookupProcessThreadByCid (
3551 OUT PEPROCESS
*Process OPTIONAL
,
3552 OUT PETHREAD
*Thread
3558 PsLookupThreadByThreadId (
3559 IN HANDLE UniqueThreadId
,
3560 OUT PETHREAD
*Thread
3566 PsReferenceImpersonationToken (
3568 OUT PBOOLEAN CopyOnUse
,
3569 OUT PBOOLEAN EffectiveOnly
,
3570 OUT PSECURITY_IMPERSONATION_LEVEL Level
3576 PsReferencePrimaryToken (
3577 IN PEPROCESS Process
3583 PsRestoreImpersonation(
3585 IN PSE_IMPERSONATION_STATE ImpersonationState
3592 IN PEPROCESS Process
,
3593 IN POOL_TYPE PoolType
,
3607 RtlAbsoluteToSelfRelativeSD (
3608 IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor
,
3609 IN OUT PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor
,
3610 IN PULONG BufferLength
3617 IN HANDLE HeapHandle
,
3626 IN USHORT CompressionFormatAndEngine
,
3627 IN PUCHAR UncompressedBuffer
,
3628 IN ULONG UncompressedBufferSize
,
3629 OUT PUCHAR CompressedBuffer
,
3630 IN ULONG CompressedBufferSize
,
3631 IN ULONG UncompressedChunkSize
,
3632 OUT PULONG FinalCompressedSize
,
3640 IN PUCHAR UncompressedBuffer
,
3641 IN ULONG UncompressedBufferSize
,
3642 OUT PUCHAR CompressedBuffer
,
3643 IN ULONG CompressedBufferSize
,
3644 IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo
,
3645 IN ULONG CompressedDataInfoLength
,
3652 RtlConvertSidToUnicodeString (
3653 OUT PUNICODE_STRING DestinationString
,
3655 IN BOOLEAN AllocateDestinationString
3663 IN PSID Destination
,
3670 RtlDecompressBuffer (
3671 IN USHORT CompressionFormat
,
3672 OUT PUCHAR UncompressedBuffer
,
3673 IN ULONG UncompressedBufferSize
,
3674 IN PUCHAR CompressedBuffer
,
3675 IN ULONG CompressedBufferSize
,
3676 OUT PULONG FinalUncompressedSize
3682 RtlDecompressChunks (
3683 OUT PUCHAR UncompressedBuffer
,
3684 IN ULONG UncompressedBufferSize
,
3685 IN PUCHAR CompressedBuffer
,
3686 IN ULONG CompressedBufferSize
,
3687 IN PUCHAR CompressedTail
,
3688 IN ULONG CompressedTailSize
,
3689 IN PCOMPRESSED_DATA_INFO CompressedDataInfo
3695 RtlDecompressFragment (
3696 IN USHORT CompressionFormat
,
3697 OUT PUCHAR UncompressedFragment
,
3698 IN ULONG UncompressedFragmentSize
,
3699 IN PUCHAR CompressedBuffer
,
3700 IN ULONG CompressedBufferSize
,
3701 IN ULONG FragmentOffset
,
3702 OUT PULONG FinalUncompressedSize
,
3710 IN USHORT CompressionFormat
,
3711 IN OUT PUCHAR
*CompressedBuffer
,
3712 IN PUCHAR EndOfCompressedBufferPlus1
,
3713 OUT PUCHAR
*ChunkBuffer
,
3714 OUT PULONG ChunkSize
3728 RtlFillMemoryUlong (
3729 IN PVOID Destination
,
3738 IN HANDLE HeapHandle
,
3746 RtlGenerate8dot3Name (
3747 IN PUNICODE_STRING Name
,
3748 IN BOOLEAN AllowExtendedCharacters
,
3749 IN OUT PGENERATE_NAME_CONTEXT Context
,
3750 OUT PUNICODE_STRING Name8dot3
3756 RtlGetCompressionWorkSpaceSize (
3757 IN USHORT CompressionFormatAndEngine
,
3758 OUT PULONG CompressBufferWorkSpaceSize
,
3759 OUT PULONG CompressFragmentWorkSpaceSize
3765 RtlGetDaclSecurityDescriptor (
3766 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
3767 OUT PBOOLEAN DaclPresent
,
3769 OUT PBOOLEAN DaclDefaulted
3775 RtlGetGroupSecurityDescriptor (
3776 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
3778 OUT PBOOLEAN GroupDefaulted
3784 RtlGetOwnerSecurityDescriptor (
3785 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
3787 OUT PBOOLEAN OwnerDefaulted
3795 IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
,
3796 IN UCHAR SubAuthorityCount
3802 RtlIsNameLegalDOS8Dot3 (
3803 IN PUNICODE_STRING UnicodeName
,
3804 IN PANSI_STRING AnsiName
,
3811 RtlLengthRequiredSid (
3812 IN UCHAR SubAuthorityCount
3825 RtlNtStatusToDosError (
3833 IN USHORT CompressionFormat
,
3834 IN OUT PUCHAR
*CompressedBuffer
,
3835 IN PUCHAR EndOfCompressedBufferPlus1
,
3836 OUT PUCHAR
*ChunkBuffer
,
3843 RtlSecondsSince1970ToTime (
3844 IN ULONG SecondsSince1970
,
3845 OUT PLARGE_INTEGER Time
3851 RtlSetGroupSecurityDescriptor (
3852 IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
3854 IN BOOLEAN GroupDefaulted
3860 RtlSetOwnerSecurityDescriptor (
3861 IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
3863 IN BOOLEAN OwnerDefaulted
3869 RtlSetSaclSecurityDescriptor (
3870 IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
3871 IN BOOLEAN SaclPresent
,
3873 IN BOOLEAN SaclDefaulted
3879 RtlSubAuthorityCountSid (
3886 RtlSubAuthoritySid (
3888 IN ULONG SubAuthority
3901 SeAppendPrivileges (
3902 PACCESS_STATE AccessState
,
3903 PPRIVILEGE_SET Privileges
3909 SeAuditingFileEvents (
3910 IN BOOLEAN AccessGranted
,
3911 IN PSECURITY_DESCRIPTOR SecurityDescriptor
3917 SeAuditingFileOrGlobalEvents (
3918 IN BOOLEAN AccessGranted
,
3919 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
3920 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
3926 SeCaptureSubjectContext (
3927 OUT PSECURITY_SUBJECT_CONTEXT SubjectContext
3933 SeCreateClientSecurity (
3935 IN PSECURITY_QUALITY_OF_SERVICE QualityOfService
,
3936 IN BOOLEAN RemoteClient
,
3937 OUT PSECURITY_CLIENT_CONTEXT ClientContext
3940 #if (VER_PRODUCTBUILD >= 2195)
3945 SeCreateClientSecurityFromSubjectContext (
3946 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
,
3947 IN PSECURITY_QUALITY_OF_SERVICE QualityOfService
,
3948 IN BOOLEAN ServerIsRemote
,
3949 OUT PSECURITY_CLIENT_CONTEXT ClientContext
3952 #endif /* (VER_PRODUCTBUILD >= 2195) */
3954 #define SeDeleteClientSecurity(C) { \
3955 if (SeTokenType((C)->ClientToken) == TokenPrimary) { \
3956 PsDereferencePrimaryToken( (C)->ClientToken ); \
3958 PsDereferenceImpersonationToken( (C)->ClientToken ); \
3965 SeDeleteObjectAuditAlarm (
3970 #define SeEnableAccessToExports() SeExports = *(PSE_EXPORTS *)SeExports;
3976 IN PPRIVILEGE_SET Privileges
3982 SeImpersonateClient (
3983 IN PSECURITY_CLIENT_CONTEXT ClientContext
,
3984 IN PETHREAD ServerThread OPTIONAL
3987 #if (VER_PRODUCTBUILD >= 2195)
3992 SeImpersonateClientEx (
3993 IN PSECURITY_CLIENT_CONTEXT ClientContext
,
3994 IN PETHREAD ServerThread OPTIONAL
3997 #endif /* (VER_PRODUCTBUILD >= 2195) */
4002 SeLockSubjectContext (
4003 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
4009 SeMarkLogonSessionForTerminationNotification (
4016 SeOpenObjectAuditAlarm (
4017 IN PUNICODE_STRING ObjectTypeName
,
4018 IN PVOID Object OPTIONAL
,
4019 IN PUNICODE_STRING AbsoluteObjectName OPTIONAL
,
4020 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
4021 IN PACCESS_STATE AccessState
,
4022 IN BOOLEAN ObjectCreated
,
4023 IN BOOLEAN AccessGranted
,
4024 IN KPROCESSOR_MODE AccessMode
,
4025 OUT PBOOLEAN GenerateOnClose
4031 SeOpenObjectForDeleteAuditAlarm (
4032 IN PUNICODE_STRING ObjectTypeName
,
4033 IN PVOID Object OPTIONAL
,
4034 IN PUNICODE_STRING AbsoluteObjectName OPTIONAL
,
4035 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
4036 IN PACCESS_STATE AccessState
,
4037 IN BOOLEAN ObjectCreated
,
4038 IN BOOLEAN AccessGranted
,
4039 IN KPROCESSOR_MODE AccessMode
,
4040 OUT PBOOLEAN GenerateOnClose
4047 IN OUT PPRIVILEGE_SET RequiredPrivileges
,
4048 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
,
4049 IN KPROCESSOR_MODE AccessMode
4055 SeQueryAuthenticationIdToken (
4056 IN PACCESS_TOKEN Token
,
4060 #if (VER_PRODUCTBUILD >= 2195)
4065 SeQueryInformationToken (
4066 IN PACCESS_TOKEN Token
,
4067 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
4068 OUT PVOID
*TokenInformation
4071 #endif /* (VER_PRODUCTBUILD >= 2195) */
4076 SeQuerySecurityDescriptorInfo (
4077 IN PSECURITY_INFORMATION SecurityInformation
,
4078 OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
4079 IN OUT PULONG Length
,
4080 IN PSECURITY_DESCRIPTOR
*ObjectsSecurityDescriptor
4083 #if (VER_PRODUCTBUILD >= 2195)
4088 SeQuerySessionIdToken (
4089 IN PACCESS_TOKEN Token
,
4093 #endif /* (VER_PRODUCTBUILD >= 2195) */
4095 #define SeQuerySubjectContextToken( SubjectContext ) \
4096 ( ARGUMENT_PRESENT( \
4097 ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->ClientToken \
4099 ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->ClientToken : \
4100 ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->PrimaryToken )
4102 typedef NTSTATUS (*PSE_LOGON_SESSION_TERMINATED_ROUTINE
) (
4109 SeRegisterLogonSessionTerminatedRoutine (
4110 IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine
4116 SeReleaseSubjectContext (
4117 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
4123 SeSetAccessStateGenericMapping (
4124 PACCESS_STATE AccessState
,
4125 PGENERIC_MAPPING GenericMapping
4131 SeSetSecurityDescriptorInfo (
4132 IN PVOID Object OPTIONAL
,
4133 IN PSECURITY_INFORMATION SecurityInformation
,
4134 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
4135 IN OUT PSECURITY_DESCRIPTOR
*ObjectsSecurityDescriptor
,
4136 IN POOL_TYPE PoolType
,
4137 IN PGENERIC_MAPPING GenericMapping
4140 #if (VER_PRODUCTBUILD >= 2195)
4145 SeSetSecurityDescriptorInfoEx (
4146 IN PVOID Object OPTIONAL
,
4147 IN PSECURITY_INFORMATION SecurityInformation
,
4148 IN PSECURITY_DESCRIPTOR ModificationDescriptor
,
4149 IN OUT PSECURITY_DESCRIPTOR
*ObjectsSecurityDescriptor
,
4150 IN ULONG AutoInheritFlags
,
4151 IN POOL_TYPE PoolType
,
4152 IN PGENERIC_MAPPING GenericMapping
4159 IN PACCESS_TOKEN Token
4165 SeTokenIsRestricted (
4166 IN PACCESS_TOKEN Token
4169 #endif /* (VER_PRODUCTBUILD >= 2195) */
4175 IN PACCESS_TOKEN Token
4181 SeUnlockSubjectContext (
4182 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
4188 SeUnregisterLogonSessionTerminatedRoutine (
4189 IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine
4192 #if (VER_PRODUCTBUILD >= 2195)
4197 ZwAdjustPrivilegesToken (
4198 IN HANDLE TokenHandle
,
4199 IN BOOLEAN DisableAllPrivileges
,
4200 IN PTOKEN_PRIVILEGES NewState
,
4201 IN ULONG BufferLength
,
4202 OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL
,
4203 OUT PULONG ReturnLength
4206 #endif /* (VER_PRODUCTBUILD >= 2195) */
4212 IN HANDLE ThreadHandle
4218 ZwAllocateVirtualMemory (
4219 IN HANDLE ProcessHandle
,
4220 IN OUT PVOID
*BaseAddress
,
4222 IN OUT PULONG RegionSize
,
4223 IN ULONG AllocationType
,
4230 ZwAccessCheckAndAuditAlarm (
4231 IN PUNICODE_STRING SubsystemName
,
4233 IN PUNICODE_STRING ObjectTypeName
,
4234 IN PUNICODE_STRING ObjectName
,
4235 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
4236 IN ACCESS_MASK DesiredAccess
,
4237 IN PGENERIC_MAPPING GenericMapping
,
4238 IN BOOLEAN ObjectCreation
,
4239 OUT PACCESS_MASK GrantedAccess
,
4240 OUT PBOOLEAN AccessStatus
,
4241 OUT PBOOLEAN GenerateOnClose
4244 #if (VER_PRODUCTBUILD >= 2195)
4250 IN HANDLE FileHandle
,
4251 OUT PIO_STATUS_BLOCK IoStatusBlock
4254 #endif /* (VER_PRODUCTBUILD >= 2195) */
4260 IN HANDLE EventHandle
4266 ZwCloseObjectAuditAlarm (
4267 IN PUNICODE_STRING SubsystemName
,
4269 IN BOOLEAN GenerateOnClose
4276 OUT PHANDLE SectionHandle
,
4277 IN ACCESS_MASK DesiredAccess
,
4278 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
4279 IN PLARGE_INTEGER MaximumSize OPTIONAL
,
4280 IN ULONG SectionPageProtection
,
4281 IN ULONG AllocationAttributes
,
4282 IN HANDLE FileHandle OPTIONAL
4288 ZwCreateSymbolicLinkObject (
4289 OUT PHANDLE SymbolicLinkHandle
,
4290 IN ACCESS_MASK DesiredAccess
,
4291 IN POBJECT_ATTRIBUTES ObjectAttributes
,
4292 IN PUNICODE_STRING TargetName
4299 IN POBJECT_ATTRIBUTES ObjectAttributes
4307 IN PUNICODE_STRING Name
4313 ZwDeviceIoControlFile (
4314 IN HANDLE FileHandle
,
4315 IN HANDLE Event OPTIONAL
,
4316 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
4317 IN PVOID ApcContext OPTIONAL
,
4318 OUT PIO_STATUS_BLOCK IoStatusBlock
,
4319 IN ULONG IoControlCode
,
4320 IN PVOID InputBuffer OPTIONAL
,
4321 IN ULONG InputBufferLength
,
4322 OUT PVOID OutputBuffer OPTIONAL
,
4323 IN ULONG OutputBufferLength
4330 IN PUNICODE_STRING String
4337 IN HANDLE SourceProcessHandle
,
4338 IN HANDLE SourceHandle
,
4339 IN HANDLE TargetProcessHandle OPTIONAL
,
4340 OUT PHANDLE TargetHandle OPTIONAL
,
4341 IN ACCESS_MASK DesiredAccess
,
4342 IN ULONG HandleAttributes
,
4350 IN HANDLE ExistingTokenHandle
,
4351 IN ACCESS_MASK DesiredAccess
,
4352 IN POBJECT_ATTRIBUTES ObjectAttributes
,
4353 IN BOOLEAN EffectiveOnly
,
4354 IN TOKEN_TYPE TokenType
,
4355 OUT PHANDLE NewTokenHandle
4361 ZwFlushInstructionCache (
4362 IN HANDLE ProcessHandle
,
4363 IN PVOID BaseAddress OPTIONAL
,
4367 #if (VER_PRODUCTBUILD >= 2195)
4372 ZwFlushVirtualMemory (
4373 IN HANDLE ProcessHandle
,
4374 IN OUT PVOID
*BaseAddress
,
4375 IN OUT PULONG FlushSize
,
4376 OUT PIO_STATUS_BLOCK IoStatusBlock
4379 #endif /* (VER_PRODUCTBUILD >= 2195) */
4384 ZwFreeVirtualMemory (
4385 IN HANDLE ProcessHandle
,
4386 IN OUT PVOID
*BaseAddress
,
4387 IN OUT PULONG RegionSize
,
4395 IN HANDLE FileHandle
,
4396 IN HANDLE Event OPTIONAL
,
4397 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
4398 IN PVOID ApcContext OPTIONAL
,
4399 OUT PIO_STATUS_BLOCK IoStatusBlock
,
4400 IN ULONG FsControlCode
,
4401 IN PVOID InputBuffer OPTIONAL
,
4402 IN ULONG InputBufferLength
,
4403 OUT PVOID OutputBuffer OPTIONAL
,
4404 IN ULONG OutputBufferLength
4407 #if (VER_PRODUCTBUILD >= 2195)
4412 ZwInitiatePowerAction (
4413 IN POWER_ACTION SystemAction
,
4414 IN SYSTEM_POWER_STATE MinSystemState
,
4416 IN BOOLEAN Asynchronous
4419 #endif /* (VER_PRODUCTBUILD >= 2195) */
4425 /* "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\<DriverName>" */
4426 IN PUNICODE_STRING RegistryPath
4433 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
4434 IN POBJECT_ATTRIBUTES FileObjectAttributes
4441 IN HANDLE KeyHandle
,
4442 IN HANDLE EventHandle OPTIONAL
,
4443 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
4444 IN PVOID ApcContext OPTIONAL
,
4445 OUT PIO_STATUS_BLOCK IoStatusBlock
,
4446 IN ULONG NotifyFilter
,
4447 IN BOOLEAN WatchSubtree
,
4449 IN ULONG BufferLength
,
4450 IN BOOLEAN Asynchronous
4456 ZwOpenDirectoryObject (
4457 OUT PHANDLE DirectoryHandle
,
4458 IN ACCESS_MASK DesiredAccess
,
4459 IN POBJECT_ATTRIBUTES ObjectAttributes
4466 OUT PHANDLE EventHandle
,
4467 IN ACCESS_MASK DesiredAccess
,
4468 IN POBJECT_ATTRIBUTES ObjectAttributes
4475 OUT PHANDLE ProcessHandle
,
4476 IN ACCESS_MASK DesiredAccess
,
4477 IN POBJECT_ATTRIBUTES ObjectAttributes
,
4478 IN PCLIENT_ID ClientId OPTIONAL
4484 ZwOpenProcessToken (
4485 IN HANDLE ProcessHandle
,
4486 IN ACCESS_MASK DesiredAccess
,
4487 OUT PHANDLE TokenHandle
4494 OUT PHANDLE ThreadHandle
,
4495 IN ACCESS_MASK DesiredAccess
,
4496 IN POBJECT_ATTRIBUTES ObjectAttributes
,
4497 IN PCLIENT_ID ClientId
4504 IN HANDLE ThreadHandle
,
4505 IN ACCESS_MASK DesiredAccess
,
4506 IN BOOLEAN OpenAsSelf
,
4507 OUT PHANDLE TokenHandle
4510 #if (VER_PRODUCTBUILD >= 2195)
4515 ZwPowerInformation (
4516 IN POWER_INFORMATION_LEVEL PowerInformationLevel
,
4517 IN PVOID InputBuffer OPTIONAL
,
4518 IN ULONG InputBufferLength
,
4519 OUT PVOID OutputBuffer OPTIONAL
,
4520 IN ULONG OutputBufferLength
4523 #endif /* (VER_PRODUCTBUILD >= 2195) */
4529 IN HANDLE EventHandle
,
4530 OUT PLONG PreviousState OPTIONAL
4536 ZwQueryDefaultLocale (
4537 IN BOOLEAN ThreadOrSystem
,
4544 ZwQueryDirectoryFile (
4545 IN HANDLE FileHandle
,
4546 IN HANDLE Event OPTIONAL
,
4547 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
4548 IN PVOID ApcContext OPTIONAL
,
4549 OUT PIO_STATUS_BLOCK IoStatusBlock
,
4550 OUT PVOID FileInformation
,
4552 IN FILE_INFORMATION_CLASS FileInformationClass
,
4553 IN BOOLEAN ReturnSingleEntry
,
4554 IN PUNICODE_STRING FileName OPTIONAL
,
4555 IN BOOLEAN RestartScan
4558 #if (VER_PRODUCTBUILD >= 2195)
4563 ZwQueryDirectoryObject (
4564 IN HANDLE DirectoryHandle
,
4567 IN BOOLEAN ReturnSingleEntry
,
4568 IN BOOLEAN RestartScan
,
4569 IN OUT PULONG Context
,
4570 OUT PULONG ReturnLength OPTIONAL
4577 IN HANDLE FileHandle
,
4578 OUT PIO_STATUS_BLOCK IoStatusBlock
,
4581 IN BOOLEAN ReturnSingleEntry
,
4582 IN PVOID EaList OPTIONAL
,
4583 IN ULONG EaListLength
,
4584 IN PULONG EaIndex OPTIONAL
,
4585 IN BOOLEAN RestartScan
4588 #endif /* (VER_PRODUCTBUILD >= 2195) */
4593 ZwQueryInformationProcess (
4594 IN HANDLE ProcessHandle
,
4595 IN PROCESSINFOCLASS ProcessInformationClass
,
4596 OUT PVOID ProcessInformation
,
4597 IN ULONG ProcessInformationLength
,
4598 OUT PULONG ReturnLength OPTIONAL
4604 ZwQueryInformationToken (
4605 IN HANDLE TokenHandle
,
4606 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
4607 OUT PVOID TokenInformation
,
4609 OUT PULONG ResultLength
4615 ZwQuerySecurityObject (
4616 IN HANDLE FileHandle
,
4617 IN SECURITY_INFORMATION SecurityInformation
,
4618 OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
4620 OUT PULONG ResultLength
4626 ZwQueryVolumeInformationFile (
4627 IN HANDLE FileHandle
,
4628 OUT PIO_STATUS_BLOCK IoStatusBlock
,
4629 OUT PVOID FsInformation
,
4631 IN FS_INFORMATION_CLASS FsInformationClass
4638 IN POBJECT_ATTRIBUTES NewFileObjectAttributes
,
4639 IN HANDLE KeyHandle
,
4640 IN POBJECT_ATTRIBUTES OldFileObjectAttributes
4647 IN HANDLE EventHandle
,
4648 OUT PLONG PreviousState OPTIONAL
4651 #if (VER_PRODUCTBUILD >= 2195)
4657 IN HANDLE KeyHandle
,
4658 IN HANDLE FileHandle
,
4662 #endif /* (VER_PRODUCTBUILD >= 2195) */
4668 IN HANDLE KeyHandle
,
4669 IN HANDLE FileHandle
4675 ZwSetDefaultLocale (
4676 IN BOOLEAN ThreadOrSystem
,
4680 #if (VER_PRODUCTBUILD >= 2195)
4685 ZwSetDefaultUILanguage (
4686 IN LANGID LanguageId
4693 IN HANDLE FileHandle
,
4694 OUT PIO_STATUS_BLOCK IoStatusBlock
,
4699 #endif /* (VER_PRODUCTBUILD >= 2195) */
4705 IN HANDLE EventHandle
,
4706 OUT PLONG PreviousState OPTIONAL
4712 ZwSetInformationProcess (
4713 IN HANDLE ProcessHandle
,
4714 IN PROCESSINFOCLASS ProcessInformationClass
,
4715 IN PVOID ProcessInformation
,
4716 IN ULONG ProcessInformationLength
4719 #if (VER_PRODUCTBUILD >= 2195)
4724 ZwSetSecurityObject (
4726 IN SECURITY_INFORMATION SecurityInformation
,
4727 IN PSECURITY_DESCRIPTOR SecurityDescriptor
4730 #endif /* (VER_PRODUCTBUILD >= 2195) */
4736 IN PLARGE_INTEGER NewTime
,
4737 OUT PLARGE_INTEGER OldTime OPTIONAL
4740 #if (VER_PRODUCTBUILD >= 2195)
4745 ZwSetVolumeInformationFile (
4746 IN HANDLE FileHandle
,
4747 OUT PIO_STATUS_BLOCK IoStatusBlock
,
4748 IN PVOID FsInformation
,
4750 IN FS_INFORMATION_CLASS FsInformationClass
4753 #endif /* (VER_PRODUCTBUILD >= 2195) */
4758 ZwTerminateProcess (
4759 IN HANDLE ProcessHandle OPTIONAL
,
4760 IN NTSTATUS ExitStatus
4767 /* "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\<DriverName>" */
4768 IN PUNICODE_STRING RegistryPath
4775 IN POBJECT_ATTRIBUTES KeyObjectAttributes
4781 ZwWaitForSingleObject (
4783 IN BOOLEAN Alertable
,
4784 IN PLARGE_INTEGER Timeout OPTIONAL
4790 ZwWaitForMultipleObjects (
4791 IN ULONG HandleCount
,
4793 IN WAIT_TYPE WaitType
,
4794 IN BOOLEAN Alertable
,
4795 IN PLARGE_INTEGER Timeout OPTIONAL
4811 #endif /* _NTIFS_ */