3 Copyright (c) Alex Ionescu. All rights reserved.
11 Function definitions for the I/O Manager.
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
31 #ifndef NTOS_MODE_USER
35 IN
struct _LOADER_PARAMETER_BLOCK
*LoaderBlock
,
36 IN PSTRING NtDeviceName
,
37 OUT PUCHAR NtSystemPath
,
38 OUT PSTRING NtSystemPathString
43 IoSynchronousInvalidateDeviceRelations(
44 IN PDEVICE_OBJECT DeviceObject
,
45 IN DEVICE_RELATION_TYPE Type
56 IN PBOOT_ENTRY BootEntry
,
64 IN PEFI_DRIVER_ENTRY BootEntry
,
73 OUT PIO_STATUS_BLOCK IoStatusBlock
80 OUT PHANDLE FileHandle
,
81 IN ACCESS_MASK DesiredAccess
,
82 IN POBJECT_ATTRIBUTES ObjectAttributes
,
83 OUT PIO_STATUS_BLOCK IoStatusBlock
,
84 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
85 IN ULONG FileAttributes
,
87 IN ULONG CreateDisposition
,
88 IN ULONG CreateOptions
,
89 IN PVOID EaBuffer OPTIONAL
,
97 OUT PHANDLE IoCompletionHandle
,
98 IN ACCESS_MASK DesiredAccess
,
99 IN POBJECT_ATTRIBUTES ObjectAttributes
,
100 IN ULONG NumberOfConcurrentThreads
106 NtCreateMailslotFile(
107 OUT PHANDLE MailSlotFileHandle
,
108 IN ACCESS_MASK DesiredAccess
,
109 IN POBJECT_ATTRIBUTES ObjectAttributes
,
110 OUT PIO_STATUS_BLOCK IoStatusBlock
,
111 IN ULONG FileAttributes
,
112 IN ULONG ShareAccess
,
113 IN ULONG MaxMessageSize
,
114 IN PLARGE_INTEGER TimeOut
120 NtCreateNamedPipeFile(
121 OUT PHANDLE NamedPipeFileHandle
,
122 IN ACCESS_MASK DesiredAccess
,
123 IN POBJECT_ATTRIBUTES ObjectAttributes
,
124 OUT PIO_STATUS_BLOCK IoStatusBlock
,
125 IN ULONG ShareAccess
,
126 IN ULONG CreateDisposition
,
127 IN ULONG CreateOptions
,
128 IN ULONG WriteModeMessage
,
129 IN ULONG ReadModeMessage
,
130 IN ULONG NonBlocking
,
131 IN ULONG MaxInstances
,
132 IN ULONG InBufferSize
,
133 IN ULONG OutBufferSize
,
134 IN PLARGE_INTEGER DefaultTimeOut
156 IN POBJECT_ATTRIBUTES ObjectAttributes
162 NtDeviceIoControlFile(
163 IN HANDLE DeviceHandle
,
164 IN HANDLE Event OPTIONAL
,
165 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
166 IN PVOID UserApcContext OPTIONAL
,
167 OUT PIO_STATUS_BLOCK IoStatusBlock
,
168 IN ULONG IoControlCode
,
169 IN PVOID InputBuffer
,
170 IN ULONG InputBufferSize
,
171 OUT PVOID OutputBuffer
,
172 IN ULONG OutputBufferSize
178 NtEnumerateBootEntries(
180 IN PULONG BufferLength
186 NtEnumerateDriverEntries(
188 IN PULONG BufferLength
195 IN HANDLE FileHandle
,
196 OUT PIO_STATUS_BLOCK IoStatusBlock
202 NtFlushWriteBuffer(VOID
);
208 IN HANDLE DeviceHandle
,
209 IN HANDLE Event OPTIONAL
,
210 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
211 IN PVOID ApcContext OPTIONAL
,
212 OUT PIO_STATUS_BLOCK IoStatusBlock
,
213 IN ULONG IoControlCode
,
214 IN PVOID InputBuffer
,
215 IN ULONG InputBufferSize
,
216 OUT PVOID OutputBuffer
,
217 IN ULONG OutputBufferSize
224 IN PUNICODE_STRING DriverServiceName
231 IN HANDLE FileHandle
,
232 IN HANDLE Event OPTIONAL
,
233 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
234 IN PVOID ApcContext OPTIONAL
,
235 OUT PIO_STATUS_BLOCK IoStatusBlock
,
236 IN PLARGE_INTEGER ByteOffset
,
237 IN PLARGE_INTEGER Length
,
239 IN BOOLEAN FailImmediatedly
,
240 IN BOOLEAN ExclusiveLock
247 IN PBOOT_ENTRY BootEntry
254 IN PEFI_DRIVER_ENTRY DriverEntry
260 NtNotifyChangeDirectoryFile(
261 IN HANDLE FileHandle
,
262 IN HANDLE Event OPTIONAL
,
263 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
264 IN PVOID ApcContext OPTIONAL
,
265 OUT PIO_STATUS_BLOCK IoStatusBlock
,
268 IN ULONG CompletionFilter
,
276 OUT PHANDLE FileHandle
,
277 IN ACCESS_MASK DesiredAccess
,
278 IN POBJECT_ATTRIBUTES ObjectAttributes
,
279 OUT PIO_STATUS_BLOCK IoStatusBlock
,
280 IN ULONG ShareAccess
,
288 OUT PHANDLE CompetionPort
,
289 IN ACCESS_MASK DesiredAccess
,
290 IN POBJECT_ATTRIBUTES ObjectAttributes
296 NtQueryAttributesFile(
297 IN POBJECT_ATTRIBUTES ObjectAttributes
,
298 OUT PFILE_BASIC_INFORMATION FileInformation
303 NtQueryDriverEntryOrder(
311 NtQueryBootEntryOrder(
320 IN PBOOT_OPTIONS BootOptions
,
321 IN PULONG BootOptionsLength
327 NtQueryDirectoryFile(
328 IN HANDLE FileHandle
,
329 IN HANDLE Event OPTIONAL
,
330 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
331 IN PVOID ApcContext OPTIONAL
,
332 OUT PIO_STATUS_BLOCK IoStatusBlock
,
333 OUT PVOID FileInformation
,
335 IN FILE_INFORMATION_CLASS FileInformationClass
,
336 IN BOOLEAN ReturnSingleEntry
,
337 IN PUNICODE_STRING FileName OPTIONAL
,
338 IN BOOLEAN RestartScan
345 IN HANDLE FileHandle
,
346 OUT PIO_STATUS_BLOCK IoStatusBlock
,
349 IN BOOLEAN ReturnSingleEntry
,
350 IN PVOID EaList OPTIONAL
,
351 IN ULONG EaListLength
,
352 IN PULONG EaIndex OPTIONAL
,
353 IN BOOLEAN RestartScan
359 NtQueryFullAttributesFile(
360 IN POBJECT_ATTRIBUTES ObjectAttributes
,
361 OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
367 NtQueryInformationFile(
368 IN HANDLE FileHandle
,
369 OUT PIO_STATUS_BLOCK IoStatusBlock
,
370 OUT PVOID FileInformation
,
372 IN FILE_INFORMATION_CLASS FileInformationClass
379 IN HANDLE IoCompletionHandle
,
380 IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass
,
381 OUT PVOID IoCompletionInformation
,
382 IN ULONG IoCompletionInformationLength
,
383 OUT PULONG ResultLength OPTIONAL
389 NtQueryQuotaInformationFile(
390 IN HANDLE FileHandle
,
391 OUT PIO_STATUS_BLOCK IoStatusBlock
,
394 IN BOOLEAN ReturnSingleEntry
,
395 IN PVOID SidList OPTIONAL
,
396 IN ULONG SidListLength
,
397 IN PSID StartSid OPTIONAL
,
398 IN BOOLEAN RestartScan
404 NtQueryVolumeInformationFile(
405 IN HANDLE FileHandle
,
406 OUT PIO_STATUS_BLOCK IoStatusBlock
,
407 OUT PVOID FsInformation
,
409 IN FS_INFORMATION_CLASS FsInformationClass
416 IN HANDLE FileHandle
,
417 IN HANDLE Event OPTIONAL
,
418 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
419 IN PVOID UserApcContext OPTIONAL
,
420 OUT PIO_STATUS_BLOCK IoStatusBlock
,
422 IN ULONG BufferLength
,
423 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
424 IN PULONG Key OPTIONAL
431 IN HANDLE FileHandle
,
432 IN HANDLE Event OPTIONAL
,
433 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
434 IN PVOID UserApcContext OPTIONAL
,
435 OUT PIO_STATUS_BLOCK UserIoStatusBlock
,
436 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
437 IN ULONG BufferLength
,
438 IN PLARGE_INTEGER ByteOffset
,
439 IN PULONG Key OPTIONAL
445 NtRemoveIoCompletion(
446 IN HANDLE IoCompletionHandle
,
447 OUT PVOID
*CompletionKey
,
448 OUT PVOID
*CompletionContext
,
449 OUT PIO_STATUS_BLOCK IoStatusBlock
,
450 IN PLARGE_INTEGER Timeout OPTIONAL
465 IN PBOOT_OPTIONS BootOptions
,
466 IN ULONG FieldsToChange
471 NtSetDriverEntryOrder(
480 IN HANDLE FileHandle
,
481 IN PIO_STATUS_BLOCK IoStatusBlock
,
489 NtSetInformationFile(
490 IN HANDLE FileHandle
,
491 IN PIO_STATUS_BLOCK IoStatusBlock
,
492 IN PVOID FileInformation
,
494 IN FILE_INFORMATION_CLASS FileInformationClass
501 IN HANDLE IoCompletionPortHandle
,
502 IN PVOID CompletionKey
,
503 IN PVOID CompletionContext
,
504 IN NTSTATUS CompletionStatus
,
505 IN ULONG CompletionInformation
511 NtSetQuotaInformationFile(
513 PIO_STATUS_BLOCK IoStatusBlock
,
521 NtSetVolumeInformationFile(
522 IN HANDLE FileHandle
,
523 OUT PIO_STATUS_BLOCK IoStatusBlock
,
524 IN PVOID FsInformation
,
526 IN FS_INFORMATION_CLASS FsInformationClass
533 PFILE_PATH InputFilePath
,
535 PFILE_PATH OutputFilePath
,
536 ULONG OutputFilePathLength
543 IN PUNICODE_STRING DriverServiceName
550 IN HANDLE FileHandle
,
551 OUT PIO_STATUS_BLOCK IoStatusBlock
,
552 IN PLARGE_INTEGER ByteOffset
,
553 IN PLARGE_INTEGER Lenght
,
554 OUT ULONG Key OPTIONAL
561 IN HANDLE FileHandle
,
562 IN HANDLE Event OPTIONAL
,
563 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
564 IN PVOID ApcContext OPTIONAL
,
565 OUT PIO_STATUS_BLOCK IoStatusBlock
,
568 IN PLARGE_INTEGER ByteOffset
,
569 IN PULONG Key OPTIONAL
576 IN HANDLE FileHandle
,
577 IN HANDLE Event OPTIONAL
,
578 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
579 IN PVOID ApcContext OPTIONAL
,
580 OUT PIO_STATUS_BLOCK IoStatusBlock
,
581 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
582 IN ULONG BufferLength
,
583 IN PLARGE_INTEGER ByteOffset
,
584 IN PULONG Key OPTIONAL
591 IN PUNICODE_STRING EntryName
,
592 IN PUNICODE_STRING EntryValue
599 IN HANDLE FileHandle
,
600 OUT PIO_STATUS_BLOCK IoStatusBlock
607 OUT PHANDLE FileHandle
,
608 IN ACCESS_MASK DesiredAccess
,
609 IN POBJECT_ATTRIBUTES ObjectAttributes
,
610 OUT PIO_STATUS_BLOCK IoStatusBlock
,
611 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
612 IN ULONG FileAttributes
,
613 IN ULONG ShareAccess
,
614 IN ULONG CreateDisposition
,
615 IN ULONG CreateOptions
,
616 IN PVOID EaBuffer OPTIONAL
,
623 ZwCreateIoCompletion(
624 OUT PHANDLE IoCompletionHandle
,
625 IN ACCESS_MASK DesiredAccess
,
626 IN POBJECT_ATTRIBUTES ObjectAttributes
,
627 IN ULONG NumberOfConcurrentThreads
633 ZwCreateMailslotFile(
634 OUT PHANDLE MailSlotFileHandle
,
635 IN ACCESS_MASK DesiredAccess
,
636 IN POBJECT_ATTRIBUTES ObjectAttributes
,
637 OUT PIO_STATUS_BLOCK IoStatusBlock
,
638 IN ULONG FileAttributes
,
639 IN ULONG ShareAccess
,
640 IN ULONG MaxMessageSize
,
641 IN PLARGE_INTEGER TimeOut
647 ZwCreateNamedPipeFile(
648 OUT PHANDLE NamedPipeFileHandle
,
649 IN ACCESS_MASK DesiredAccess
,
650 IN POBJECT_ATTRIBUTES ObjectAttributes
,
651 OUT PIO_STATUS_BLOCK IoStatusBlock
,
652 IN ULONG ShareAccess
,
653 IN ULONG CreateDisposition
,
654 IN ULONG CreateOptions
,
655 IN ULONG WriteModeMessage
,
656 IN ULONG ReadModeMessage
,
657 IN ULONG NonBlocking
,
658 IN ULONG MaxInstances
,
659 IN ULONG InBufferSize
,
660 IN ULONG OutBufferSize
,
661 IN PLARGE_INTEGER DefaultTimeOut
668 IN PUNICODE_STRING EntryName
,
669 IN PUNICODE_STRING EntryValue
676 IN POBJECT_ATTRIBUTES ObjectAttributes
682 ZwDeviceIoControlFile(
683 IN HANDLE DeviceHandle
,
684 IN HANDLE Event OPTIONAL
,
685 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
686 IN PVOID UserApcContext OPTIONAL
,
687 OUT PIO_STATUS_BLOCK IoStatusBlock
,
688 IN ULONG IoControlCode
,
689 IN PVOID InputBuffer
,
690 IN ULONG InputBufferSize
,
691 OUT PVOID OutputBuffer
,
692 IN ULONG OutputBufferSize
699 IN HANDLE FileHandle
,
700 OUT PIO_STATUS_BLOCK IoStatusBlock
706 ZwFlushWriteBuffer(VOID
);
712 IN HANDLE DeviceHandle
,
713 IN HANDLE Event OPTIONAL
,
714 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
715 IN PVOID ApcContext OPTIONAL
,
716 OUT PIO_STATUS_BLOCK IoStatusBlock
,
717 IN ULONG IoControlCode
,
718 IN PVOID InputBuffer
,
719 IN ULONG InputBufferSize
,
720 OUT PVOID OutputBuffer
,
721 IN ULONG OutputBufferSize
724 #ifdef NTOS_MODE_USER
729 IN PUNICODE_STRING DriverServiceName
737 IN HANDLE FileHandle
,
738 IN HANDLE Event OPTIONAL
,
739 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
740 IN PVOID ApcContext OPTIONAL
,
741 OUT PIO_STATUS_BLOCK IoStatusBlock
,
742 IN PLARGE_INTEGER ByteOffset
,
743 IN PLARGE_INTEGER Length
,
745 IN BOOLEAN FailImmediatedly
,
746 IN BOOLEAN ExclusiveLock
752 ZwNotifyChangeDirectoryFile(
753 IN HANDLE FileHandle
,
754 IN HANDLE Event OPTIONAL
,
755 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
756 IN PVOID ApcContext OPTIONAL
,
757 OUT PIO_STATUS_BLOCK IoStatusBlock
,
760 IN ULONG CompletionFilter
,
768 OUT PHANDLE FileHandle
,
769 IN ACCESS_MASK DesiredAccess
,
770 IN POBJECT_ATTRIBUTES ObjectAttributes
,
771 OUT PIO_STATUS_BLOCK IoStatusBlock
,
772 IN ULONG ShareAccess
,
780 OUT PHANDLE CompetionPort
,
781 IN ACCESS_MASK DesiredAccess
,
782 IN POBJECT_ATTRIBUTES ObjectAttributes
788 ZwQueryAttributesFile(
789 IN POBJECT_ATTRIBUTES ObjectAttributes
,
790 OUT PFILE_BASIC_INFORMATION FileInformation
796 ZwQueryDirectoryFile(
797 IN HANDLE FileHandle
,
798 IN HANDLE Event OPTIONAL
,
799 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
800 IN PVOID ApcContext OPTIONAL
,
801 OUT PIO_STATUS_BLOCK IoStatusBlock
,
802 OUT PVOID FileInformation
,
804 IN FILE_INFORMATION_CLASS FileInformationClass
,
805 IN BOOLEAN ReturnSingleEntry
,
806 IN PUNICODE_STRING FileName OPTIONAL
,
807 IN BOOLEAN RestartScan
810 #ifdef NTOS_MODE_USER
815 IN HANDLE FileHandle
,
816 OUT PIO_STATUS_BLOCK IoStatusBlock
,
819 IN BOOLEAN ReturnSingleEntry
,
820 IN PVOID EaList OPTIONAL
,
821 IN ULONG EaListLength
,
822 IN PULONG EaIndex OPTIONAL
,
823 IN BOOLEAN RestartScan
830 ZwQueryFullAttributesFile(
831 IN POBJECT_ATTRIBUTES ObjectAttributes
,
832 OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
838 ZwQueryInformationFile(
839 IN HANDLE FileHandle
,
840 OUT PIO_STATUS_BLOCK IoStatusBlock
,
841 OUT PVOID FileInformation
,
843 IN FILE_INFORMATION_CLASS FileInformationClass
850 IN HANDLE IoCompletionHandle
,
851 IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass
,
852 OUT PVOID IoCompletionInformation
,
853 IN ULONG IoCompletionInformationLength
,
854 OUT PULONG ResultLength OPTIONAL
860 ZwQueryQuotaInformationFile(
861 IN HANDLE FileHandle
,
862 OUT PIO_STATUS_BLOCK IoStatusBlock
,
865 IN BOOLEAN ReturnSingleEntry
,
866 IN PVOID SidList OPTIONAL
,
867 IN ULONG SidListLength
,
868 IN PSID StartSid OPTIONAL
,
869 IN BOOLEAN RestartScan
875 ZwQueryVolumeInformationFile(
876 IN HANDLE FileHandle
,
877 OUT PIO_STATUS_BLOCK IoStatusBlock
,
878 OUT PVOID FsInformation
,
880 IN FS_INFORMATION_CLASS FsInformationClass
887 IN HANDLE FileHandle
,
888 IN HANDLE Event OPTIONAL
,
889 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
890 IN PVOID UserApcContext OPTIONAL
,
891 OUT PIO_STATUS_BLOCK IoStatusBlock
,
893 IN ULONG BufferLength
,
894 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
895 IN PULONG Key OPTIONAL
902 IN HANDLE FileHandle
,
903 IN HANDLE Event OPTIONAL
,
904 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
905 IN PVOID UserApcContext OPTIONAL
,
906 OUT PIO_STATUS_BLOCK UserIoStatusBlock
,
907 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
908 IN ULONG BufferLength
,
909 IN PLARGE_INTEGER ByteOffset
,
910 IN PULONG Key OPTIONAL
916 ZwRemoveIoCompletion(
917 IN HANDLE IoCompletionHandle
,
918 OUT PVOID
*CompletionKey
,
919 OUT PVOID
*CompletionContext
,
920 OUT PIO_STATUS_BLOCK IoStatusBlock
,
921 IN PLARGE_INTEGER Timeout OPTIONAL
924 #ifdef NTOS_MODE_USER
929 IN HANDLE FileHandle
,
930 IN PIO_STATUS_BLOCK IoStatusBlock
,
939 ZwSetInformationFile(
940 IN HANDLE FileHandle
,
941 IN PIO_STATUS_BLOCK IoStatusBlock
,
942 IN PVOID FileInformation
,
944 IN FILE_INFORMATION_CLASS FileInformationClass
951 IN HANDLE IoCompletionPortHandle
,
952 IN PVOID CompletionKey
,
953 IN PVOID CompletionContext
,
954 IN NTSTATUS CompletionStatus
,
955 IN ULONG CompletionInformation
961 ZwSetQuotaInformationFile(
963 PIO_STATUS_BLOCK IoStatusBlock
,
971 ZwSetVolumeInformationFile(
972 IN HANDLE FileHandle
,
973 OUT PIO_STATUS_BLOCK IoStatusBlock
,
974 IN PVOID FsInformation
,
976 IN FS_INFORMATION_CLASS FsInformationClass
983 IN PUNICODE_STRING DriverServiceName
990 IN HANDLE FileHandle
,
991 OUT PIO_STATUS_BLOCK IoStatusBlock
,
992 IN PLARGE_INTEGER ByteOffset
,
993 IN PLARGE_INTEGER Lenght
,
994 OUT ULONG Key OPTIONAL
1001 IN HANDLE FileHandle
,
1002 IN HANDLE Event OPTIONAL
,
1003 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
1004 IN PVOID ApcContext OPTIONAL
,
1005 OUT PIO_STATUS_BLOCK IoStatusBlock
,
1008 IN PLARGE_INTEGER ByteOffset
,
1009 IN PULONG Key OPTIONAL
1016 IN HANDLE FileHandle
,
1017 IN HANDLE Event OPTIONAL
,
1018 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
1019 IN PVOID ApcContext OPTIONAL
,
1020 OUT PIO_STATUS_BLOCK IoStatusBlock
,
1021 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
1022 IN ULONG BufferLength
,
1023 IN PLARGE_INTEGER ByteOffset
,
1024 IN PULONG Key OPTIONAL