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
51 IN PUNICODE_STRING DriverName OPTIONAL
,
52 IN PDRIVER_INITIALIZE InitializationFunction
57 IoReportHalResourceUsage(
58 IN PUNICODE_STRING HalName
,
59 IN PCM_RESOURCE_LIST RawResourceList
,
60 IN PCM_RESOURCE_LIST TranslatedResourceList
,
61 IN ULONG ResourceListSize
72 IN PBOOT_ENTRY BootEntry
,
80 IN PEFI_DRIVER_ENTRY BootEntry
,
89 OUT PIO_STATUS_BLOCK IoStatusBlock
96 OUT PHANDLE FileHandle
,
97 IN ACCESS_MASK DesiredAccess
,
98 IN POBJECT_ATTRIBUTES ObjectAttributes
,
99 OUT PIO_STATUS_BLOCK IoStatusBlock
,
100 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
101 IN ULONG FileAttributes
,
102 IN ULONG ShareAccess
,
103 IN ULONG CreateDisposition
,
104 IN ULONG CreateOptions
,
105 IN PVOID EaBuffer OPTIONAL
,
112 NtCreateIoCompletion(
113 OUT PHANDLE IoCompletionHandle
,
114 IN ACCESS_MASK DesiredAccess
,
115 IN POBJECT_ATTRIBUTES ObjectAttributes
,
116 IN ULONG NumberOfConcurrentThreads
122 NtCreateMailslotFile(
123 OUT PHANDLE MailSlotFileHandle
,
124 IN ACCESS_MASK DesiredAccess
,
125 IN POBJECT_ATTRIBUTES ObjectAttributes
,
126 OUT PIO_STATUS_BLOCK IoStatusBlock
,
127 IN ULONG FileAttributes
,
128 IN ULONG ShareAccess
,
129 IN ULONG MaxMessageSize
,
130 IN PLARGE_INTEGER TimeOut
136 NtCreateNamedPipeFile(
137 OUT PHANDLE NamedPipeFileHandle
,
138 IN ACCESS_MASK DesiredAccess
,
139 IN POBJECT_ATTRIBUTES ObjectAttributes
,
140 OUT PIO_STATUS_BLOCK IoStatusBlock
,
141 IN ULONG ShareAccess
,
142 IN ULONG CreateDisposition
,
143 IN ULONG CreateOptions
,
144 IN ULONG WriteModeMessage
,
145 IN ULONG ReadModeMessage
,
146 IN ULONG NonBlocking
,
147 IN ULONG MaxInstances
,
148 IN ULONG InBufferSize
,
149 IN ULONG OutBufferSize
,
150 IN PLARGE_INTEGER DefaultTimeOut
172 IN POBJECT_ATTRIBUTES ObjectAttributes
178 NtDeviceIoControlFile(
179 IN HANDLE DeviceHandle
,
180 IN HANDLE Event OPTIONAL
,
181 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
182 IN PVOID UserApcContext OPTIONAL
,
183 OUT PIO_STATUS_BLOCK IoStatusBlock
,
184 IN ULONG IoControlCode
,
185 IN PVOID InputBuffer
,
186 IN ULONG InputBufferSize
,
187 OUT PVOID OutputBuffer
,
188 IN ULONG OutputBufferSize
194 NtEnumerateBootEntries(
196 IN PULONG BufferLength
202 NtEnumerateDriverEntries(
204 IN PULONG BufferLength
211 IN HANDLE FileHandle
,
212 OUT PIO_STATUS_BLOCK IoStatusBlock
218 NtFlushWriteBuffer(VOID
);
224 IN HANDLE DeviceHandle
,
225 IN HANDLE Event OPTIONAL
,
226 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
227 IN PVOID ApcContext OPTIONAL
,
228 OUT PIO_STATUS_BLOCK IoStatusBlock
,
229 IN ULONG IoControlCode
,
230 IN PVOID InputBuffer
,
231 IN ULONG InputBufferSize
,
232 OUT PVOID OutputBuffer
,
233 IN ULONG OutputBufferSize
240 IN PUNICODE_STRING DriverServiceName
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 IN PLARGE_INTEGER ByteOffset
,
253 IN PLARGE_INTEGER Length
,
255 IN BOOLEAN FailImmediatedly
,
256 IN BOOLEAN ExclusiveLock
263 IN PBOOT_ENTRY BootEntry
270 IN PEFI_DRIVER_ENTRY DriverEntry
276 NtNotifyChangeDirectoryFile(
277 IN HANDLE FileHandle
,
278 IN HANDLE Event OPTIONAL
,
279 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
280 IN PVOID ApcContext OPTIONAL
,
281 OUT PIO_STATUS_BLOCK IoStatusBlock
,
284 IN ULONG CompletionFilter
,
292 OUT PHANDLE FileHandle
,
293 IN ACCESS_MASK DesiredAccess
,
294 IN POBJECT_ATTRIBUTES ObjectAttributes
,
295 OUT PIO_STATUS_BLOCK IoStatusBlock
,
296 IN ULONG ShareAccess
,
304 OUT PHANDLE CompetionPort
,
305 IN ACCESS_MASK DesiredAccess
,
306 IN POBJECT_ATTRIBUTES ObjectAttributes
312 NtQueryAttributesFile(
313 IN POBJECT_ATTRIBUTES ObjectAttributes
,
314 OUT PFILE_BASIC_INFORMATION FileInformation
319 NtQueryDriverEntryOrder(
327 NtQueryBootEntryOrder(
336 IN PBOOT_OPTIONS BootOptions
,
337 IN PULONG BootOptionsLength
343 NtQueryDirectoryFile(
344 IN HANDLE FileHandle
,
345 IN HANDLE Event OPTIONAL
,
346 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
347 IN PVOID ApcContext OPTIONAL
,
348 OUT PIO_STATUS_BLOCK IoStatusBlock
,
349 OUT PVOID FileInformation
,
351 IN FILE_INFORMATION_CLASS FileInformationClass
,
352 IN BOOLEAN ReturnSingleEntry
,
353 IN PUNICODE_STRING FileName OPTIONAL
,
354 IN BOOLEAN RestartScan
361 IN HANDLE FileHandle
,
362 OUT PIO_STATUS_BLOCK IoStatusBlock
,
365 IN BOOLEAN ReturnSingleEntry
,
366 IN PVOID EaList OPTIONAL
,
367 IN ULONG EaListLength
,
368 IN PULONG EaIndex OPTIONAL
,
369 IN BOOLEAN RestartScan
375 NtQueryFullAttributesFile(
376 IN POBJECT_ATTRIBUTES ObjectAttributes
,
377 OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
383 NtQueryInformationFile(
384 IN HANDLE FileHandle
,
385 OUT PIO_STATUS_BLOCK IoStatusBlock
,
386 OUT PVOID FileInformation
,
388 IN FILE_INFORMATION_CLASS FileInformationClass
395 IN HANDLE IoCompletionHandle
,
396 IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass
,
397 OUT PVOID IoCompletionInformation
,
398 IN ULONG IoCompletionInformationLength
,
399 OUT PULONG ResultLength OPTIONAL
405 NtQueryQuotaInformationFile(
406 IN HANDLE FileHandle
,
407 OUT PIO_STATUS_BLOCK IoStatusBlock
,
410 IN BOOLEAN ReturnSingleEntry
,
411 IN PVOID SidList OPTIONAL
,
412 IN ULONG SidListLength
,
413 IN PSID StartSid OPTIONAL
,
414 IN BOOLEAN RestartScan
420 NtQueryVolumeInformationFile(
421 IN HANDLE FileHandle
,
422 OUT PIO_STATUS_BLOCK IoStatusBlock
,
423 OUT PVOID FsInformation
,
425 IN FS_INFORMATION_CLASS FsInformationClass
432 IN HANDLE FileHandle
,
433 IN HANDLE Event OPTIONAL
,
434 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
435 IN PVOID UserApcContext OPTIONAL
,
436 OUT PIO_STATUS_BLOCK IoStatusBlock
,
438 IN ULONG BufferLength
,
439 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
440 IN PULONG Key OPTIONAL
447 IN HANDLE FileHandle
,
448 IN HANDLE Event OPTIONAL
,
449 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
450 IN PVOID UserApcContext OPTIONAL
,
451 OUT PIO_STATUS_BLOCK UserIoStatusBlock
,
452 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
453 IN ULONG BufferLength
,
454 IN PLARGE_INTEGER ByteOffset
,
455 IN PULONG Key OPTIONAL
461 NtRemoveIoCompletion(
462 IN HANDLE IoCompletionHandle
,
463 OUT PVOID
*CompletionKey
,
464 OUT PVOID
*CompletionContext
,
465 OUT PIO_STATUS_BLOCK IoStatusBlock
,
466 IN PLARGE_INTEGER Timeout OPTIONAL
481 IN PBOOT_OPTIONS BootOptions
,
482 IN ULONG FieldsToChange
487 NtSetDriverEntryOrder(
496 IN HANDLE FileHandle
,
497 IN PIO_STATUS_BLOCK IoStatusBlock
,
505 NtSetInformationFile(
506 IN HANDLE FileHandle
,
507 IN PIO_STATUS_BLOCK IoStatusBlock
,
508 IN PVOID FileInformation
,
510 IN FILE_INFORMATION_CLASS FileInformationClass
517 IN HANDLE IoCompletionPortHandle
,
518 IN PVOID CompletionKey
,
519 IN PVOID CompletionContext
,
520 IN NTSTATUS CompletionStatus
,
521 IN ULONG CompletionInformation
527 NtSetQuotaInformationFile(
529 PIO_STATUS_BLOCK IoStatusBlock
,
537 NtSetVolumeInformationFile(
538 IN HANDLE FileHandle
,
539 OUT PIO_STATUS_BLOCK IoStatusBlock
,
540 IN PVOID FsInformation
,
542 IN FS_INFORMATION_CLASS FsInformationClass
549 PFILE_PATH InputFilePath
,
551 PFILE_PATH OutputFilePath
,
552 ULONG OutputFilePathLength
559 IN PUNICODE_STRING DriverServiceName
566 IN HANDLE FileHandle
,
567 OUT PIO_STATUS_BLOCK IoStatusBlock
,
568 IN PLARGE_INTEGER ByteOffset
,
569 IN PLARGE_INTEGER Lenght
,
570 OUT ULONG Key OPTIONAL
577 IN HANDLE FileHandle
,
578 IN HANDLE Event OPTIONAL
,
579 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
580 IN PVOID ApcContext OPTIONAL
,
581 OUT PIO_STATUS_BLOCK IoStatusBlock
,
584 IN PLARGE_INTEGER ByteOffset
,
585 IN PULONG Key OPTIONAL
592 IN HANDLE FileHandle
,
593 IN HANDLE Event OPTIONAL
,
594 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
595 IN PVOID ApcContext OPTIONAL
,
596 OUT PIO_STATUS_BLOCK IoStatusBlock
,
597 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
598 IN ULONG BufferLength
,
599 IN PLARGE_INTEGER ByteOffset
,
600 IN PULONG Key OPTIONAL
607 IN PUNICODE_STRING EntryName
,
608 IN PUNICODE_STRING EntryValue
615 IN HANDLE FileHandle
,
616 OUT PIO_STATUS_BLOCK IoStatusBlock
623 OUT PHANDLE FileHandle
,
624 IN ACCESS_MASK DesiredAccess
,
625 IN POBJECT_ATTRIBUTES ObjectAttributes
,
626 OUT PIO_STATUS_BLOCK IoStatusBlock
,
627 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
628 IN ULONG FileAttributes
,
629 IN ULONG ShareAccess
,
630 IN ULONG CreateDisposition
,
631 IN ULONG CreateOptions
,
632 IN PVOID EaBuffer OPTIONAL
,
639 ZwCreateIoCompletion(
640 OUT PHANDLE IoCompletionHandle
,
641 IN ACCESS_MASK DesiredAccess
,
642 IN POBJECT_ATTRIBUTES ObjectAttributes
,
643 IN ULONG NumberOfConcurrentThreads
649 ZwCreateMailslotFile(
650 OUT PHANDLE MailSlotFileHandle
,
651 IN ACCESS_MASK DesiredAccess
,
652 IN POBJECT_ATTRIBUTES ObjectAttributes
,
653 OUT PIO_STATUS_BLOCK IoStatusBlock
,
654 IN ULONG FileAttributes
,
655 IN ULONG ShareAccess
,
656 IN ULONG MaxMessageSize
,
657 IN PLARGE_INTEGER TimeOut
663 ZwCreateNamedPipeFile(
664 OUT PHANDLE NamedPipeFileHandle
,
665 IN ACCESS_MASK DesiredAccess
,
666 IN POBJECT_ATTRIBUTES ObjectAttributes
,
667 OUT PIO_STATUS_BLOCK IoStatusBlock
,
668 IN ULONG ShareAccess
,
669 IN ULONG CreateDisposition
,
670 IN ULONG CreateOptions
,
671 IN ULONG WriteModeMessage
,
672 IN ULONG ReadModeMessage
,
673 IN ULONG NonBlocking
,
674 IN ULONG MaxInstances
,
675 IN ULONG InBufferSize
,
676 IN ULONG OutBufferSize
,
677 IN PLARGE_INTEGER DefaultTimeOut
684 IN PUNICODE_STRING EntryName
,
685 IN PUNICODE_STRING EntryValue
692 IN POBJECT_ATTRIBUTES ObjectAttributes
698 ZwDeviceIoControlFile(
699 IN HANDLE DeviceHandle
,
700 IN HANDLE Event OPTIONAL
,
701 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
702 IN PVOID UserApcContext OPTIONAL
,
703 OUT PIO_STATUS_BLOCK IoStatusBlock
,
704 IN ULONG IoControlCode
,
705 IN PVOID InputBuffer
,
706 IN ULONG InputBufferSize
,
707 OUT PVOID OutputBuffer
,
708 IN ULONG OutputBufferSize
715 IN HANDLE FileHandle
,
716 OUT PIO_STATUS_BLOCK IoStatusBlock
722 ZwFlushWriteBuffer(VOID
);
728 IN HANDLE DeviceHandle
,
729 IN HANDLE Event OPTIONAL
,
730 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
731 IN PVOID ApcContext OPTIONAL
,
732 OUT PIO_STATUS_BLOCK IoStatusBlock
,
733 IN ULONG IoControlCode
,
734 IN PVOID InputBuffer
,
735 IN ULONG InputBufferSize
,
736 OUT PVOID OutputBuffer
,
737 IN ULONG OutputBufferSize
740 #ifdef NTOS_MODE_USER
745 IN PUNICODE_STRING DriverServiceName
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
,
758 IN PLARGE_INTEGER ByteOffset
,
759 IN PLARGE_INTEGER Length
,
761 IN BOOLEAN FailImmediatedly
,
762 IN BOOLEAN ExclusiveLock
768 ZwNotifyChangeDirectoryFile(
769 IN HANDLE FileHandle
,
770 IN HANDLE Event OPTIONAL
,
771 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
772 IN PVOID ApcContext OPTIONAL
,
773 OUT PIO_STATUS_BLOCK IoStatusBlock
,
776 IN ULONG CompletionFilter
,
784 OUT PHANDLE FileHandle
,
785 IN ACCESS_MASK DesiredAccess
,
786 IN POBJECT_ATTRIBUTES ObjectAttributes
,
787 OUT PIO_STATUS_BLOCK IoStatusBlock
,
788 IN ULONG ShareAccess
,
796 OUT PHANDLE CompetionPort
,
797 IN ACCESS_MASK DesiredAccess
,
798 IN POBJECT_ATTRIBUTES ObjectAttributes
804 ZwQueryAttributesFile(
805 IN POBJECT_ATTRIBUTES ObjectAttributes
,
806 OUT PFILE_BASIC_INFORMATION FileInformation
812 ZwQueryDirectoryFile(
813 IN HANDLE FileHandle
,
814 IN HANDLE Event OPTIONAL
,
815 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
816 IN PVOID ApcContext OPTIONAL
,
817 OUT PIO_STATUS_BLOCK IoStatusBlock
,
818 OUT PVOID FileInformation
,
820 IN FILE_INFORMATION_CLASS FileInformationClass
,
821 IN BOOLEAN ReturnSingleEntry
,
822 IN PUNICODE_STRING FileName OPTIONAL
,
823 IN BOOLEAN RestartScan
826 #ifdef NTOS_MODE_USER
831 IN HANDLE FileHandle
,
832 OUT PIO_STATUS_BLOCK IoStatusBlock
,
835 IN BOOLEAN ReturnSingleEntry
,
836 IN PVOID EaList OPTIONAL
,
837 IN ULONG EaListLength
,
838 IN PULONG EaIndex OPTIONAL
,
839 IN BOOLEAN RestartScan
846 ZwQueryFullAttributesFile(
847 IN POBJECT_ATTRIBUTES ObjectAttributes
,
848 OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
854 ZwQueryInformationFile(
855 IN HANDLE FileHandle
,
856 OUT PIO_STATUS_BLOCK IoStatusBlock
,
857 OUT PVOID FileInformation
,
859 IN FILE_INFORMATION_CLASS FileInformationClass
866 IN HANDLE IoCompletionHandle
,
867 IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass
,
868 OUT PVOID IoCompletionInformation
,
869 IN ULONG IoCompletionInformationLength
,
870 OUT PULONG ResultLength OPTIONAL
876 ZwQueryQuotaInformationFile(
877 IN HANDLE FileHandle
,
878 OUT PIO_STATUS_BLOCK IoStatusBlock
,
881 IN BOOLEAN ReturnSingleEntry
,
882 IN PVOID SidList OPTIONAL
,
883 IN ULONG SidListLength
,
884 IN PSID StartSid OPTIONAL
,
885 IN BOOLEAN RestartScan
891 ZwQueryVolumeInformationFile(
892 IN HANDLE FileHandle
,
893 OUT PIO_STATUS_BLOCK IoStatusBlock
,
894 OUT PVOID FsInformation
,
896 IN FS_INFORMATION_CLASS FsInformationClass
903 IN HANDLE FileHandle
,
904 IN HANDLE Event OPTIONAL
,
905 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
906 IN PVOID UserApcContext OPTIONAL
,
907 OUT PIO_STATUS_BLOCK IoStatusBlock
,
909 IN ULONG BufferLength
,
910 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
911 IN PULONG Key OPTIONAL
918 IN HANDLE FileHandle
,
919 IN HANDLE Event OPTIONAL
,
920 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
921 IN PVOID UserApcContext OPTIONAL
,
922 OUT PIO_STATUS_BLOCK UserIoStatusBlock
,
923 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
924 IN ULONG BufferLength
,
925 IN PLARGE_INTEGER ByteOffset
,
926 IN PULONG Key OPTIONAL
932 ZwRemoveIoCompletion(
933 IN HANDLE IoCompletionHandle
,
934 OUT PVOID
*CompletionKey
,
935 OUT PVOID
*CompletionContext
,
936 OUT PIO_STATUS_BLOCK IoStatusBlock
,
937 IN PLARGE_INTEGER Timeout OPTIONAL
940 #ifdef NTOS_MODE_USER
945 IN HANDLE FileHandle
,
946 IN PIO_STATUS_BLOCK IoStatusBlock
,
955 ZwSetInformationFile(
956 IN HANDLE FileHandle
,
957 IN PIO_STATUS_BLOCK IoStatusBlock
,
958 IN PVOID FileInformation
,
960 IN FILE_INFORMATION_CLASS FileInformationClass
967 IN HANDLE IoCompletionPortHandle
,
968 IN PVOID CompletionKey
,
969 IN PVOID CompletionContext
,
970 IN NTSTATUS CompletionStatus
,
971 IN ULONG CompletionInformation
977 ZwSetQuotaInformationFile(
979 PIO_STATUS_BLOCK IoStatusBlock
,
987 ZwSetVolumeInformationFile(
988 IN HANDLE FileHandle
,
989 OUT PIO_STATUS_BLOCK IoStatusBlock
,
990 IN PVOID FsInformation
,
992 IN FS_INFORMATION_CLASS FsInformationClass
999 IN PUNICODE_STRING DriverServiceName
1006 IN HANDLE FileHandle
,
1007 OUT PIO_STATUS_BLOCK IoStatusBlock
,
1008 IN PLARGE_INTEGER ByteOffset
,
1009 IN PLARGE_INTEGER Lenght
,
1010 OUT ULONG Key OPTIONAL
1017 IN HANDLE FileHandle
,
1018 IN HANDLE Event OPTIONAL
,
1019 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
1020 IN PVOID ApcContext OPTIONAL
,
1021 OUT PIO_STATUS_BLOCK IoStatusBlock
,
1024 IN PLARGE_INTEGER ByteOffset
,
1025 IN PULONG Key OPTIONAL
1032 IN HANDLE FileHandle
,
1033 IN HANDLE Event OPTIONAL
,
1034 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
1035 IN PVOID ApcContext OPTIONAL
,
1036 OUT PIO_STATUS_BLOCK IoStatusBlock
,
1037 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
1038 IN ULONG BufferLength
,
1039 IN PLARGE_INTEGER ByteOffset
,
1040 IN PULONG Key OPTIONAL