3 Copyright (c) Alex Ionescu. All rights reserved.
11 Function definitions for the I/O Manager.
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
34 IN PUNICODE_STRING EntryName
,
35 IN PUNICODE_STRING EntryValue
42 OUT PIO_STATUS_BLOCK IoStatusBlock
49 OUT PHANDLE FileHandle
,
50 IN ACCESS_MASK DesiredAccess
,
51 IN POBJECT_ATTRIBUTES ObjectAttributes
,
52 OUT PIO_STATUS_BLOCK IoStatusBlock
,
53 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
54 IN ULONG FileAttributes
,
56 IN ULONG CreateDisposition
,
57 IN ULONG CreateOptions
,
58 IN PVOID EaBuffer OPTIONAL
,
65 OUT PHANDLE IoCompletionHandle
,
66 IN ACCESS_MASK DesiredAccess
,
67 IN POBJECT_ATTRIBUTES ObjectAttributes
,
68 IN ULONG NumberOfConcurrentThreads
74 OUT PHANDLE MailSlotFileHandle
,
75 IN ACCESS_MASK DesiredAccess
,
76 IN POBJECT_ATTRIBUTES ObjectAttributes
,
77 OUT PIO_STATUS_BLOCK IoStatusBlock
,
78 IN ULONG FileAttributes
,
80 IN ULONG MaxMessageSize
,
81 IN PLARGE_INTEGER TimeOut
86 NtCreateNamedPipeFile(
87 OUT PHANDLE NamedPipeFileHandle
,
88 IN ACCESS_MASK DesiredAccess
,
89 IN POBJECT_ATTRIBUTES ObjectAttributes
,
90 OUT PIO_STATUS_BLOCK IoStatusBlock
,
92 IN ULONG CreateDisposition
,
93 IN ULONG CreateOptions
,
94 IN ULONG WriteModeMessage
,
95 IN ULONG ReadModeMessage
,
97 IN ULONG MaxInstances
,
98 IN ULONG InBufferSize
,
99 IN ULONG OutBufferSize
,
100 IN PLARGE_INTEGER DefaultTimeOut
106 IN PUNICODE_STRING EntryName
,
107 IN PUNICODE_STRING EntryValue
113 IN POBJECT_ATTRIBUTES ObjectAttributes
119 NtDeviceIoControlFile(
120 IN HANDLE DeviceHandle
,
121 IN HANDLE Event OPTIONAL
,
122 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
123 IN PVOID UserApcContext OPTIONAL
,
124 OUT PIO_STATUS_BLOCK IoStatusBlock
,
125 IN ULONG IoControlCode
,
126 IN PVOID InputBuffer
,
127 IN ULONG InputBufferSize
,
128 OUT PVOID OutputBuffer
,
129 IN ULONG OutputBufferSize
134 NtEnumerateBootEntries(
142 IN HANDLE FileHandle
,
143 OUT PIO_STATUS_BLOCK IoStatusBlock
148 NtFlushWriteBuffer(VOID
);
154 IN HANDLE DeviceHandle
,
155 IN HANDLE Event OPTIONAL
,
156 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
157 IN PVOID ApcContext OPTIONAL
,
158 OUT PIO_STATUS_BLOCK IoStatusBlock
,
159 IN ULONG IoControlCode
,
160 IN PVOID InputBuffer
,
161 IN ULONG InputBufferSize
,
162 OUT PVOID OutputBuffer
,
163 IN ULONG OutputBufferSize
169 IN PUNICODE_STRING DriverServiceName
176 IN HANDLE FileHandle
,
177 IN HANDLE Event OPTIONAL
,
178 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
179 IN PVOID ApcContext OPTIONAL
,
180 OUT PIO_STATUS_BLOCK IoStatusBlock
,
181 IN PLARGE_INTEGER ByteOffset
,
182 IN PLARGE_INTEGER Length
,
184 IN BOOLEAN FailImmediatedly
,
185 IN BOOLEAN ExclusiveLock
190 NtNotifyChangeDirectoryFile(
191 IN HANDLE FileHandle
,
192 IN HANDLE Event OPTIONAL
,
193 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
194 IN PVOID ApcContext OPTIONAL
,
195 OUT PIO_STATUS_BLOCK IoStatusBlock
,
198 IN ULONG CompletionFilter
,
206 OUT PHANDLE FileHandle
,
207 IN ACCESS_MASK DesiredAccess
,
208 IN POBJECT_ATTRIBUTES ObjectAttributes
,
209 OUT PIO_STATUS_BLOCK IoStatusBlock
,
210 IN ULONG ShareAccess
,
217 OUT PHANDLE CompetionPort
,
218 IN ACCESS_MASK DesiredAccess
,
219 IN POBJECT_ATTRIBUTES ObjectAttributes
224 NtQueryAttributesFile(
225 IN POBJECT_ATTRIBUTES ObjectAttributes
,
226 OUT PFILE_BASIC_INFORMATION FileInformation
231 NtQueryBootEntryOrder(
246 NtQueryDirectoryFile(
247 IN HANDLE FileHandle
,
248 IN HANDLE Event OPTIONAL
,
249 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
250 IN PVOID ApcContext OPTIONAL
,
251 OUT PIO_STATUS_BLOCK IoStatusBlock
,
252 OUT PVOID FileInformation
,
254 IN FILE_INFORMATION_CLASS FileInformationClass
,
255 IN BOOLEAN ReturnSingleEntry
,
256 IN PUNICODE_STRING FileName OPTIONAL
,
257 IN BOOLEAN RestartScan
263 IN HANDLE FileHandle
,
264 OUT PIO_STATUS_BLOCK IoStatusBlock
,
267 IN BOOLEAN ReturnSingleEntry
,
268 IN PVOID EaList OPTIONAL
,
269 IN ULONG EaListLength
,
270 IN PULONG EaIndex OPTIONAL
,
271 IN BOOLEAN RestartScan
276 NtQueryFullAttributesFile(
277 IN POBJECT_ATTRIBUTES ObjectAttributes
,
278 OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
284 NtQueryInformationFile(
285 IN HANDLE FileHandle
,
286 OUT PIO_STATUS_BLOCK IoStatusBlock
,
287 OUT PVOID FileInformation
,
289 IN FILE_INFORMATION_CLASS FileInformationClass
295 IN HANDLE IoCompletionHandle
,
296 IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass
,
297 OUT PVOID IoCompletionInformation
,
298 IN ULONG IoCompletionInformationLength
,
299 OUT PULONG ResultLength OPTIONAL
305 NtQueryQuotaInformationFile(
306 IN HANDLE FileHandle
,
307 OUT PIO_STATUS_BLOCK IoStatusBlock
,
310 IN BOOLEAN ReturnSingleEntry
,
311 IN PVOID SidList OPTIONAL
,
312 IN ULONG SidListLength
,
313 IN PSID StartSid OPTIONAL
,
314 IN BOOLEAN RestartScan
320 NtQueryVolumeInformationFile(
321 IN HANDLE FileHandle
,
322 OUT PIO_STATUS_BLOCK IoStatusBlock
,
323 OUT PVOID FsInformation
,
325 IN FS_INFORMATION_CLASS FsInformationClass
332 IN HANDLE FileHandle
,
333 IN HANDLE Event OPTIONAL
,
334 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
335 IN PVOID UserApcContext OPTIONAL
,
336 OUT PIO_STATUS_BLOCK IoStatusBlock
,
338 IN ULONG BufferLength
,
339 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
340 IN PULONG Key OPTIONAL
346 IN HANDLE FileHandle
,
347 IN HANDLE Event OPTIONAL
,
348 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
349 IN PVOID UserApcContext OPTIONAL
,
350 OUT PIO_STATUS_BLOCK UserIoStatusBlock
,
351 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
352 IN ULONG BufferLength
,
353 IN PLARGE_INTEGER ByteOffset
,
354 IN PULONG Key OPTIONAL
359 NtRemoveIoCompletion(
360 IN HANDLE IoCompletionHandle
,
361 OUT PVOID
*CompletionKey
,
362 OUT PVOID
*CompletionContext
,
363 OUT PIO_STATUS_BLOCK IoStatusBlock
,
364 IN PLARGE_INTEGER Timeout OPTIONAL
384 IN HANDLE FileHandle
,
385 IN PIO_STATUS_BLOCK IoStatusBlock
,
393 NtSetInformationFile(
394 IN HANDLE FileHandle
,
395 IN PIO_STATUS_BLOCK IoStatusBlock
,
396 IN PVOID FileInformation
,
398 IN FILE_INFORMATION_CLASS FileInformationClass
404 IN HANDLE IoCompletionPortHandle
,
405 IN PVOID CompletionKey
,
406 IN PVOID CompletionContext
,
407 IN NTSTATUS CompletionStatus
,
408 IN ULONG CompletionInformation
414 NtSetQuotaInformationFile(
416 PIO_STATUS_BLOCK IoStatusBlock
,
424 NtSetVolumeInformationFile(
425 IN HANDLE FileHandle
,
426 OUT PIO_STATUS_BLOCK IoStatusBlock
,
427 IN PVOID FsInformation
,
429 IN FS_INFORMATION_CLASS FsInformationClass
443 IN PUNICODE_STRING DriverServiceName
450 IN HANDLE FileHandle
,
451 OUT PIO_STATUS_BLOCK IoStatusBlock
,
452 IN PLARGE_INTEGER ByteOffset
,
453 IN PLARGE_INTEGER Lenght
,
454 OUT ULONG Key OPTIONAL
461 IN HANDLE FileHandle
,
462 IN HANDLE Event OPTIONAL
,
463 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
464 IN PVOID ApcContext OPTIONAL
,
465 OUT PIO_STATUS_BLOCK IoStatusBlock
,
468 IN PLARGE_INTEGER ByteOffset
,
469 IN PULONG Key OPTIONAL
475 IN HANDLE FileHandle
,
476 IN HANDLE Event OPTIONAL
,
477 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
478 IN PVOID ApcContext OPTIONAL
,
479 OUT PIO_STATUS_BLOCK IoStatusBlock
,
480 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
481 IN ULONG BufferLength
,
482 IN PLARGE_INTEGER ByteOffset
,
483 IN PULONG Key OPTIONAL
489 IN PUNICODE_STRING EntryName
,
490 IN PUNICODE_STRING EntryValue
496 IN HANDLE FileHandle
,
497 OUT PIO_STATUS_BLOCK IoStatusBlock
504 OUT PHANDLE FileHandle
,
505 IN ACCESS_MASK DesiredAccess
,
506 IN POBJECT_ATTRIBUTES ObjectAttributes
,
507 OUT PIO_STATUS_BLOCK IoStatusBlock
,
508 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
509 IN ULONG FileAttributes
,
510 IN ULONG ShareAccess
,
511 IN ULONG CreateDisposition
,
512 IN ULONG CreateOptions
,
513 IN PVOID EaBuffer OPTIONAL
,
519 ZwCreateIoCompletion(
520 OUT PHANDLE IoCompletionHandle
,
521 IN ACCESS_MASK DesiredAccess
,
522 IN POBJECT_ATTRIBUTES ObjectAttributes
,
523 IN ULONG NumberOfConcurrentThreads
528 ZwCreateMailslotFile(
529 OUT PHANDLE MailSlotFileHandle
,
530 IN ACCESS_MASK DesiredAccess
,
531 IN POBJECT_ATTRIBUTES ObjectAttributes
,
532 OUT PIO_STATUS_BLOCK IoStatusBlock
,
533 IN ULONG FileAttributes
,
534 IN ULONG ShareAccess
,
535 IN ULONG MaxMessageSize
,
536 IN PLARGE_INTEGER TimeOut
541 ZwCreateNamedPipeFile(
542 OUT PHANDLE NamedPipeFileHandle
,
543 IN ACCESS_MASK DesiredAccess
,
544 IN POBJECT_ATTRIBUTES ObjectAttributes
,
545 OUT PIO_STATUS_BLOCK IoStatusBlock
,
546 IN ULONG ShareAccess
,
547 IN ULONG CreateDisposition
,
548 IN ULONG CreateOptions
,
549 IN ULONG WriteModeMessage
,
550 IN ULONG ReadModeMessage
,
551 IN ULONG NonBlocking
,
552 IN ULONG MaxInstances
,
553 IN ULONG InBufferSize
,
554 IN ULONG OutBufferSize
,
555 IN PLARGE_INTEGER DefaultTimeOut
561 IN PUNICODE_STRING EntryName
,
562 IN PUNICODE_STRING EntryValue
568 IN POBJECT_ATTRIBUTES ObjectAttributes
574 ZwDeviceIoControlFile(
575 IN HANDLE DeviceHandle
,
576 IN HANDLE Event OPTIONAL
,
577 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
578 IN PVOID UserApcContext OPTIONAL
,
579 OUT PIO_STATUS_BLOCK IoStatusBlock
,
580 IN ULONG IoControlCode
,
581 IN PVOID InputBuffer
,
582 IN ULONG InputBufferSize
,
583 OUT PVOID OutputBuffer
,
584 IN ULONG OutputBufferSize
589 ZwEnumerateBootEntries(
597 IN HANDLE FileHandle
,
598 OUT PIO_STATUS_BLOCK IoStatusBlock
603 ZwFlushWriteBuffer(VOID
);
609 IN HANDLE DeviceHandle
,
610 IN HANDLE Event OPTIONAL
,
611 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
612 IN PVOID ApcContext OPTIONAL
,
613 OUT PIO_STATUS_BLOCK IoStatusBlock
,
614 IN ULONG IoControlCode
,
615 IN PVOID InputBuffer
,
616 IN ULONG InputBufferSize
,
617 OUT PVOID OutputBuffer
,
618 IN ULONG OutputBufferSize
621 #ifdef NTOS_MODE_USER
625 IN PUNICODE_STRING DriverServiceName
633 IN HANDLE FileHandle
,
634 IN HANDLE Event OPTIONAL
,
635 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
636 IN PVOID ApcContext OPTIONAL
,
637 OUT PIO_STATUS_BLOCK IoStatusBlock
,
638 IN PLARGE_INTEGER ByteOffset
,
639 IN PLARGE_INTEGER Length
,
641 IN BOOLEAN FailImmediatedly
,
642 IN BOOLEAN ExclusiveLock
647 ZwNotifyChangeDirectoryFile(
648 IN HANDLE FileHandle
,
649 IN HANDLE Event OPTIONAL
,
650 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
651 IN PVOID ApcContext OPTIONAL
,
652 OUT PIO_STATUS_BLOCK IoStatusBlock
,
655 IN ULONG CompletionFilter
,
663 OUT PHANDLE FileHandle
,
664 IN ACCESS_MASK DesiredAccess
,
665 IN POBJECT_ATTRIBUTES ObjectAttributes
,
666 OUT PIO_STATUS_BLOCK IoStatusBlock
,
667 IN ULONG ShareAccess
,
674 OUT PHANDLE CompetionPort
,
675 IN ACCESS_MASK DesiredAccess
,
676 IN POBJECT_ATTRIBUTES ObjectAttributes
681 ZwQueryAttributesFile(
682 IN POBJECT_ATTRIBUTES ObjectAttributes
,
683 OUT PFILE_BASIC_INFORMATION FileInformation
688 ZwQueryBootEntryOrder(
703 ZwQueryDirectoryFile(
704 IN HANDLE FileHandle
,
705 IN HANDLE Event OPTIONAL
,
706 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
707 IN PVOID ApcContext OPTIONAL
,
708 OUT PIO_STATUS_BLOCK IoStatusBlock
,
709 OUT PVOID FileInformation
,
711 IN FILE_INFORMATION_CLASS FileInformationClass
,
712 IN BOOLEAN ReturnSingleEntry
,
713 IN PUNICODE_STRING FileName OPTIONAL
,
714 IN BOOLEAN RestartScan
720 IN HANDLE FileHandle
,
721 OUT PIO_STATUS_BLOCK IoStatusBlock
,
724 IN BOOLEAN ReturnSingleEntry
,
725 IN PVOID EaList OPTIONAL
,
726 IN ULONG EaListLength
,
727 IN PULONG EaIndex OPTIONAL
,
728 IN BOOLEAN RestartScan
733 ZwQueryFullAttributesFile(
734 IN POBJECT_ATTRIBUTES ObjectAttributes
,
735 OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
741 ZwQueryInformationFile(
742 IN HANDLE FileHandle
,
743 OUT PIO_STATUS_BLOCK IoStatusBlock
,
744 OUT PVOID FileInformation
,
746 IN FILE_INFORMATION_CLASS FileInformationClass
752 IN HANDLE IoCompletionHandle
,
753 IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass
,
754 OUT PVOID IoCompletionInformation
,
755 IN ULONG IoCompletionInformationLength
,
756 OUT PULONG ResultLength OPTIONAL
762 ZwQueryQuotaInformationFile(
763 IN HANDLE FileHandle
,
764 OUT PIO_STATUS_BLOCK IoStatusBlock
,
767 IN BOOLEAN ReturnSingleEntry
,
768 IN PVOID SidList OPTIONAL
,
769 IN ULONG SidListLength
,
770 IN PSID StartSid OPTIONAL
,
771 IN BOOLEAN RestartScan
777 ZwQueryVolumeInformationFile(
778 IN HANDLE FileHandle
,
779 OUT PIO_STATUS_BLOCK IoStatusBlock
,
780 OUT PVOID FsInformation
,
782 IN FS_INFORMATION_CLASS FsInformationClass
789 IN HANDLE FileHandle
,
790 IN HANDLE Event OPTIONAL
,
791 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
792 IN PVOID UserApcContext OPTIONAL
,
793 OUT PIO_STATUS_BLOCK IoStatusBlock
,
795 IN ULONG BufferLength
,
796 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
797 IN PULONG Key OPTIONAL
803 IN HANDLE FileHandle
,
804 IN HANDLE Event OPTIONAL
,
805 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
806 IN PVOID UserApcContext OPTIONAL
,
807 OUT PIO_STATUS_BLOCK UserIoStatusBlock
,
808 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
809 IN ULONG BufferLength
,
810 IN PLARGE_INTEGER ByteOffset
,
811 IN PULONG Key OPTIONAL
816 ZwRemoveIoCompletion(
817 IN HANDLE IoCompletionHandle
,
818 OUT PVOID
*CompletionKey
,
819 OUT PVOID
*CompletionContext
,
820 OUT PIO_STATUS_BLOCK IoStatusBlock
,
821 IN PLARGE_INTEGER Timeout OPTIONAL
841 IN HANDLE FileHandle
,
842 IN PIO_STATUS_BLOCK IoStatusBlock
,
850 ZwSetInformationFile(
851 IN HANDLE FileHandle
,
852 IN PIO_STATUS_BLOCK IoStatusBlock
,
853 IN PVOID FileInformation
,
855 IN FILE_INFORMATION_CLASS FileInformationClass
861 IN HANDLE IoCompletionPortHandle
,
862 IN PVOID CompletionKey
,
863 IN PVOID CompletionContext
,
864 IN NTSTATUS CompletionStatus
,
865 IN ULONG CompletionInformation
871 ZwSetQuotaInformationFile(
873 PIO_STATUS_BLOCK IoStatusBlock
,
881 ZwSetVolumeInformationFile(
882 IN HANDLE FileHandle
,
883 OUT PIO_STATUS_BLOCK IoStatusBlock
,
884 IN PVOID FsInformation
,
886 IN FS_INFORMATION_CLASS FsInformationClass
901 IN PUNICODE_STRING DriverServiceName
908 IN HANDLE FileHandle
,
909 OUT PIO_STATUS_BLOCK IoStatusBlock
,
910 IN PLARGE_INTEGER ByteOffset
,
911 IN PLARGE_INTEGER Lenght
,
912 OUT ULONG Key OPTIONAL
919 IN HANDLE FileHandle
,
920 IN HANDLE Event OPTIONAL
,
921 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
922 IN PVOID ApcContext OPTIONAL
,
923 OUT PIO_STATUS_BLOCK IoStatusBlock
,
926 IN PLARGE_INTEGER ByteOffset
,
927 IN PULONG Key OPTIONAL
933 IN HANDLE FileHandle
,
934 IN HANDLE Event OPTIONAL
,
935 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
936 IN PVOID ApcContext OPTIONAL
,
937 OUT PIO_STATUS_BLOCK IoStatusBlock
,
938 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
939 IN ULONG BufferLength
,
940 IN PLARGE_INTEGER ByteOffset
,
941 IN PULONG Key OPTIONAL