Reactos
1/*++ NDK Version: 0098
2
3Copyright (c) Alex Ionescu. All rights reserved.
4
5Header Name:
6
7 iofuncs.h
8
9Abstract:
10
11 Function definitions for the I/O Manager.
12
13Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17--*/
18
19#ifndef _IOFUNCS_H
20#define _IOFUNCS_H
21
22//
23// Dependencies
24//
25#include <umtypes.h>
26#include <iotypes.h>
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32//
33// I/O Functions
34//
35#ifndef NTOS_MODE_USER
36VOID
37FASTCALL
38IoAssignDriveLetters(
39 _In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
40 _In_ PSTRING NtDeviceName,
41 _Out_ PUCHAR NtSystemPath,
42 _Out_ PSTRING NtSystemPathString
43);
44
45NTSTATUS
46NTAPI
47IoSynchronousInvalidateDeviceRelations(
48 _In_ PDEVICE_OBJECT DeviceObject,
49 _In_ DEVICE_RELATION_TYPE Type
50);
51
52NTSTATUS
53NTAPI
54IoCreateDriver(
55 _In_opt_ PUNICODE_STRING DriverName,
56 _In_ PDRIVER_INITIALIZE InitializationFunction
57);
58
59VOID
60NTAPI
61IoDeleteDriver(
62 _In_ PDRIVER_OBJECT DriverObject
63);
64
65NTSTATUS
66NTAPI
67IoReportHalResourceUsage(
68 _In_ PUNICODE_STRING HalName,
69 _In_ PCM_RESOURCE_LIST RawResourceList,
70 _In_ PCM_RESOURCE_LIST TranslatedResourceList,
71 _In_ ULONG ResourceListSize
72);
73#endif
74
75//
76// Native calls
77//
78NTSYSCALLAPI
79NTSTATUS
80NTAPI
81NtAddBootEntry(
82 _In_ PBOOT_ENTRY BootEntry,
83 _In_ ULONG Id
84);
85
86NTSYSCALLAPI
87NTSTATUS
88NTAPI
89NtAddDriverEntry(
90 _In_ PEFI_DRIVER_ENTRY BootEntry,
91 _In_ ULONG Id
92);
93
94NTSYSCALLAPI
95NTSTATUS
96NTAPI
97NtCancelIoFile(
98 _In_ HANDLE FileHandle,
99 _Out_ PIO_STATUS_BLOCK IoStatusBlock
100);
101
102__kernel_entry
103NTSYSCALLAPI
104NTSTATUS
105NTAPI
106NtCreateFile(
107 _Out_ PHANDLE FileHandle,
108 _In_ ACCESS_MASK DesiredAccess,
109 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
110 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
111 _In_opt_ PLARGE_INTEGER AllocationSize,
112 _In_ ULONG FileAttributes,
113 _In_ ULONG ShareAccess,
114 _In_ ULONG CreateDisposition,
115 _In_ ULONG CreateOptions,
116 _In_reads_bytes_opt_(EaLength) PVOID EaBuffer,
117 _In_ ULONG EaLength
118);
119
120NTSYSCALLAPI
121NTSTATUS
122NTAPI
123NtCreateIoCompletion(
124 _Out_ PHANDLE IoCompletionHandle,
125 _In_ ACCESS_MASK DesiredAccess,
126 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
127 _In_ ULONG NumberOfConcurrentThreads
128);
129
130NTSYSCALLAPI
131NTSTATUS
132NTAPI
133NtCreateMailslotFile(
134 _Out_ PHANDLE MailSlotFileHandle,
135 _In_ ACCESS_MASK DesiredAccess,
136 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
137 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
138 _In_ ULONG FileAttributes,
139 _In_ ULONG ShareAccess,
140 _In_ ULONG MaxMessageSize,
141 _In_ PLARGE_INTEGER TimeOut
142);
143
144NTSYSCALLAPI
145NTSTATUS
146NTAPI
147NtCreateNamedPipeFile(
148 _Out_ PHANDLE NamedPipeFileHandle,
149 _In_ ACCESS_MASK DesiredAccess,
150 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
151 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
152 _In_ ULONG ShareAccess,
153 _In_ ULONG CreateDisposition,
154 _In_ ULONG CreateOptions,
155 _In_ ULONG WriteModeMessage,
156 _In_ ULONG ReadModeMessage,
157 _In_ ULONG NonBlocking,
158 _In_ ULONG MaxInstances,
159 _In_ ULONG InBufferSize,
160 _In_ ULONG OutBufferSize,
161 _In_ PLARGE_INTEGER DefaultTimeOut
162);
163
164
165NTSYSCALLAPI
166NTSTATUS
167NTAPI
168NtDeleteDriverEntry(
169 _In_ ULONG Id
170);
171
172NTSYSCALLAPI
173NTSTATUS
174NTAPI
175NtDeleteBootEntry(
176 _In_ ULONG Id
177);
178
179NTSYSCALLAPI
180NTSTATUS
181NTAPI
182NtDeleteFile(
183 _In_ POBJECT_ATTRIBUTES ObjectAttributes
184);
185
186__kernel_entry
187NTSYSCALLAPI
188NTSTATUS
189NTAPI
190NtDeviceIoControlFile(
191 _In_ HANDLE FileHandle,
192 _In_opt_ HANDLE Event,
193 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
194 _In_opt_ PVOID ApcContext,
195 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
196 _In_ ULONG IoControlCode,
197 _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
198 _In_ ULONG InputBufferLength,
199 _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer,
200 _In_ ULONG OutputBufferLength
201);
202
203NTSYSCALLAPI
204NTSTATUS
205NTAPI
206NtEnumerateBootEntries(
207 _In_ PVOID Buffer,
208 _In_ PULONG BufferLength
209);
210
211NTSYSCALLAPI
212NTSTATUS
213NTAPI
214NtEnumerateDriverEntries(
215 _In_ PVOID Buffer,
216 _In_ PULONG BufferLength
217);
218
219NTSYSCALLAPI
220NTSTATUS
221NTAPI
222NtFlushBuffersFile(
223 _In_ HANDLE FileHandle,
224 _Out_ PIO_STATUS_BLOCK IoStatusBlock
225);
226
227NTSYSCALLAPI
228NTSTATUS
229NTAPI
230NtFlushWriteBuffer(VOID);
231
232__kernel_entry
233NTSYSCALLAPI
234NTSTATUS
235NTAPI
236NtFsControlFile(
237 _In_ HANDLE FileHandle,
238 _In_opt_ HANDLE Event,
239 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
240 _In_opt_ PVOID ApcContext,
241 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
242 _In_ ULONG FsControlCode,
243 _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
244 _In_ ULONG InputBufferLength,
245 _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer,
246 _In_ ULONG OutputBufferLength
247);
248
249NTSYSCALLAPI
250NTSTATUS
251NTAPI
252NtLoadDriver(
253 _In_ PUNICODE_STRING DriverServiceName
254);
255
256NTSYSCALLAPI
257NTSTATUS
258NTAPI
259NtLockFile(
260 _In_ HANDLE FileHandle,
261 _In_opt_ HANDLE Event,
262 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
263 _In_opt_ PVOID ApcContext,
264 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
265 _In_ PLARGE_INTEGER ByteOffset,
266 _In_ PLARGE_INTEGER Length,
267 _In_ ULONG Key,
268 _In_ BOOLEAN FailImmediatedly,
269 _In_ BOOLEAN ExclusiveLock
270);
271
272NTSYSCALLAPI
273NTSTATUS
274NTAPI
275NtModifyBootEntry(
276 _In_ PBOOT_ENTRY BootEntry
277);
278
279NTSYSCALLAPI
280NTSTATUS
281NTAPI
282NtModifyDriverEntry(
283 _In_ PEFI_DRIVER_ENTRY DriverEntry
284);
285
286NTSYSCALLAPI
287NTSTATUS
288NTAPI
289NtNotifyChangeDirectoryFile(
290 _In_ HANDLE FileHandle,
291 _In_opt_ HANDLE Event,
292 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
293 _In_opt_ PVOID ApcContext,
294 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
295 _Out_ PVOID Buffer,
296 _In_ ULONG BufferSize,
297 _In_ ULONG CompletionFilter,
298 _In_ BOOLEAN WatchTree
299);
300
301NTSYSCALLAPI
302NTSTATUS
303NTAPI
304NtOpenFile(
305 _Out_ PHANDLE FileHandle,
306 _In_ ACCESS_MASK DesiredAccess,
307 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
308 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
309 _In_ ULONG ShareAccess,
310 _In_ ULONG OpenOptions
311);
312
313NTSYSCALLAPI
314NTSTATUS
315NTAPI
316NtOpenIoCompletion(
317 _Out_ PHANDLE CompetionPort,
318 _In_ ACCESS_MASK DesiredAccess,
319 _In_ POBJECT_ATTRIBUTES ObjectAttributes
320);
321
322NTSYSCALLAPI
323NTSTATUS
324NTAPI
325NtQueryAttributesFile(
326 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
327 _Out_ PFILE_BASIC_INFORMATION FileInformation
328);
329
330NTSTATUS
331NTAPI
332NtQueryDriverEntryOrder(
333 _In_ PULONG Ids,
334 _In_ PULONG Count
335);
336
337NTSYSCALLAPI
338NTSTATUS
339NTAPI
340NtQueryBootEntryOrder(
341 _In_ PULONG Ids,
342 _In_ PULONG Count
343);
344
345NTSYSCALLAPI
346NTSTATUS
347NTAPI
348NtQueryBootOptions(
349 _In_ PBOOT_OPTIONS BootOptions,
350 _In_ PULONG BootOptionsLength
351);
352
353__kernel_entry
354NTSYSCALLAPI
355NTSTATUS
356NTAPI
357NtQueryDirectoryFile(
358 _In_ HANDLE FileHandle,
359 _In_opt_ HANDLE Event,
360 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
361 _In_opt_ PVOID ApcContext,
362 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
363 _Out_writes_bytes_(Length) PVOID FileInformation,
364 _In_ ULONG Length,
365 _In_ FILE_INFORMATION_CLASS FileInformationClass,
366 _In_ BOOLEAN ReturnSingleEntry,
367 _In_opt_ PUNICODE_STRING FileName,
368 _In_ BOOLEAN RestartScan
369);
370
371NTSYSCALLAPI
372NTSTATUS
373NTAPI
374NtQueryEaFile(
375 _In_ HANDLE FileHandle,
376 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
377 _Out_ PVOID Buffer,
378 _In_ ULONG Length,
379 _In_ BOOLEAN ReturnSingleEntry,
380 _In_opt_ PVOID EaList,
381 _In_ ULONG EaListLength,
382 _In_opt_ PULONG EaIndex,
383 _In_ BOOLEAN RestartScan
384);
385
386NTSYSCALLAPI
387NTSTATUS
388NTAPI
389NtQueryFullAttributesFile(
390 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
391 _Out_ PFILE_NETWORK_OPEN_INFORMATION FileInformation
392);
393
394__kernel_entry
395NTSYSCALLAPI
396NTSTATUS
397NTAPI
398NtQueryInformationFile(
399 _In_ HANDLE FileHandle,
400 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
401 _Out_writes_bytes_(Length) PVOID FileInformation,
402 _In_ ULONG Length,
403 _In_ FILE_INFORMATION_CLASS FileInformationClass
404);
405
406NTSYSCALLAPI
407NTSTATUS
408NTAPI
409NtQueryIoCompletion(
410 _In_ HANDLE IoCompletionHandle,
411 _In_ IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
412 _Out_ PVOID IoCompletionInformation,
413 _In_ ULONG IoCompletionInformationLength,
414 _Out_opt_ PULONG ResultLength
415);
416
417__kernel_entry
418NTSYSCALLAPI
419NTSTATUS
420NTAPI
421NtQueryQuotaInformationFile(
422 _In_ HANDLE FileHandle,
423 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
424 _Out_writes_bytes_(Length) PVOID Buffer,
425 _In_ ULONG Length,
426 _In_ BOOLEAN ReturnSingleEntry,
427 _In_reads_bytes_opt_(SidListLength) PVOID SidList,
428 _In_ ULONG SidListLength,
429 _In_reads_bytes_opt_((8 + (4 * ((SID *)StartSid)->SubAuthorityCount))) // SeLengthSid()
430 PSID StartSid,
431 _In_ BOOLEAN RestartScan
432);
433
434__kernel_entry
435NTSYSCALLAPI
436NTSTATUS
437NTAPI
438NtQueryVolumeInformationFile(
439 _In_ HANDLE FileHandle,
440 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
441 _Out_writes_bytes_(Length) PVOID FsInformation,
442 _In_ ULONG Length,
443 _In_ FS_INFORMATION_CLASS FsInformationClass
444);
445
446__kernel_entry
447NTSYSCALLAPI
448NTSTATUS
449NTAPI
450NtReadFile(
451 _In_ HANDLE FileHandle,
452 _In_opt_ HANDLE Event,
453 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
454 _In_opt_ PVOID ApcContext,
455 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
456 _Out_writes_bytes_(Length) PVOID Buffer,
457 _In_ ULONG Length,
458 _In_opt_ PLARGE_INTEGER ByteOffset,
459 _In_opt_ PULONG Key
460);
461
462NTSYSCALLAPI
463NTSTATUS
464NTAPI
465NtReadFileScatter(
466 _In_ HANDLE FileHandle,
467 _In_opt_ HANDLE Event,
468 _In_opt_ PIO_APC_ROUTINE UserApcRoutine,
469 _In_opt_ PVOID UserApcContext,
470 _Out_ PIO_STATUS_BLOCK UserIoStatusBlock,
471 _In_ FILE_SEGMENT_ELEMENT BufferDescription[],
472 _In_ ULONG BufferLength,
473 _In_ PLARGE_INTEGER ByteOffset,
474 _In_opt_ PULONG Key
475);
476
477NTSYSCALLAPI
478NTSTATUS
479NTAPI
480NtRemoveIoCompletion(
481 _In_ HANDLE IoCompletionHandle,
482 _Out_ PVOID *CompletionKey,
483 _Out_ PVOID *CompletionContext,
484 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
485 _In_opt_ PLARGE_INTEGER Timeout
486);
487
488NTSYSCALLAPI
489NTSTATUS
490NTAPI
491NtSetBootEntryOrder(
492 _In_ PULONG Ids,
493 _In_ PULONG Count
494);
495
496NTSYSCALLAPI
497NTSTATUS
498NTAPI
499NtSetBootOptions(
500 _In_ PBOOT_OPTIONS BootOptions,
501 _In_ ULONG FieldsToChange
502);
503
504NTSTATUS
505NTAPI
506NtSetDriverEntryOrder(
507 _In_ PULONG Ids,
508 _In_ PULONG Count
509);
510
511NTSYSCALLAPI
512NTSTATUS
513NTAPI
514NtSetEaFile(
515 _In_ HANDLE FileHandle,
516 _In_ PIO_STATUS_BLOCK IoStatusBlock,
517 PVOID EaBuffer,
518 ULONG EaBufferSize
519);
520
521__kernel_entry
522NTSYSCALLAPI
523NTSTATUS
524NTAPI
525NtSetInformationFile(
526 _In_ HANDLE FileHandle,
527 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
528 _In_reads_bytes_(Length) PVOID FileInformation,
529 _In_ ULONG Length,
530 _In_ FILE_INFORMATION_CLASS FileInformationClass
531);
532
533NTSYSCALLAPI
534NTSTATUS
535NTAPI
536NtSetIoCompletion(
537 _In_ HANDLE IoCompletionPortHandle,
538 _In_ PVOID CompletionKey,
539 _In_ PVOID CompletionContext,
540 _In_ NTSTATUS CompletionStatus,
541 _In_ ULONG CompletionInformation
542);
543
544NTSYSCALLAPI
545NTSTATUS
546NTAPI
547NtSetQuotaInformationFile(
548 HANDLE FileHandle,
549 PIO_STATUS_BLOCK IoStatusBlock,
550 PVOID Buffer,
551 ULONG BufferLength
552);
553
554__kernel_entry
555NTSYSCALLAPI
556NTSTATUS
557NTAPI
558NtSetVolumeInformationFile(
559 _In_ HANDLE FileHandle,
560 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
561 _In_reads_bytes_(Length) PVOID FsInformation,
562 _In_ ULONG Length,
563 _In_ FS_INFORMATION_CLASS FsInformationClass
564);
565
566NTSYSCALLAPI
567NTSTATUS
568NTAPI
569NtTranslateFilePath(
570 PFILE_PATH InputFilePath,
571 ULONG OutputType,
572 PFILE_PATH OutputFilePath,
573 ULONG OutputFilePathLength
574);
575
576NTSYSCALLAPI
577NTSTATUS
578NTAPI
579NtUnloadDriver(
580 _In_ PUNICODE_STRING DriverServiceName
581);
582
583__kernel_entry
584NTSYSCALLAPI
585NTSTATUS
586NTAPI
587NtUnlockFile(
588 _In_ HANDLE FileHandle,
589 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
590 _In_ PLARGE_INTEGER ByteOffset,
591 _In_ PLARGE_INTEGER Length,
592 _In_ ULONG Key
593);
594
595__kernel_entry
596NTSYSCALLAPI
597NTSTATUS
598NTAPI
599NtWriteFile(
600 _In_ HANDLE FileHandle,
601 _In_opt_ HANDLE Event,
602 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
603 _In_opt_ PVOID ApcContext,
604 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
605 _In_reads_bytes_(Length) PVOID Buffer,
606 _In_ ULONG Length,
607 _In_opt_ PLARGE_INTEGER ByteOffset,
608 _In_opt_ PULONG Key
609);
610
611NTSYSCALLAPI
612NTSTATUS
613NTAPI
614NtWriteFileGather(
615 _In_ HANDLE FileHandle,
616 _In_opt_ HANDLE Event,
617 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
618 _In_opt_ PVOID ApcContext,
619 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
620 _In_ FILE_SEGMENT_ELEMENT BufferDescription[],
621 _In_ ULONG BufferLength,
622 _In_ PLARGE_INTEGER ByteOffset,
623 _In_opt_ PULONG Key
624);
625
626NTSYSAPI
627NTSTATUS
628NTAPI
629ZwAddBootEntry(
630 _In_ PUNICODE_STRING EntryName,
631 _In_ PUNICODE_STRING EntryValue
632);
633
634NTSYSAPI
635NTSTATUS
636NTAPI
637ZwCancelIoFile(
638 _In_ HANDLE FileHandle,
639 _Out_ PIO_STATUS_BLOCK IoStatusBlock
640);
641
642_IRQL_requires_max_(PASSIVE_LEVEL)
643NTSYSAPI
644NTSTATUS
645NTAPI
646ZwCreateFile(
647 _Out_ PHANDLE FileHandle,
648 _In_ ACCESS_MASK DesiredAccess,
649 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
650 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
651 _In_opt_ PLARGE_INTEGER AllocationSize,
652 _In_ ULONG FileAttributes,
653 _In_ ULONG ShareAccess,
654 _In_ ULONG CreateDisposition,
655 _In_ ULONG CreateOptions,
656 _In_reads_bytes_opt_(EaLength) PVOID EaBuffer,
657 _In_ ULONG EaLength
658);
659
660NTSYSAPI
661NTSTATUS
662NTAPI
663ZwCreateIoCompletion(
664 _Out_ PHANDLE IoCompletionHandle,
665 _In_ ACCESS_MASK DesiredAccess,
666 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
667 _In_ ULONG NumberOfConcurrentThreads
668);
669
670NTSYSAPI
671NTSTATUS
672NTAPI
673ZwCreateMailslotFile(
674 _Out_ PHANDLE MailSlotFileHandle,
675 _In_ ACCESS_MASK DesiredAccess,
676 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
677 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
678 _In_ ULONG FileAttributes,
679 _In_ ULONG ShareAccess,
680 _In_ ULONG MaxMessageSize,
681 _In_ PLARGE_INTEGER TimeOut
682);
683
684NTSYSAPI
685NTSTATUS
686NTAPI
687ZwCreateNamedPipeFile(
688 _Out_ PHANDLE NamedPipeFileHandle,
689 _In_ ACCESS_MASK DesiredAccess,
690 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
691 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
692 _In_ ULONG ShareAccess,
693 _In_ ULONG CreateDisposition,
694 _In_ ULONG CreateOptions,
695 _In_ ULONG WriteModeMessage,
696 _In_ ULONG ReadModeMessage,
697 _In_ ULONG NonBlocking,
698 _In_ ULONG MaxInstances,
699 _In_ ULONG InBufferSize,
700 _In_ ULONG OutBufferSize,
701 _In_ PLARGE_INTEGER DefaultTimeOut
702);
703
704NTSYSAPI
705NTSTATUS
706NTAPI
707ZwDeleteBootEntry(
708 _In_ PUNICODE_STRING EntryName,
709 _In_ PUNICODE_STRING EntryValue
710);
711
712NTSYSAPI
713NTSTATUS
714NTAPI
715ZwDeleteFile(
716 _In_ POBJECT_ATTRIBUTES ObjectAttributes
717);
718
719_IRQL_requires_max_(PASSIVE_LEVEL)
720NTSYSAPI
721NTSTATUS
722NTAPI
723ZwDeviceIoControlFile(
724 _In_ HANDLE FileHandle,
725 _In_opt_ HANDLE Event,
726 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
727 _In_opt_ PVOID ApcContext,
728 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
729 _In_ ULONG IoControlCode,
730 _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
731 _In_ ULONG InputBufferLength,
732 _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer,
733 _In_ ULONG OutputBufferLength
734);
735
736_IRQL_requires_max_(PASSIVE_LEVEL)
737NTSYSAPI
738NTSTATUS
739NTAPI
740ZwFlushBuffersFile(
741 _In_ HANDLE FileHandle,
742 _Out_ PIO_STATUS_BLOCK IoStatusBlock
743);
744
745NTSYSAPI
746NTSTATUS
747NTAPI
748ZwFlushWriteBuffer(VOID);
749
750_IRQL_requires_max_(PASSIVE_LEVEL)
751NTSYSAPI
752NTSTATUS
753NTAPI
754ZwFsControlFile(
755 _In_ HANDLE FileHandle,
756 _In_opt_ HANDLE Event,
757 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
758 _In_opt_ PVOID ApcContext,
759 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
760 _In_ ULONG FsControlCode,
761 _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
762 _In_ ULONG InputBufferLength,
763 _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer,
764 _In_ ULONG OutputBufferLength
765);
766
767#ifdef NTOS_MODE_USER
768NTSYSAPI
769NTSTATUS
770NTAPI
771ZwLoadDriver(
772 _In_ PUNICODE_STRING DriverServiceName
773);
774#endif
775
776NTSYSAPI
777NTSTATUS
778NTAPI
779ZwLockFile(
780 _In_ HANDLE FileHandle,
781 _In_opt_ HANDLE Event,
782 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
783 _In_opt_ PVOID ApcContext,
784 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
785 _In_ PLARGE_INTEGER ByteOffset,
786 _In_ PLARGE_INTEGER Length,
787 _In_ ULONG Key,
788 _In_ BOOLEAN FailImmediatedly,
789 _In_ BOOLEAN ExclusiveLock
790);
791
792NTSYSAPI
793NTSTATUS
794NTAPI
795ZwNotifyChangeDirectoryFile(
796 _In_ HANDLE FileHandle,
797 _In_opt_ HANDLE Event,
798 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
799 _In_opt_ PVOID ApcContext,
800 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
801 _Out_ PVOID Buffer,
802 _In_ ULONG BufferSize,
803 _In_ ULONG CompletionFilter,
804 _In_ BOOLEAN WatchTree
805);
806
807NTSYSAPI
808NTSTATUS
809NTAPI
810ZwOpenFile(
811 _Out_ PHANDLE FileHandle,
812 _In_ ACCESS_MASK DesiredAccess,
813 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
814 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
815 _In_ ULONG ShareAccess,
816 _In_ ULONG OpenOptions
817);
818
819NTSYSAPI
820NTSTATUS
821NTAPI
822ZwOpenIoCompletion(
823 _Out_ PHANDLE CompetionPort,
824 _In_ ACCESS_MASK DesiredAccess,
825 _In_ POBJECT_ATTRIBUTES ObjectAttributes
826);
827
828NTSYSAPI
829NTSTATUS
830NTAPI
831ZwQueryAttributesFile(
832 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
833 _Out_ PFILE_BASIC_INFORMATION FileInformation
834);
835
836_IRQL_requires_max_(PASSIVE_LEVEL)
837NTSYSAPI
838NTSTATUS
839NTAPI
840ZwQueryDirectoryFile(
841 _In_ HANDLE FileHandle,
842 _In_opt_ HANDLE Event,
843 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
844 _In_opt_ PVOID ApcContext,
845 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
846 _Out_writes_bytes_(Length) PVOID FileInformation,
847 _In_ ULONG Length,
848 _In_ FILE_INFORMATION_CLASS FileInformationClass,
849 _In_ BOOLEAN ReturnSingleEntry,
850 _In_opt_ PUNICODE_STRING FileName,
851 _In_ BOOLEAN RestartScan
852);
853
854#ifdef NTOS_MODE_USER
855NTSYSAPI
856NTSTATUS
857NTAPI
858ZwQueryEaFile(
859 _In_ HANDLE FileHandle,
860 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
861 _Out_ PVOID Buffer,
862 _In_ ULONG Length,
863 _In_ BOOLEAN ReturnSingleEntry,
864 _In_opt_ PVOID EaList,
865 _In_ ULONG EaListLength,
866 _In_opt_ PULONG EaIndex,
867 _In_ BOOLEAN RestartScan
868);
869#endif
870
871NTSYSAPI
872NTSTATUS
873NTAPI
874ZwQueryFullAttributesFile(
875 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
876 _Out_ PFILE_NETWORK_OPEN_INFORMATION FileInformation
877);
878
879_IRQL_requires_max_(PASSIVE_LEVEL)
880NTSYSAPI
881NTSTATUS
882NTAPI
883ZwQueryInformationFile(
884 _In_ HANDLE FileHandle,
885 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
886 _Out_writes_bytes_(Length) PVOID FileInformation,
887 _In_ ULONG Length,
888 _In_ FILE_INFORMATION_CLASS FileInformationClass
889);
890
891NTSYSAPI
892NTSTATUS
893NTAPI
894ZwQueryIoCompletion(
895 _In_ HANDLE IoCompletionHandle,
896 _In_ IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
897 _Out_ PVOID IoCompletionInformation,
898 _In_ ULONG IoCompletionInformationLength,
899 _Out_opt_ PULONG ResultLength
900);
901
902NTSYSAPI
903NTSTATUS
904NTAPI
905ZwQueryQuotaInformationFile(
906 _In_ HANDLE FileHandle,
907 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
908 _Out_ PVOID Buffer,
909 _In_ ULONG Length,
910 _In_ BOOLEAN ReturnSingleEntry,
911 _In_opt_ PVOID SidList,
912 _In_ ULONG SidListLength,
913 _In_opt_ PSID StartSid,
914 _In_ BOOLEAN RestartScan
915);
916
917_IRQL_requires_max_(PASSIVE_LEVEL)
918NTSYSAPI
919NTSTATUS
920NTAPI
921ZwQueryVolumeInformationFile(
922 _In_ HANDLE FileHandle,
923 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
924 _Out_writes_bytes_(Length) PVOID FsInformation,
925 _In_ ULONG Length,
926 _In_ FS_INFORMATION_CLASS FsInformationClass
927);
928
929_IRQL_requires_max_(PASSIVE_LEVEL)
930NTSYSAPI
931NTSTATUS
932NTAPI
933ZwReadFile(
934 _In_ HANDLE FileHandle,
935 _In_opt_ HANDLE Event,
936 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
937 _In_opt_ PVOID ApcContext,
938 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
939 _Out_writes_bytes_(Length) PVOID Buffer,
940 _In_ ULONG Length,
941 _In_opt_ PLARGE_INTEGER ByteOffset,
942 _In_opt_ PULONG Key
943);
944
945NTSYSAPI
946NTSTATUS
947NTAPI
948ZwReadFileScatter(
949 _In_ HANDLE FileHandle,
950 _In_opt_ HANDLE Event,
951 _In_opt_ PIO_APC_ROUTINE UserApcRoutine,
952 _In_opt_ PVOID UserApcContext,
953 _Out_ PIO_STATUS_BLOCK UserIoStatusBlock,
954 _In_ FILE_SEGMENT_ELEMENT BufferDescription[],
955 _In_ ULONG BufferLength,
956 _In_ PLARGE_INTEGER ByteOffset,
957 _In_opt_ PULONG Key
958);
959
960NTSYSAPI
961NTSTATUS
962NTAPI
963ZwRemoveIoCompletion(
964 _In_ HANDLE IoCompletionHandle,
965 _Out_ PVOID *CompletionKey,
966 _Out_ PVOID *CompletionContext,
967 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
968 _In_opt_ PLARGE_INTEGER Timeout
969);
970
971#ifdef NTOS_MODE_USER
972NTSYSAPI
973NTSTATUS
974NTAPI
975ZwSetEaFile(
976 _In_ HANDLE FileHandle,
977 _In_ PIO_STATUS_BLOCK IoStatusBlock,
978 PVOID EaBuffer,
979 ULONG EaBufferSize
980);
981#endif
982
983_IRQL_requires_max_(PASSIVE_LEVEL)
984NTSYSAPI
985NTSTATUS
986NTAPI
987ZwSetInformationFile(
988 _In_ HANDLE FileHandle,
989 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
990 _In_reads_bytes_(Length) PVOID FileInformation,
991 _In_ ULONG Length,
992 _In_ FILE_INFORMATION_CLASS FileInformationClass
993);
994
995NTSYSAPI
996NTSTATUS
997NTAPI
998ZwSetIoCompletion(
999 _In_ HANDLE IoCompletionPortHandle,
1000 _In_ PVOID CompletionKey,
1001 _In_ PVOID CompletionContext,
1002 _In_ NTSTATUS CompletionStatus,
1003 _In_ ULONG CompletionInformation
1004);
1005
1006NTSYSAPI
1007NTSTATUS
1008NTAPI
1009ZwSetQuotaInformationFile(
1010 _In_ HANDLE FileHandle,
1011 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
1012 _In_ PVOID Buffer,
1013 _In_ ULONG BufferLength
1014);
1015
1016_IRQL_requires_max_(PASSIVE_LEVEL)
1017NTSYSAPI
1018NTSTATUS
1019NTAPI
1020ZwSetVolumeInformationFile(
1021 _In_ HANDLE FileHandle,
1022 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
1023 _In_reads_bytes_(Length) PVOID FsInformation,
1024 _In_ ULONG Length,
1025 _In_ FS_INFORMATION_CLASS FsInformationClass
1026);
1027
1028NTSYSAPI
1029NTSTATUS
1030NTAPI
1031ZwUnloadDriver(
1032 _In_ PUNICODE_STRING DriverServiceName
1033);
1034
1035NTSYSAPI
1036NTSTATUS
1037NTAPI
1038ZwUnlockFile(
1039 _In_ HANDLE FileHandle,
1040 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
1041 _In_ PLARGE_INTEGER ByteOffset,
1042 _In_ PLARGE_INTEGER Length,
1043 _In_opt_ ULONG Key
1044);
1045
1046_IRQL_requires_max_(PASSIVE_LEVEL)
1047NTSYSAPI
1048NTSTATUS
1049NTAPI
1050ZwWriteFile(
1051 _In_ HANDLE FileHandle,
1052 _In_opt_ HANDLE Event,
1053 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
1054 _In_opt_ PVOID ApcContext,
1055 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
1056 _In_reads_bytes_(Length) PVOID Buffer,
1057 _In_ ULONG Length,
1058 _In_opt_ PLARGE_INTEGER ByteOffset,
1059 _In_opt_ PULONG Key
1060);
1061
1062NTSYSAPI
1063NTSTATUS
1064NTAPI
1065ZwWriteFileGather(
1066 _In_ HANDLE FileHandle,
1067 _In_opt_ HANDLE Event,
1068 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
1069 _In_opt_ PVOID ApcContext,
1070 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
1071 _In_ FILE_SEGMENT_ELEMENT BufferDescription[],
1072 _In_ ULONG BufferLength,
1073 _In_ PLARGE_INTEGER ByteOffset,
1074 _In_opt_ PULONG Key
1075);
1076
1077#ifdef __cplusplus
1078}
1079#endif
1080
1081#endif
1082
1083