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
49 IN PBOOT_ENTRY BootEntry
,
57 IN PEFI_DRIVER_ENTRY BootEntry
,
66 OUT PIO_STATUS_BLOCK IoStatusBlock
73 OUT PHANDLE FileHandle
,
74 IN ACCESS_MASK DesiredAccess
,
75 IN POBJECT_ATTRIBUTES ObjectAttributes
,
76 OUT PIO_STATUS_BLOCK IoStatusBlock
,
77 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
78 IN ULONG FileAttributes
,
80 IN ULONG CreateDisposition
,
81 IN ULONG CreateOptions
,
82 IN PVOID EaBuffer OPTIONAL
,
90 OUT PHANDLE IoCompletionHandle
,
91 IN ACCESS_MASK DesiredAccess
,
92 IN POBJECT_ATTRIBUTES ObjectAttributes
,
93 IN ULONG NumberOfConcurrentThreads
100 OUT PHANDLE MailSlotFileHandle
,
101 IN ACCESS_MASK DesiredAccess
,
102 IN POBJECT_ATTRIBUTES ObjectAttributes
,
103 OUT PIO_STATUS_BLOCK IoStatusBlock
,
104 IN ULONG FileAttributes
,
105 IN ULONG ShareAccess
,
106 IN ULONG MaxMessageSize
,
107 IN PLARGE_INTEGER TimeOut
113 NtCreateNamedPipeFile(
114 OUT PHANDLE NamedPipeFileHandle
,
115 IN ACCESS_MASK DesiredAccess
,
116 IN POBJECT_ATTRIBUTES ObjectAttributes
,
117 OUT PIO_STATUS_BLOCK IoStatusBlock
,
118 IN ULONG ShareAccess
,
119 IN ULONG CreateDisposition
,
120 IN ULONG CreateOptions
,
121 IN ULONG WriteModeMessage
,
122 IN ULONG ReadModeMessage
,
123 IN ULONG NonBlocking
,
124 IN ULONG MaxInstances
,
125 IN ULONG InBufferSize
,
126 IN ULONG OutBufferSize
,
127 IN PLARGE_INTEGER DefaultTimeOut
149 IN POBJECT_ATTRIBUTES ObjectAttributes
155 NtDeviceIoControlFile(
156 IN HANDLE DeviceHandle
,
157 IN HANDLE Event OPTIONAL
,
158 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
159 IN PVOID UserApcContext OPTIONAL
,
160 OUT PIO_STATUS_BLOCK IoStatusBlock
,
161 IN ULONG IoControlCode
,
162 IN PVOID InputBuffer
,
163 IN ULONG InputBufferSize
,
164 OUT PVOID OutputBuffer
,
165 IN ULONG OutputBufferSize
171 NtEnumerateBootEntries(
173 IN PULONG BufferLength
179 NtEnumerateDriverEntries(
181 IN PULONG BufferLength
188 IN HANDLE FileHandle
,
189 OUT PIO_STATUS_BLOCK IoStatusBlock
195 NtFlushWriteBuffer(VOID
);
201 IN HANDLE DeviceHandle
,
202 IN HANDLE Event OPTIONAL
,
203 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
204 IN PVOID ApcContext OPTIONAL
,
205 OUT PIO_STATUS_BLOCK IoStatusBlock
,
206 IN ULONG IoControlCode
,
207 IN PVOID InputBuffer
,
208 IN ULONG InputBufferSize
,
209 OUT PVOID OutputBuffer
,
210 IN ULONG OutputBufferSize
217 IN PUNICODE_STRING DriverServiceName
224 IN HANDLE FileHandle
,
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 PLARGE_INTEGER ByteOffset
,
230 IN PLARGE_INTEGER Length
,
232 IN BOOLEAN FailImmediatedly
,
233 IN BOOLEAN ExclusiveLock
240 IN PBOOT_ENTRY BootEntry
247 IN PEFI_DRIVER_ENTRY DriverEntry
253 NtNotifyChangeDirectoryFile(
254 IN HANDLE FileHandle
,
255 IN HANDLE Event OPTIONAL
,
256 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
257 IN PVOID ApcContext OPTIONAL
,
258 OUT PIO_STATUS_BLOCK IoStatusBlock
,
261 IN ULONG CompletionFilter
,
269 OUT PHANDLE FileHandle
,
270 IN ACCESS_MASK DesiredAccess
,
271 IN POBJECT_ATTRIBUTES ObjectAttributes
,
272 OUT PIO_STATUS_BLOCK IoStatusBlock
,
273 IN ULONG ShareAccess
,
281 OUT PHANDLE CompetionPort
,
282 IN ACCESS_MASK DesiredAccess
,
283 IN POBJECT_ATTRIBUTES ObjectAttributes
289 NtQueryAttributesFile(
290 IN POBJECT_ATTRIBUTES ObjectAttributes
,
291 OUT PFILE_BASIC_INFORMATION FileInformation
296 NtQueryDriverEntryOrder(
304 NtQueryBootEntryOrder(
313 IN PBOOT_OPTIONS BootOptions
,
314 IN PULONG BootOptionsLength
320 NtQueryDirectoryFile(
321 IN HANDLE FileHandle
,
322 IN HANDLE Event OPTIONAL
,
323 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
324 IN PVOID ApcContext OPTIONAL
,
325 OUT PIO_STATUS_BLOCK IoStatusBlock
,
326 OUT PVOID FileInformation
,
328 IN FILE_INFORMATION_CLASS FileInformationClass
,
329 IN BOOLEAN ReturnSingleEntry
,
330 IN PUNICODE_STRING FileName OPTIONAL
,
331 IN BOOLEAN RestartScan
338 IN HANDLE FileHandle
,
339 OUT PIO_STATUS_BLOCK IoStatusBlock
,
342 IN BOOLEAN ReturnSingleEntry
,
343 IN PVOID EaList OPTIONAL
,
344 IN ULONG EaListLength
,
345 IN PULONG EaIndex OPTIONAL
,
346 IN BOOLEAN RestartScan
352 NtQueryFullAttributesFile(
353 IN POBJECT_ATTRIBUTES ObjectAttributes
,
354 OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
360 NtQueryInformationFile(
361 IN HANDLE FileHandle
,
362 OUT PIO_STATUS_BLOCK IoStatusBlock
,
363 OUT PVOID FileInformation
,
365 IN FILE_INFORMATION_CLASS FileInformationClass
372 IN HANDLE IoCompletionHandle
,
373 IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass
,
374 OUT PVOID IoCompletionInformation
,
375 IN ULONG IoCompletionInformationLength
,
376 OUT PULONG ResultLength OPTIONAL
382 NtQueryQuotaInformationFile(
383 IN HANDLE FileHandle
,
384 OUT PIO_STATUS_BLOCK IoStatusBlock
,
387 IN BOOLEAN ReturnSingleEntry
,
388 IN PVOID SidList OPTIONAL
,
389 IN ULONG SidListLength
,
390 IN PSID StartSid OPTIONAL
,
391 IN BOOLEAN RestartScan
397 NtQueryVolumeInformationFile(
398 IN HANDLE FileHandle
,
399 OUT PIO_STATUS_BLOCK IoStatusBlock
,
400 OUT PVOID FsInformation
,
402 IN FS_INFORMATION_CLASS FsInformationClass
409 IN HANDLE FileHandle
,
410 IN HANDLE Event OPTIONAL
,
411 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
412 IN PVOID UserApcContext OPTIONAL
,
413 OUT PIO_STATUS_BLOCK IoStatusBlock
,
415 IN ULONG BufferLength
,
416 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
417 IN PULONG Key OPTIONAL
424 IN HANDLE FileHandle
,
425 IN HANDLE Event OPTIONAL
,
426 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
427 IN PVOID UserApcContext OPTIONAL
,
428 OUT PIO_STATUS_BLOCK UserIoStatusBlock
,
429 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
430 IN ULONG BufferLength
,
431 IN PLARGE_INTEGER ByteOffset
,
432 IN PULONG Key OPTIONAL
438 NtRemoveIoCompletion(
439 IN HANDLE IoCompletionHandle
,
440 OUT PVOID
*CompletionKey
,
441 OUT PVOID
*CompletionContext
,
442 OUT PIO_STATUS_BLOCK IoStatusBlock
,
443 IN PLARGE_INTEGER Timeout OPTIONAL
458 IN PBOOT_OPTIONS BootOptions
,
459 IN ULONG FieldsToChange
464 NtSetDriverEntryOrder(
473 IN HANDLE FileHandle
,
474 IN PIO_STATUS_BLOCK IoStatusBlock
,
482 NtSetInformationFile(
483 IN HANDLE FileHandle
,
484 IN PIO_STATUS_BLOCK IoStatusBlock
,
485 IN PVOID FileInformation
,
487 IN FILE_INFORMATION_CLASS FileInformationClass
494 IN HANDLE IoCompletionPortHandle
,
495 IN PVOID CompletionKey
,
496 IN PVOID CompletionContext
,
497 IN NTSTATUS CompletionStatus
,
498 IN ULONG CompletionInformation
504 NtSetQuotaInformationFile(
506 PIO_STATUS_BLOCK IoStatusBlock
,
514 NtSetVolumeInformationFile(
515 IN HANDLE FileHandle
,
516 OUT PIO_STATUS_BLOCK IoStatusBlock
,
517 IN PVOID FsInformation
,
519 IN FS_INFORMATION_CLASS FsInformationClass
526 PFILE_PATH InputFilePath
,
528 PFILE_PATH OutputFilePath
,
529 ULONG OutputFilePathLength
536 IN PUNICODE_STRING DriverServiceName
543 IN HANDLE FileHandle
,
544 OUT PIO_STATUS_BLOCK IoStatusBlock
,
545 IN PLARGE_INTEGER ByteOffset
,
546 IN PLARGE_INTEGER Lenght
,
547 OUT ULONG Key OPTIONAL
554 IN HANDLE FileHandle
,
555 IN HANDLE Event OPTIONAL
,
556 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
557 IN PVOID ApcContext OPTIONAL
,
558 OUT PIO_STATUS_BLOCK IoStatusBlock
,
561 IN PLARGE_INTEGER ByteOffset
,
562 IN PULONG Key OPTIONAL
569 IN HANDLE FileHandle
,
570 IN HANDLE Event OPTIONAL
,
571 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
572 IN PVOID ApcContext OPTIONAL
,
573 OUT PIO_STATUS_BLOCK IoStatusBlock
,
574 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
575 IN ULONG BufferLength
,
576 IN PLARGE_INTEGER ByteOffset
,
577 IN PULONG Key OPTIONAL
584 IN PUNICODE_STRING EntryName
,
585 IN PUNICODE_STRING EntryValue
592 IN HANDLE FileHandle
,
593 OUT PIO_STATUS_BLOCK IoStatusBlock
600 OUT PHANDLE FileHandle
,
601 IN ACCESS_MASK DesiredAccess
,
602 IN POBJECT_ATTRIBUTES ObjectAttributes
,
603 OUT PIO_STATUS_BLOCK IoStatusBlock
,
604 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
605 IN ULONG FileAttributes
,
606 IN ULONG ShareAccess
,
607 IN ULONG CreateDisposition
,
608 IN ULONG CreateOptions
,
609 IN PVOID EaBuffer OPTIONAL
,
616 ZwCreateIoCompletion(
617 OUT PHANDLE IoCompletionHandle
,
618 IN ACCESS_MASK DesiredAccess
,
619 IN POBJECT_ATTRIBUTES ObjectAttributes
,
620 IN ULONG NumberOfConcurrentThreads
626 ZwCreateMailslotFile(
627 OUT PHANDLE MailSlotFileHandle
,
628 IN ACCESS_MASK DesiredAccess
,
629 IN POBJECT_ATTRIBUTES ObjectAttributes
,
630 OUT PIO_STATUS_BLOCK IoStatusBlock
,
631 IN ULONG FileAttributes
,
632 IN ULONG ShareAccess
,
633 IN ULONG MaxMessageSize
,
634 IN PLARGE_INTEGER TimeOut
640 ZwCreateNamedPipeFile(
641 OUT PHANDLE NamedPipeFileHandle
,
642 IN ACCESS_MASK DesiredAccess
,
643 IN POBJECT_ATTRIBUTES ObjectAttributes
,
644 OUT PIO_STATUS_BLOCK IoStatusBlock
,
645 IN ULONG ShareAccess
,
646 IN ULONG CreateDisposition
,
647 IN ULONG CreateOptions
,
648 IN ULONG WriteModeMessage
,
649 IN ULONG ReadModeMessage
,
650 IN ULONG NonBlocking
,
651 IN ULONG MaxInstances
,
652 IN ULONG InBufferSize
,
653 IN ULONG OutBufferSize
,
654 IN PLARGE_INTEGER DefaultTimeOut
661 IN PUNICODE_STRING EntryName
,
662 IN PUNICODE_STRING EntryValue
669 IN POBJECT_ATTRIBUTES ObjectAttributes
675 ZwDeviceIoControlFile(
676 IN HANDLE DeviceHandle
,
677 IN HANDLE Event OPTIONAL
,
678 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
679 IN PVOID UserApcContext OPTIONAL
,
680 OUT PIO_STATUS_BLOCK IoStatusBlock
,
681 IN ULONG IoControlCode
,
682 IN PVOID InputBuffer
,
683 IN ULONG InputBufferSize
,
684 OUT PVOID OutputBuffer
,
685 IN ULONG OutputBufferSize
692 IN HANDLE FileHandle
,
693 OUT PIO_STATUS_BLOCK IoStatusBlock
699 ZwFlushWriteBuffer(VOID
);
705 IN HANDLE DeviceHandle
,
706 IN HANDLE Event OPTIONAL
,
707 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
708 IN PVOID ApcContext OPTIONAL
,
709 OUT PIO_STATUS_BLOCK IoStatusBlock
,
710 IN ULONG IoControlCode
,
711 IN PVOID InputBuffer
,
712 IN ULONG InputBufferSize
,
713 OUT PVOID OutputBuffer
,
714 IN ULONG OutputBufferSize
717 #ifdef NTOS_MODE_USER
722 IN PUNICODE_STRING DriverServiceName
730 IN HANDLE FileHandle
,
731 IN HANDLE Event OPTIONAL
,
732 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
733 IN PVOID ApcContext OPTIONAL
,
734 OUT PIO_STATUS_BLOCK IoStatusBlock
,
735 IN PLARGE_INTEGER ByteOffset
,
736 IN PLARGE_INTEGER Length
,
738 IN BOOLEAN FailImmediatedly
,
739 IN BOOLEAN ExclusiveLock
745 ZwNotifyChangeDirectoryFile(
746 IN HANDLE FileHandle
,
747 IN HANDLE Event OPTIONAL
,
748 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
749 IN PVOID ApcContext OPTIONAL
,
750 OUT PIO_STATUS_BLOCK IoStatusBlock
,
753 IN ULONG CompletionFilter
,
761 OUT PHANDLE FileHandle
,
762 IN ACCESS_MASK DesiredAccess
,
763 IN POBJECT_ATTRIBUTES ObjectAttributes
,
764 OUT PIO_STATUS_BLOCK IoStatusBlock
,
765 IN ULONG ShareAccess
,
773 OUT PHANDLE CompetionPort
,
774 IN ACCESS_MASK DesiredAccess
,
775 IN POBJECT_ATTRIBUTES ObjectAttributes
781 ZwQueryAttributesFile(
782 IN POBJECT_ATTRIBUTES ObjectAttributes
,
783 OUT PFILE_BASIC_INFORMATION FileInformation
789 ZwQueryDirectoryFile(
790 IN HANDLE FileHandle
,
791 IN HANDLE Event OPTIONAL
,
792 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
793 IN PVOID ApcContext OPTIONAL
,
794 OUT PIO_STATUS_BLOCK IoStatusBlock
,
795 OUT PVOID FileInformation
,
797 IN FILE_INFORMATION_CLASS FileInformationClass
,
798 IN BOOLEAN ReturnSingleEntry
,
799 IN PUNICODE_STRING FileName OPTIONAL
,
800 IN BOOLEAN RestartScan
803 #ifdef NTOS_MODE_USER
808 IN HANDLE FileHandle
,
809 OUT PIO_STATUS_BLOCK IoStatusBlock
,
812 IN BOOLEAN ReturnSingleEntry
,
813 IN PVOID EaList OPTIONAL
,
814 IN ULONG EaListLength
,
815 IN PULONG EaIndex OPTIONAL
,
816 IN BOOLEAN RestartScan
823 ZwQueryFullAttributesFile(
824 IN POBJECT_ATTRIBUTES ObjectAttributes
,
825 OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
831 ZwQueryInformationFile(
832 IN HANDLE FileHandle
,
833 OUT PIO_STATUS_BLOCK IoStatusBlock
,
834 OUT PVOID FileInformation
,
836 IN FILE_INFORMATION_CLASS FileInformationClass
843 IN HANDLE IoCompletionHandle
,
844 IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass
,
845 OUT PVOID IoCompletionInformation
,
846 IN ULONG IoCompletionInformationLength
,
847 OUT PULONG ResultLength OPTIONAL
853 ZwQueryQuotaInformationFile(
854 IN HANDLE FileHandle
,
855 OUT PIO_STATUS_BLOCK IoStatusBlock
,
858 IN BOOLEAN ReturnSingleEntry
,
859 IN PVOID SidList OPTIONAL
,
860 IN ULONG SidListLength
,
861 IN PSID StartSid OPTIONAL
,
862 IN BOOLEAN RestartScan
868 ZwQueryVolumeInformationFile(
869 IN HANDLE FileHandle
,
870 OUT PIO_STATUS_BLOCK IoStatusBlock
,
871 OUT PVOID FsInformation
,
873 IN FS_INFORMATION_CLASS FsInformationClass
880 IN HANDLE FileHandle
,
881 IN HANDLE Event OPTIONAL
,
882 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
883 IN PVOID UserApcContext OPTIONAL
,
884 OUT PIO_STATUS_BLOCK IoStatusBlock
,
886 IN ULONG BufferLength
,
887 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
888 IN PULONG Key OPTIONAL
895 IN HANDLE FileHandle
,
896 IN HANDLE Event OPTIONAL
,
897 IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL
,
898 IN PVOID UserApcContext OPTIONAL
,
899 OUT PIO_STATUS_BLOCK UserIoStatusBlock
,
900 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
901 IN ULONG BufferLength
,
902 IN PLARGE_INTEGER ByteOffset
,
903 IN PULONG Key OPTIONAL
909 ZwRemoveIoCompletion(
910 IN HANDLE IoCompletionHandle
,
911 OUT PVOID
*CompletionKey
,
912 OUT PVOID
*CompletionContext
,
913 OUT PIO_STATUS_BLOCK IoStatusBlock
,
914 IN PLARGE_INTEGER Timeout OPTIONAL
917 #ifdef NTOS_MODE_USER
922 IN HANDLE FileHandle
,
923 IN PIO_STATUS_BLOCK IoStatusBlock
,
932 ZwSetInformationFile(
933 IN HANDLE FileHandle
,
934 IN PIO_STATUS_BLOCK IoStatusBlock
,
935 IN PVOID FileInformation
,
937 IN FILE_INFORMATION_CLASS FileInformationClass
944 IN HANDLE IoCompletionPortHandle
,
945 IN PVOID CompletionKey
,
946 IN PVOID CompletionContext
,
947 IN NTSTATUS CompletionStatus
,
948 IN ULONG CompletionInformation
954 ZwSetQuotaInformationFile(
956 PIO_STATUS_BLOCK IoStatusBlock
,
964 ZwSetVolumeInformationFile(
965 IN HANDLE FileHandle
,
966 OUT PIO_STATUS_BLOCK IoStatusBlock
,
967 IN PVOID FsInformation
,
969 IN FS_INFORMATION_CLASS FsInformationClass
976 IN PUNICODE_STRING DriverServiceName
983 IN HANDLE FileHandle
,
984 OUT PIO_STATUS_BLOCK IoStatusBlock
,
985 IN PLARGE_INTEGER ByteOffset
,
986 IN PLARGE_INTEGER Lenght
,
987 OUT ULONG Key OPTIONAL
994 IN HANDLE FileHandle
,
995 IN HANDLE Event OPTIONAL
,
996 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
997 IN PVOID ApcContext OPTIONAL
,
998 OUT PIO_STATUS_BLOCK IoStatusBlock
,
1001 IN PLARGE_INTEGER ByteOffset
,
1002 IN PULONG Key OPTIONAL
1009 IN HANDLE FileHandle
,
1010 IN HANDLE Event OPTIONAL
,
1011 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
1012 IN PVOID ApcContext OPTIONAL
,
1013 OUT PIO_STATUS_BLOCK IoStatusBlock
,
1014 IN FILE_SEGMENT_ELEMENT BufferDescription
[],
1015 IN ULONG BufferLength
,
1016 IN PLARGE_INTEGER ByteOffset
,
1017 IN PULONG Key OPTIONAL