1 #ifndef __INCLUDE_DDK_FSFUNCS_H
2 #define __INCLUDE_DDK_FSFUNCS_H
4 #define FlagOn(x,f) ((x) & (f))
14 FsRtlAllocateFileLock (
15 IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
16 IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
19 #define FsRtlAreThereCurrentFileLocks(FL) (((FL)->FastIoIsQuestionable))
22 FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb,
25 IN LONGLONG SectorCount);
36 FsRtlAddToTunnelCache (
38 IN ULONGLONG DirectoryKey,
39 IN PUNICODE_STRING ShortName,
40 IN PUNICODE_STRING LongName,
41 IN BOOLEAN KeyByShortName,
48 IN POOL_TYPE PoolType,
49 IN ULONG NumberOfBytes
53 FsRtlAllocatePoolWithQuota (
54 IN POOL_TYPE PoolType,
55 IN ULONG NumberOfBytes
59 FsRtlAllocatePoolWithQuotaTag (
60 IN POOL_TYPE PoolType,
61 IN ULONG NumberOfBytes,
66 FsRtlAllocatePoolWithTag (
67 IN POOL_TYPE PoolType,
68 IN ULONG NumberOfBytes,
73 FsRtlAllocateResource (
79 IN PUNICODE_STRING Name1,
80 IN PUNICODE_STRING Name2,
81 IN BOOLEAN IgnoreCase,
82 IN PWCHAR UpcaseTable OPTIONAL
91 FsRtlCheckLockForReadAccess (
92 IN PFILE_LOCK FileLock,
97 FsRtlCheckLockForWriteAccess (
98 IN PFILE_LOCK FileLock,
103 FsRtlCheckOplock(IN POPLOCK Oplock,
106 IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
107 IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
112 IN PFILE_OBJECT FileObject,
113 IN PLARGE_INTEGER FileOffset,
118 OUT PIO_STATUS_BLOCK IoStatus,
119 IN PDEVICE_OBJECT DeviceObject
124 IN PFILE_OBJECT FileObject,
125 IN PLARGE_INTEGER FileOffset,
130 OUT PIO_STATUS_BLOCK IoStatus,
131 IN PDEVICE_OBJECT DeviceObject
135 FsRtlCurrentBatchOplock(IN POPLOCK Oplock);
138 FsRtlDeleteKeyFromTunnelCache(IN PTUNNEL Cache,
139 IN ULONGLONG DirectoryKey);
142 FsRtlDeleteTunnelCache(IN PTUNNEL Cache);
145 FsRtlDeregisterUncProvider(IN HANDLE Handle);
165 FsRtlDoesDbcsContainWildCards (
170 FsRtlDoesNameContainWildCards (
171 IN PUNICODE_STRING Name
175 FsRtlFastCheckLockForRead (
176 IN PFILE_LOCK FileLock,
177 IN PLARGE_INTEGER FileOffset,
178 IN PLARGE_INTEGER Length,
180 IN PFILE_OBJECT FileObject,
185 FsRtlFastCheckLockForWrite (
186 IN PFILE_LOCK FileLock,
187 IN PLARGE_INTEGER FileOffset,
188 IN PLARGE_INTEGER Length,
190 IN PFILE_OBJECT FileObject,
196 IN PFILE_LOCK FileLock,
197 IN PFILE_OBJECT FileObject,
198 IN PEPROCESS Process,
199 IN PVOID Context OPTIONAL
203 FsRtlFastUnlockAllByKey (
204 IN PFILE_LOCK FileLock,
205 IN PFILE_OBJECT FileObject,
206 IN PEPROCESS Process,
208 IN PVOID Context OPTIONAL
212 FsRtlFastUnlockSingle (
213 IN PFILE_LOCK FileLock,
214 IN PFILE_OBJECT FileObject,
215 IN PLARGE_INTEGER FileOffset,
216 IN PLARGE_INTEGER Length,
217 IN PEPROCESS Process,
219 IN PVOID Context OPTIONAL,
220 IN BOOLEAN AlreadySynchronized
224 FsRtlFindInTunnelCache (
226 IN ULONGLONG DirectoryKey,
227 IN PUNICODE_STRING Name,
228 OUT PUNICODE_STRING ShortName,
229 OUT PUNICODE_STRING LongName,
230 IN OUT PULONG DataLength,
236 IN PFILE_OBJECT FileObject,
237 IN OUT PLARGE_INTEGER FileSize
241 FsRtlGetNextFileLock (
242 IN PFILE_LOCK FileLock,
247 FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
251 OUT PLONGLONG SectorCount);
255 FsRtlGetNextMcbEntry (
262 #define FsRtlEnterFileSystem KeEnterCriticalRegion
263 #define FsRtlExitFileSystem KeLeaveCriticalRegion
266 FsRtlInitializeFileLock (
267 IN PFILE_LOCK FileLock,
268 IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
269 IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
273 FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb,
274 IN POOL_TYPE PoolType);
284 FsRtlInitializeOplock(IN OUT POPLOCK Oplock);
288 FsRtlInitializeTunnelCache (
293 FsRtlIsDbcsInExpression (
299 FsRtlIsFatDbcsLegal (
308 FsRtlIsHpfsDbcsLegal (
317 FsRtlIsNameInExpression (
318 IN PUNICODE_STRING Expression,
319 IN PUNICODE_STRING Name,
320 IN BOOLEAN IgnoreCase,
321 IN PWCHAR UpcaseTable OPTIONAL
325 FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus);
328 FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus);
330 #define FsRtlIsUnicodeCharacterWild(C) ( \
333 FlagOn((*FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \
337 FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
339 OUT PLONGLONG Lbn OPTIONAL,
340 OUT PLONGLONG SectorCountFromLbn OPTIONAL,
341 OUT PLONGLONG StartingLbn OPTIONAL,
342 OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
343 OUT PULONG Index OPTIONAL);
346 FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
352 FsRtlLookupLastMcbEntry (
359 FsRtlLookupMcbEntry (
369 IN PFILE_OBJECT FileObject,
370 IN PLARGE_INTEGER FileOffset,
374 OUT PIO_STATUS_BLOCK IoStatus
378 FsRtlMdlReadComplete (
379 IN PFILE_OBJECT FileObject,
384 FsRtlMdlReadCompleteDev (
385 IN PFILE_OBJECT FileObject,
387 IN PDEVICE_OBJECT DeviceObject
392 IN PFILE_OBJECT FileObject,
393 IN PLARGE_INTEGER FileOffset,
397 OUT PIO_STATUS_BLOCK IoStatus,
398 IN PDEVICE_OBJECT DeviceObject
402 FsRtlMdlWriteComplete (
403 IN PFILE_OBJECT FileObject,
404 IN PLARGE_INTEGER FileOffset,
409 FsRtlMdlWriteCompleteDev (
410 IN PFILE_OBJECT FileObject,
411 IN PLARGE_INTEGER FileOffset,
413 IN PDEVICE_OBJECT DeviceObject
417 FsRtlNotifyChangeDirectory (
418 IN PNOTIFY_SYNC NotifySync,
420 IN PSTRING FullDirectoryName,
421 IN PLIST_ENTRY NotifyList,
422 IN BOOLEAN WatchTree,
423 IN ULONG CompletionFilter,
429 IN PNOTIFY_SYNC NotifySync,
430 IN PLIST_ENTRY NotifyList,
434 BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) (
435 IN PVOID NotifyContext,
436 IN PVOID TargetContext,
437 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
441 FsRtlNotifyFullChangeDirectory (
442 IN PNOTIFY_SYNC NotifySync,
443 IN PLIST_ENTRY NotifyList,
445 IN PSTRING FullDirectoryName,
446 IN BOOLEAN WatchTree,
447 IN BOOLEAN IgnoreBuffer,
448 IN ULONG CompletionFilter,
450 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
451 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
455 FsRtlNotifyFullReportChange (
456 IN PNOTIFY_SYNC NotifySync,
457 IN PLIST_ENTRY NotifyList,
458 IN PSTRING FullTargetName,
459 IN USHORT TargetNameOffset,
460 IN PSTRING StreamName OPTIONAL,
461 IN PSTRING NormalizedParentName OPTIONAL,
462 IN ULONG FilterMatch,
464 IN PVOID TargetContext
468 FsRtlNotifyUninitializeSync (
469 IN OUT PNOTIFY_SYNC * NotifySync
473 FsRtlNotifyReportChange (
474 IN PNOTIFY_SYNC NotifySync,
475 IN PLIST_ENTRY NotifyList,
476 IN PSTRING FullTargetName,
477 IN PUSHORT FileNamePartLength,
482 FsRtlNotifyInitializeSync(IN OUT PNOTIFY_SYNC *NotifySync);
485 FsRtlNotifyVolumeEvent(IN PFILE_OBJECT FileObject,
489 FsRtlOplockFsctrl(IN POPLOCK Oplock,
494 FsRtlOplockIsFastIoPossible(IN POPLOCK Oplock);
498 FsRtlPrepareMdlWrite (
499 IN PFILE_OBJECT FileObject,
500 IN PLARGE_INTEGER FileOffset,
504 OUT PIO_STATUS_BLOCK IoStatus
508 FsRtlPrepareMdlWriteDev (
509 IN PFILE_OBJECT FileObject,
510 IN PLARGE_INTEGER FileOffset,
514 OUT PIO_STATUS_BLOCK IoStatus,
515 IN PDEVICE_OBJECT DeviceObject
519 FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize,
520 IN NTSTATUS NormalizedNtStatus);
523 FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb);
527 FsRtlNumberOfRunsInMcb (
532 FsRtlPostPagingFileStackOverflow (
539 FsRtlPostStackOverflow (
547 IN PFILE_LOCK FileLock,
548 IN PFILE_OBJECT FileObject,
549 IN PLARGE_INTEGER FileOffset,
550 IN PLARGE_INTEGER Length,
551 IN PEPROCESS Process,
553 IN BOOLEAN FailImmediately,
554 IN BOOLEAN ExclusiveLock,
555 OUT PIO_STATUS_BLOCK IoStatus,
556 IN PIRP Irp OPTIONAL,
558 IN BOOLEAN AlreadySynchronized
562 FsRtlProcessFileLock (
563 IN PFILE_LOCK FileLock,
565 IN PVOID Context OPTIONAL
569 FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
570 IN PUNICODE_STRING RedirectorDeviceName,
571 IN BOOLEAN MailslotsSupported);
574 FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
576 IN LONGLONG SectorCount);
580 FsRtlRemoveMcbEntry (
587 FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb,
600 FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
611 FsRtlUninitializeFileLock (
612 IN PFILE_LOCK FileLock
616 FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb);
620 FsRtlUninitializeMcb (
625 FsRtlUninitializeOplock(IN POPLOCK Oplock);
627 #endif /* __INCLUDE_DDK_FSFUNCS_H */