Fix FsRtlNotifyInitializeSync signature.
[reactos.git] / reactos / include / ddk / fsfuncs.h
1 #ifndef __INCLUDE_DDK_FSFUNCS_H
2 #define __INCLUDE_DDK_FSFUNCS_H
3 /* $Id$ */
4 #define FlagOn(x,f) ((x) & (f))
5
6 #include <ntos/fstypes.h>
7
8 /* Some comments on the Prototypes that aren't in the IFS:
9
10 FsRtlMdlReadCompleteDev (FsRtlMdlReadComplete is on GNU IFS. The Dev Suffix simply means an extra PDEVICE_OBJECT param)
11 FsRtlMdlReadDev (FsRtlMdlReadDev is on GNU IFS. The Dev Suffix simply means an extra PDEVICE_OBJECT param)
12 FsRtlMdlWriteCompleteDev FsRtlMdlWriteCompleteDev is on GNU IFS. The Dev Suffix simply means an extra PDEVICE_OBJECT param)
13 FsRtlPrepareMdlWrite (Compared with CcMdlWrite, which is already documented)
14 FsRtlPrepareMdlWriteDev (Same as above, and add a pointer to device object (Dev suffix)
15
16 */
17
18 #ifdef __NTOSKRNL__
19 extern PUCHAR EXPORTED FsRtlLegalAnsiCharacterArray;
20 #else
21 extern PUCHAR IMPORTED FsRtlLegalAnsiCharacterArray;
22 #endif
23
24 #define FSRTL_WILD_CHARACTER 0x08
25
26 typedef signed char SCHAR;
27
28 VOID
29 STDCALL
30 FsRtlFreeFileLock(
31 IN PFILE_LOCK FileLock
32 );
33
34 VOID
35 STDCALL
36 FsRtlAcquireFileExclusive (
37 IN PFILE_OBJECT FileObject
38 );
39
40 PFILE_LOCK
41 STDCALL
42 FsRtlAllocateFileLock (
43 IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
44 IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
45 );
46
47 #define FsRtlAreThereCurrentFileLocks(FL) (((FL)->FastIoIsQuestionable))
48
49 BOOLEAN STDCALL
50 FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb,
51 IN LONGLONG Vbn,
52 IN LONGLONG Lbn,
53 IN LONGLONG SectorCount);
54
55 BOOLEAN STDCALL
56 FsRtlAddMcbEntry (IN PMCB Mcb,
57 IN VBN Vbn,
58 IN LBN Lbn,
59 IN ULONG SectorCount);
60
61 VOID STDCALL
62 FsRtlAddToTunnelCache (
63 IN PTUNNEL Cache,
64 IN ULONGLONG DirectoryKey,
65 IN PUNICODE_STRING ShortName,
66 IN PUNICODE_STRING LongName,
67 IN BOOLEAN KeyByShortName,
68 IN ULONG DataLength,
69 IN PVOID Data
70 );
71
72 PVOID STDCALL
73 FsRtlAllocatePool (
74 IN POOL_TYPE PoolType,
75 IN ULONG NumberOfBytes
76 );
77
78 PVOID STDCALL
79 FsRtlAllocatePoolWithQuota (
80 IN POOL_TYPE PoolType,
81 IN ULONG NumberOfBytes
82 );
83
84 PVOID STDCALL
85 FsRtlAllocatePoolWithQuotaTag (
86 IN POOL_TYPE PoolType,
87 IN ULONG NumberOfBytes,
88 IN ULONG Tag
89 );
90 PVOID
91 STDCALL
92 FsRtlAllocatePoolWithTag (
93 IN POOL_TYPE PoolType,
94 IN ULONG NumberOfBytes,
95 IN ULONG Tag
96 );
97 DWORD
98 STDCALL
99 FsRtlAllocateResource (
100 VOID
101 );
102 BOOLEAN
103 STDCALL
104 FsRtlAreNamesEqual (
105 IN PUNICODE_STRING Name1,
106 IN PUNICODE_STRING Name2,
107 IN BOOLEAN IgnoreCase,
108 IN PWCHAR UpcaseTable OPTIONAL
109 );
110 NTSTATUS
111 STDCALL
112 FsRtlBalanceReads (
113 PDEVICE_OBJECT TargetDevice
114 );
115 BOOLEAN
116 STDCALL
117 FsRtlCheckLockForReadAccess (
118 IN PFILE_LOCK FileLock,
119 IN PIRP Irp
120 );
121 BOOLEAN
122 STDCALL
123 FsRtlCheckLockForWriteAccess (
124 IN PFILE_LOCK FileLock,
125 IN PIRP Irp
126 );
127
128 NTSTATUS STDCALL
129 FsRtlCheckOplock(IN POPLOCK Oplock,
130 IN PIRP Irp,
131 IN PVOID Context,
132 IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
133 IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
134
135 BOOLEAN
136 STDCALL
137 FsRtlCopyRead (
138 IN PFILE_OBJECT FileObject,
139 IN PLARGE_INTEGER FileOffset,
140 IN ULONG Length,
141 IN BOOLEAN Wait,
142 IN ULONG LockKey,
143 OUT PVOID Buffer,
144 OUT PIO_STATUS_BLOCK IoStatus,
145 IN PDEVICE_OBJECT DeviceObject
146 );
147 BOOLEAN
148 STDCALL
149 FsRtlCopyWrite (
150 IN PFILE_OBJECT FileObject,
151 IN PLARGE_INTEGER FileOffset,
152 IN ULONG Length,
153 IN BOOLEAN Wait,
154 IN ULONG LockKey,
155 IN PVOID Buffer,
156 OUT PIO_STATUS_BLOCK IoStatus,
157 IN PDEVICE_OBJECT DeviceObject
158 );
159
160 BOOLEAN STDCALL
161 FsRtlCurrentBatchOplock(IN POPLOCK Oplock);
162
163 VOID STDCALL
164 FsRtlDeleteKeyFromTunnelCache(IN PTUNNEL Cache,
165 IN ULONGLONG DirectoryKey);
166
167 VOID STDCALL
168 FsRtlDeleteTunnelCache(IN PTUNNEL Cache);
169
170 VOID STDCALL
171 FsRtlDeregisterUncProvider(IN HANDLE Handle);
172
173 VOID STDCALL
174 FsRtlDissectDbcs(IN ANSI_STRING Name,
175 OUT PANSI_STRING FirstPart,
176 OUT PANSI_STRING RemainingPart);
177
178 VOID STDCALL
179 FsRtlDissectName(IN UNICODE_STRING Name,
180 OUT PUNICODE_STRING FirstPart,
181 OUT PUNICODE_STRING RemainingPart);
182
183 BOOLEAN STDCALL
184 FsRtlDoesDbcsContainWildCards(IN PANSI_STRING Name);
185
186 BOOLEAN STDCALL
187 FsRtlDoesNameContainWildCards(IN PUNICODE_STRING Name);
188
189 BOOLEAN
190 STDCALL
191 FsRtlFastCheckLockForRead (
192 IN PFILE_LOCK FileLock,
193 IN PLARGE_INTEGER FileOffset,
194 IN PLARGE_INTEGER Length,
195 IN ULONG Key,
196 IN PFILE_OBJECT FileObject,
197 IN PEPROCESS Process
198 );
199 BOOLEAN
200 STDCALL
201 FsRtlFastCheckLockForWrite (
202 IN PFILE_LOCK FileLock,
203 IN PLARGE_INTEGER FileOffset,
204 IN PLARGE_INTEGER Length,
205 IN ULONG Key,
206 IN PFILE_OBJECT FileObject,
207 IN PEPROCESS Process
208 );
209 NTSTATUS
210 STDCALL
211 FsRtlFastUnlockAll (
212 IN PFILE_LOCK FileLock,
213 IN PFILE_OBJECT FileObject,
214 IN PEPROCESS Process,
215 IN PVOID Context OPTIONAL
216 );
217 NTSTATUS
218 STDCALL
219 FsRtlFastUnlockAllByKey (
220 IN PFILE_LOCK FileLock,
221 IN PFILE_OBJECT FileObject,
222 IN PEPROCESS Process,
223 IN ULONG Key,
224 IN PVOID Context OPTIONAL
225 );
226 NTSTATUS
227 STDCALL
228 FsRtlFastUnlockSingle (
229 IN PFILE_LOCK FileLock,
230 IN PFILE_OBJECT FileObject,
231 IN PLARGE_INTEGER FileOffset,
232 IN PLARGE_INTEGER Length,
233 IN PEPROCESS Process,
234 IN ULONG Key,
235 IN PVOID Context OPTIONAL,
236 IN BOOLEAN AlreadySynchronized
237 );
238 BOOLEAN
239 STDCALL
240 FsRtlFindInTunnelCache (
241 IN PTUNNEL Cache,
242 IN ULONGLONG DirectoryKey,
243 IN PUNICODE_STRING Name,
244 OUT PUNICODE_STRING ShortName,
245 OUT PUNICODE_STRING LongName,
246 IN OUT PULONG DataLength,
247 OUT PVOID Data
248 );
249 NTSTATUS
250 STDCALL
251 FsRtlGetFileSize (
252 IN PFILE_OBJECT FileObject,
253 IN OUT PLARGE_INTEGER FileSize
254 );
255 PFILE_LOCK_INFO
256 STDCALL
257 FsRtlGetNextFileLock (
258 IN PFILE_LOCK FileLock,
259 IN BOOLEAN Restart
260 );
261
262 BOOLEAN STDCALL
263 FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
264 IN ULONG RunIndex,
265 OUT PLONGLONG Vbn,
266 OUT PLONGLONG Lbn,
267 OUT PLONGLONG SectorCount);
268
269 BOOLEAN STDCALL
270 FsRtlGetNextMcbEntry (IN PMCB Mcb,
271 IN ULONG RunIndex,
272 OUT PVBN Vbn,
273 OUT PLBN Lbn,
274 OUT PULONG SectorCount);
275 #define FsRtlEnterFileSystem KeEnterCriticalRegion
276 #define FsRtlExitFileSystem KeLeaveCriticalRegion
277
278 VOID
279 STDCALL
280 FsRtlIncrementCcFastReadNotPossible( VOID );
281
282 VOID
283 STDCALL
284 FsRtlIncrementCcFastReadWait( VOID );
285
286 VOID
287 STDCALL
288 FsRtlIncrementCcFastReadNoWait( VOID );
289
290 VOID
291 STDCALL
292 FsRtlIncrementCcFastReadResourceMiss( VOID );
293
294 VOID
295 STDCALL
296 FsRtlInitializeFileLock (
297 IN PFILE_LOCK FileLock,
298 IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
299 IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
300 );
301
302 VOID STDCALL
303 FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb,
304 IN POOL_TYPE PoolType);
305
306 VOID STDCALL
307 FsRtlInitializeMcb (IN PMCB Mcb,
308 IN POOL_TYPE PoolType);
309
310 VOID STDCALL
311 FsRtlInitializeOplock(IN OUT POPLOCK Oplock);
312
313
314 VOID
315 STDCALL
316 FsRtlInitializeTunnelCache (
317 IN PTUNNEL Cache
318 );
319
320 NTSTATUS
321 STDCALL
322 FsRtlInsertPerFileObjectContext (
323 IN PFSRTL_ADVANCED_FCB_HEADER PerFileObjectContext,
324 IN PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/ Ptr
325 );
326
327 NTSTATUS
328 STDCALL
329 FsRtlInsertPerStreamContext (
330 IN PFSRTL_ADVANCED_FCB_HEADER PerStreamContext,
331 IN PFSRTL_PER_STREAM_CONTEXT Ptr
332 );
333
334 BOOLEAN STDCALL
335 FsRtlIsDbcsInExpression(IN PANSI_STRING Expression,
336 IN PANSI_STRING Name);
337
338 BOOLEAN
339 STDCALL
340 FsRtlIsFatDbcsLegal(IN ANSI_STRING DbcsName,
341 IN BOOLEAN WildCardsPermissible,
342 IN BOOLEAN PathNamePermissible,
343 IN BOOLEAN LeadingBackslashPermissible);
344
345 BOOLEAN
346 STDCALL
347 FsRtlIsHpfsDbcsLegal(IN ANSI_STRING DbcsName,
348 IN BOOLEAN WildCardsPermissible,
349 IN BOOLEAN PathNamePermissible,
350 IN BOOLEAN LeadingBackslashPermissible);
351
352 BOOLEAN
353 STDCALL
354 FsRtlIsNameInExpression (
355 IN PUNICODE_STRING Expression,
356 IN PUNICODE_STRING Name,
357 IN BOOLEAN IgnoreCase,
358 IN PWCHAR UpcaseTable OPTIONAL
359 );
360
361 BOOLEAN STDCALL
362 FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus);
363
364 ULONG
365 FsRtlIsPagingFile (
366 IN PFILE_OBJECT FileObject
367 );
368
369 BOOLEAN STDCALL
370 FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus);
371
372 #define FsRtlIsUnicodeCharacterWild(C) ( \
373 (((C) >= 0x40) ? \
374 FALSE : \
375 FlagOn((FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \
376 )
377
378 #define FSRTL_FAT_LEGAL 0x01
379 #define FSRTL_HPFS_LEGAL 0x02
380 #define FSRTL_NTFS_LEGAL 0x04
381 #define FSRTL_WILD_CHARACTER 0x08
382 #define FSRTL_OLE_LEGAL 0x10
383 #define FSRTL_NTFS_STREAM_LEGAL (FSRTL_NTFS_LEGAL | FSRTL_OLE_LEGAL)
384
385 #define FsRtlIsAnsiCharacterWild(C) ( \
386 FsRtlTestAnsiCharacter((C), FALSE, FALSE, FSRTL_WILD_CHARACTER) \
387 )
388
389 #define FsRtlIsAnsiCharacterLegalFat(C,WILD_OK) ( \
390 FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_FAT_LEGAL) \
391 )
392
393 #define FsRtlIsAnsiCharacterLegalHpfs(C,WILD_OK) ( \
394 FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_HPFS_LEGAL) \
395 )
396
397 #define FsRtlIsAnsiCharacterLegalNtfs(C,WILD_OK) ( \
398 FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_LEGAL) \
399 )
400
401 #define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) ( \
402 FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL) \
403 )
404
405 #define FsRtlIsAnsiCharacterLegal(C,FLAGS) ( \
406 FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS)) \
407 )
408
409 #define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) ( \
410 ((SCHAR)(C) < 0) ? DEFAULT_RET : \
411 FlagOn(FsRtlLegalAnsiCharacterArray[(int)(C)], \
412 (FLAGS) | \
413 ((WILD_OK) ? FSRTL_WILD_CHARACTER : 0) ) \
414 )
415
416 #define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \
417 (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
418 (NLS_MB_CODE_PAGE_TAG && \
419 (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
420 )
421
422
423 BOOLEAN STDCALL
424 FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
425 IN LONGLONG Vbn,
426 OUT PLONGLONG Lbn OPTIONAL,
427 OUT PLONGLONG SectorCountFromLbn OPTIONAL,
428 OUT PLONGLONG StartingLbn OPTIONAL,
429 OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
430 OUT PULONG Index OPTIONAL);
431
432 BOOLEAN STDCALL
433 FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
434 OUT PLONGLONG Vbn,
435 OUT PLONGLONG Lbn);
436 BOOLEAN
437 STDCALL
438 FsRtlLookupLastLargeMcbEntryAndIndex (
439 IN PLARGE_MCB OpaqueMcb,
440 OUT PLONGLONG LargeVbn,
441 OUT PLONGLONG LargeLbn,
442 OUT PULONG Index
443 );
444
445 BOOLEAN STDCALL
446 FsRtlLookupLastMcbEntry (IN PMCB Mcb,
447 OUT PVBN Vbn,
448 OUT PLBN Lbn);
449 BOOLEAN STDCALL
450 FsRtlLookupMcbEntry (IN PMCB Mcb,
451 IN VBN Vbn,
452 OUT PLBN Lbn,
453 OUT PULONG SectorCount OPTIONAL,
454 OUT PULONG Index);
455
456 PFSRTL_PER_STREAM_CONTEXT
457 STDCALL
458 FsRtlLookupPerStreamContextInternal (
459 IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
460 IN PVOID OwnerId OPTIONAL,
461 IN PVOID InstanceId OPTIONAL
462 );
463
464 PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
465 STDCALL
466 FsRtlLookupPerFileObjectContext (
467 IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
468 IN PVOID OwnerId OPTIONAL,
469 IN PVOID InstanceId OPTIONAL
470 );
471
472 BOOLEAN
473 STDCALL
474 FsRtlMdlRead (
475 IN PFILE_OBJECT FileObject,
476 IN PLARGE_INTEGER FileOffset,
477 IN ULONG Length,
478 IN ULONG LockKey,
479 OUT PMDL *MdlChain,
480 OUT PIO_STATUS_BLOCK IoStatus
481 );
482
483 BOOLEAN
484 STDCALL
485 FsRtlMdlReadComplete (
486 IN PFILE_OBJECT FileObject,
487 IN OUT PMDL MdlChain
488 );
489 BOOLEAN
490 STDCALL
491 FsRtlMdlReadCompleteDev (
492 IN PFILE_OBJECT FileObject,
493 IN PMDL MdlChain,
494 IN PDEVICE_OBJECT DeviceObject
495 );
496 BOOLEAN
497 STDCALL
498 FsRtlMdlReadDev (
499 IN PFILE_OBJECT FileObject,
500 IN PLARGE_INTEGER FileOffset,
501 IN ULONG Length,
502 IN ULONG LockKey,
503 OUT PMDL *MdlChain,
504 OUT PIO_STATUS_BLOCK IoStatus,
505 IN PDEVICE_OBJECT DeviceObject
506 );
507 BOOLEAN
508 STDCALL
509 FsRtlMdlWriteComplete (
510 IN PFILE_OBJECT FileObject,
511 IN PLARGE_INTEGER FileOffset,
512 IN PMDL MdlChain
513 );
514 BOOLEAN
515 STDCALL
516 FsRtlMdlWriteCompleteDev (
517 IN PFILE_OBJECT FileObject,
518 IN PLARGE_INTEGER FileOffset,
519 IN PMDL MdlChain,
520 IN PDEVICE_OBJECT DeviceObject
521 );
522 VOID
523 STDCALL
524 FsRtlNotifyChangeDirectory (
525 IN PNOTIFY_SYNC NotifySync,
526 IN PVOID FsContext,
527 IN PSTRING FullDirectoryName,
528 IN PLIST_ENTRY NotifyList,
529 IN BOOLEAN WatchTree,
530 IN ULONG CompletionFilter,
531 IN PIRP NotifyIrp
532 );
533 VOID
534 STDCALL
535 FsRtlNotifyCleanup (
536 IN PNOTIFY_SYNC NotifySync,
537 IN PLIST_ENTRY NotifyList,
538 IN PVOID FsContext
539 );
540 typedef
541 BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) (
542 IN PVOID NotifyContext,
543 IN PVOID TargetContext,
544 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
545 );
546
547 VOID
548 STDCALL
549 FsRtlNotifyFilterChangeDirectory (
550 IN PNOTIFY_SYNC NotifySync,
551 IN PLIST_ENTRY NotifyList,
552 IN PVOID FsContext,
553 IN PSTRING FullDirectoryName,
554 IN BOOLEAN WatchTree,
555 IN BOOLEAN IgnoreBuffer,
556 IN ULONG CompletionFilter,
557 IN PIRP NotifyIrp,
558 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
559 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL,
560 IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL
561 );
562
563 VOID
564 STDCALL
565 FsRtlNotifyFilterReportChange (
566 IN PNOTIFY_SYNC NotifySync,
567 IN PLIST_ENTRY NotifyList,
568 IN PSTRING FullTargetName,
569 IN USHORT TargetNameOffset,
570 IN PSTRING StreamName OPTIONAL,
571 IN PSTRING NormalizedParentName OPTIONAL,
572 IN ULONG FilterMatch,
573 IN ULONG Action,
574 IN PVOID TargetContext,
575 IN PVOID FilterContext
576 );
577 VOID
578 STDCALL
579 FsRtlNotifyFullChangeDirectory (
580 IN PNOTIFY_SYNC NotifySync,
581 IN PLIST_ENTRY NotifyList,
582 IN PVOID FsContext,
583 IN PSTRING FullDirectoryName,
584 IN BOOLEAN WatchTree,
585 IN BOOLEAN IgnoreBuffer,
586 IN ULONG CompletionFilter,
587 IN PIRP NotifyIrp,
588 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
589 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
590 );
591 VOID
592 STDCALL
593 FsRtlNotifyFullReportChange (
594 IN PNOTIFY_SYNC NotifySync,
595 IN PLIST_ENTRY NotifyList,
596 IN PSTRING FullTargetName,
597 IN USHORT TargetNameOffset,
598 IN PSTRING StreamName OPTIONAL,
599 IN PSTRING NormalizedParentName OPTIONAL,
600 IN ULONG FilterMatch,
601 IN ULONG Action,
602 IN PVOID TargetContext
603 );
604 VOID
605 STDCALL
606 FsRtlNotifyUninitializeSync (
607 IN OUT PNOTIFY_SYNC NotifySync
608 );
609 VOID
610 STDCALL
611 FsRtlNotifyReportChange (
612 IN PNOTIFY_SYNC NotifySync,
613 IN PLIST_ENTRY NotifyList,
614 IN PSTRING FullTargetName,
615 IN PUSHORT FileNamePartLength,
616 IN ULONG FilterMatch
617 );
618
619 VOID STDCALL
620 FsRtlNotifyInitializeSync(IN OUT PNOTIFY_SYNC *NotifySync);
621
622 NTSTATUS STDCALL
623 FsRtlNotifyVolumeEvent(IN PFILE_OBJECT FileObject,
624 IN ULONG EventCode);
625
626 NTSTATUS STDCALL
627 FsRtlOplockFsctrl(IN POPLOCK Oplock,
628 IN PIRP Irp,
629 IN ULONG OpenCount);
630
631 BOOLEAN STDCALL
632 FsRtlOplockIsFastIoPossible(IN POPLOCK Oplock);
633
634 BOOLEAN
635 STDCALL
636 FsRtlPrepareMdlWrite (
637 IN PFILE_OBJECT FileObject,
638 IN PLARGE_INTEGER FileOffset,
639 IN ULONG Length,
640 IN ULONG LockKey,
641 OUT PMDL *MdlChain,
642 OUT PIO_STATUS_BLOCK IoStatus
643 );
644
645 BOOLEAN
646 STDCALL
647 FsRtlPrepareMdlWriteDev (
648 IN PFILE_OBJECT FileObject,
649 IN PLARGE_INTEGER FileOffset,
650 IN ULONG Length,
651 IN ULONG LockKey,
652 OUT PMDL *MdlChain,
653 OUT PIO_STATUS_BLOCK IoStatus,
654 IN PDEVICE_OBJECT DeviceObject
655 );
656
657 NTSTATUS STDCALL
658 FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize,
659 IN NTSTATUS NormalizedNtStatus);
660
661 ULONG STDCALL
662 FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb);
663
664 ULONG STDCALL
665 FsRtlNumberOfRunsInMcb (IN PMCB Mcb);
666
667 VOID
668 STDCALL
669 FsRtlPostPagingFileStackOverflow(IN PVOID Context,
670 IN PKEVENT Event,
671 IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine) ;
672
673 VOID
674 STDCALL
675 FsRtlPostStackOverflow (IN PVOID Context,
676 IN PKEVENT Event,
677 IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine) ;
678
679 BOOLEAN
680 STDCALL
681 FsRtlPrivateLock (
682 IN PFILE_LOCK FileLock,
683 IN PFILE_OBJECT FileObject,
684 IN PLARGE_INTEGER FileOffset,
685 IN PLARGE_INTEGER Length,
686 IN PEPROCESS Process,
687 IN ULONG Key,
688 IN BOOLEAN FailImmediately,
689 IN BOOLEAN ExclusiveLock,
690 OUT PIO_STATUS_BLOCK IoStatus,
691 IN PIRP Irp OPTIONAL,
692 IN PVOID Context,
693 IN BOOLEAN AlreadySynchronized
694 );
695
696 NTSTATUS
697 STDCALL
698 FsRtlProcessFileLock (
699 IN PFILE_LOCK FileLock,
700 IN PIRP Irp,
701 IN PVOID Context OPTIONAL
702 );
703
704 NTSTATUS
705 STDCALL
706 FsRtlRegisterFileSystemFilterCallbacks(IN PDRIVER_OBJECT FilterDriverObject,
707 IN PFS_FILTER_CALLBACKS Callbacks);
708
709 NTSTATUS STDCALL
710 FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
711 IN PUNICODE_STRING RedirectorDeviceName,
712 IN BOOLEAN MailslotsSupported);
713
714 VOID
715 STDCALL
716 FsRtlReleaseFile (
717 IN PFILE_OBJECT FileObject
718 );
719
720 VOID STDCALL
721 FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
722 IN LONGLONG Vbn,
723 IN LONGLONG SectorCount);
724
725 VOID STDCALL
726 FsRtlRemoveMcbEntry (IN PMCB Mcb,
727 IN VBN Vbn,
728 IN ULONG SectorCount);
729
730 PFSRTL_PER_STREAM_CONTEXT
731 STDCALL
732 FsRtlRemovePerStreamContext (
733 IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
734 IN PVOID OwnerId OPTIONAL,
735 IN PVOID InstanceId OPTIONAL
736 );
737
738 PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
739 STDCALL
740 FsRtlRemovePerFileObjectContext (
741 IN PFSRTL_ADVANCED_FCB_HEADER PerFileObjectContext,
742 IN PVOID OwnerId OPTIONAL,
743 IN PVOID InstanceId OPTIONAL
744 );
745
746 VOID
747 STDCALL
748 FsRtlResetLargeMcb (
749 IN PLARGE_MCB Mcb,
750 IN BOOLEAN SelfSynchronized
751 );
752
753 BOOLEAN STDCALL
754 FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb,
755 IN LONGLONG Vbn,
756 IN LONGLONG Amount);
757
758 NTSTATUS
759 STDCALL
760 FsRtlSyncVolumes (
761 ULONG Unknown0,
762 ULONG Unknown1,
763 ULONG Unknown2
764 );
765
766 VOID
767 STDCALL
768 FsRtlTeardownPerStreamContexts (
769 IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader
770 );
771
772 VOID STDCALL
773 FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
774 IN LONGLONG Vbn);
775
776 VOID STDCALL
777 FsRtlTruncateMcb (IN PMCB Mcb,
778 IN VBN Vbn);
779
780 VOID STDCALL
781 FsRtlUninitializeFileLock (IN PFILE_LOCK FileLock);
782
783 VOID STDCALL
784 FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb);
785
786 VOID STDCALL
787 FsRtlUninitializeMcb (IN PMCB Mcb);
788
789 VOID STDCALL
790 FsRtlUninitializeOplock(IN POPLOCK Oplock);
791
792 #endif /* __INCLUDE_DDK_FSFUNCS_H */