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
569 IN POBJECT_ATTRIBUTES ObjectAttributes
575 ZwDeviceIoControlFile(
576 IN HANDLE DeviceHandle
,
577 IN HANDLE Event OPTIONAL
,
578 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
579 IN PVOID UserApcContext OPTIONAL
,
580 OUT PIO_STATUS_BLOCK IoStatusBlock
,
581 IN ULONG IoControlCode
,
582 IN PVOID InputBuffer
,
583 IN ULONG InputBufferSize
,
584 OUT PVOID OutputBuffer
,
585 IN ULONG OutputBufferSize
590 ZwEnumerateBootEntries(
599 IN HANDLE FileHandle
,
600 OUT PIO_STATUS_BLOCK IoStatusBlock
605 ZwFlushWriteBuffer(VOID
);
611 IN HANDLE DeviceHandle
,
612 IN HANDLE Event OPTIONAL
,
613 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
614 IN PVOID ApcContext OPTIONAL
,
615 OUT PIO_STATUS_BLOCK IoStatusBlock
,
616 IN ULONG IoControlCode
,
617 IN PVOID InputBuffer
,
618 IN ULONG InputBufferSize
,
619 OUT PVOID OutputBuffer
,
620 IN ULONG OutputBufferSize
623 #ifdef NTOS_MODE_USER
627 IN PUNICODE_STRING DriverServiceName
635 IN HANDLE FileHandle
,
636 IN HANDLE Event OPTIONAL
,
637 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
638 IN PVOID ApcContext OPTIONAL
,
639 OUT PIO_STATUS_BLOCK IoStatusBlock
,
640 IN PLARGE_INTEGER ByteOffset
,
641 IN PLARGE_INTEGER Length
,
643 IN BOOLEAN FailImmediatedly
,
644 IN BOOLEAN ExclusiveLock
649 ZwNotifyChangeDirectoryFile(
650 IN HANDLE FileHandle
,
651 IN HANDLE Event OPTIONAL
,
652 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
653 IN PVOID ApcContext OPTIONAL
,
654 OUT PIO_STATUS_BLOCK IoStatusBlock
,
657 IN ULONG CompletionFilter
,
665 OUT PHANDLE FileHandle
,
666 IN ACCESS_MASK DesiredAccess
,
667 IN POBJECT_ATTRIBUTES ObjectAttributes
,
668 OUT PIO_STATUS_BLOCK IoStatusBlock
,
669 IN ULONG ShareAccess
,
676 OUT PHANDLE CompetionPort
,
677 IN ACCESS_MASK DesiredAccess
,
678 IN POBJECT_ATTRIBUTES ObjectAttributes
683 ZwQueryAttributesFile(
684 IN POBJECT_ATTRIBUTES ObjectAttributes
,
685 OUT PFILE_BASIC_INFORMATION FileInformation
690 ZwQueryBootEntryOrder(
705 ZwQueryDirectoryFile(
706 IN HANDLE FileHandle
,
707 IN HANDLE Event OPTIONAL
,
708 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
709 IN PVOID ApcContext OPTIONAL
,
710 OUT PIO_STATUS_BLOCK IoStatusBlock
,
711 OUT PVOID FileInformation
,
713 IN FILE_INFORMATION_CLASS FileInformationClass
,
714 IN BOOLEAN ReturnSingleEntry
,
715 IN PUNICODE_STRING FileName OPTIONAL
,
716 IN BOOLEAN RestartScan
722 IN HANDLE FileHandle
,
723 OUT PIO_STATUS_BLOCK IoStatusBlock
,
726 IN BOOLEAN ReturnSingleEntry
,
727 IN PVOID EaList OPTIONAL
,
728 IN ULONG EaListLength
,
729 IN PULONG EaIndex OPTIONAL
,
730 IN BOOLEAN RestartScan
735 ZwQueryFullAttributesFile(
736 IN POBJECT_ATTRIBUTES ObjectAttributes
,
737 OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
743 ZwQueryInformationFile(
744 IN HANDLE FileHandle
,
745 OUT PIO_STATUS_BLOCK IoStatusBlock
,
746 OUT PVOID FileInformation
,
748 IN FILE_INFORMATION_CLASS FileInformationClass
754 IN HANDLE IoCompletionHandle
,
755 IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass
,
756 OUT PVOID IoCompletionInformation
,
757 IN ULONG IoCompletionInformationLength
,
758 OUT PULONG ResultLength OPTIONAL
764 ZwQueryQuotaInformationFile(
765 IN HANDLE FileHandle
,
766 OUT PIO_STATUS_BLOCK IoStatusBlock
,
769 IN BOOLEAN ReturnSingleEntry
,
770 IN PVOID SidList OPTIONAL
,
771 IN ULONG SidListLength
,
772 IN PSID StartSid OPTIONAL
,
773 IN BOOLEAN RestartScan
779 ZwQueryVolumeInformationFile(
780 IN HANDLE FileHandle
,
781 OUT PIO_STATUS_BLOCK IoStatusBlock
,
782 OUT PVOID FsInformation
,
784 IN FS_INFORMATION_CLASS FsInformationClass
791 IN HANDLE FileHandle
,
792 IN HANDLE Event OPTIONAL
,
793 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
794 IN PVOID UserApcContext OPTIONAL
,
795 OUT PIO_STATUS_BLOCK IoStatusBlock
,
797 IN ULONG BufferLength
,
798 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
799 IN PULONG Key OPTIONAL
805 IN HANDLE FileHandle
,
806 IN HANDLE Event OPTIONAL
,
807 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
808 IN PVOID UserApcContext OPTIONAL
,
809 OUT PIO_STATUS_BLOCK UserIoStatusBlock
,
810 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
811 IN ULONG BufferLength
,
812 IN PLARGE_INTEGER ByteOffset
,
813 IN PULONG Key OPTIONAL
818 ZwRemoveIoCompletion(
819 IN HANDLE IoCompletionHandle
,
820 OUT PVOID
*CompletionKey
,
821 OUT PVOID
*CompletionContext
,
822 OUT PIO_STATUS_BLOCK IoStatusBlock
,
823 IN PLARGE_INTEGER Timeout OPTIONAL
843 IN HANDLE FileHandle
,
844 IN PIO_STATUS_BLOCK IoStatusBlock
,
852 ZwSetInformationFile(
853 IN HANDLE FileHandle
,
854 IN PIO_STATUS_BLOCK IoStatusBlock
,
855 IN PVOID FileInformation
,
857 IN FILE_INFORMATION_CLASS FileInformationClass
863 IN HANDLE IoCompletionPortHandle
,
864 IN PVOID CompletionKey
,
865 IN PVOID CompletionContext
,
866 IN NTSTATUS CompletionStatus
,
867 IN ULONG CompletionInformation
873 ZwSetQuotaInformationFile(
875 PIO_STATUS_BLOCK IoStatusBlock
,
883 ZwSetVolumeInformationFile(
884 IN HANDLE FileHandle
,
885 OUT PIO_STATUS_BLOCK IoStatusBlock
,
886 IN PVOID FsInformation
,
888 IN FS_INFORMATION_CLASS FsInformationClass
903 IN PUNICODE_STRING DriverServiceName
910 IN HANDLE FileHandle
,
911 OUT PIO_STATUS_BLOCK IoStatusBlock
,
912 IN PLARGE_INTEGER ByteOffset
,
913 IN PLARGE_INTEGER Lenght
,
914 OUT ULONG Key OPTIONAL
921 IN HANDLE FileHandle
,
922 IN HANDLE Event OPTIONAL
,
923 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
924 IN PVOID ApcContext OPTIONAL
,
925 OUT PIO_STATUS_BLOCK IoStatusBlock
,
928 IN PLARGE_INTEGER ByteOffset
,
929 IN PULONG Key OPTIONAL
935 IN HANDLE FileHandle
,
936 IN HANDLE Event OPTIONAL
,
937 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
938 IN PVOID ApcContext OPTIONAL
,
939 OUT PIO_STATUS_BLOCK IoStatusBlock
,
940 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
941 IN ULONG BufferLength
,
942 IN PLARGE_INTEGER ByteOffset
,
943 IN PULONG Key OPTIONAL