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 (
300 IN ANSI_STRING DbcsName,
301 IN BOOLEAN WildCardsPermissible,
302 IN BOOLEAN PathNamePermissible,
303 IN BOOLEAN LeadingBackslashPermissible
307 FsRtlIsHpfsDbcsLegal (
316 FsRtlIsNameInExpression (
317 IN PUNICODE_STRING Expression,
318 IN PUNICODE_STRING Name,
319 IN BOOLEAN IgnoreCase,
320 IN PWCHAR UpcaseTable OPTIONAL
324 FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus);
327 FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus);
329 #define FsRtlIsUnicodeCharacterWild(C) ( \
332 FlagOn((*FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \
336 FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
338 OUT PLONGLONG Lbn OPTIONAL,
339 OUT PLONGLONG SectorCountFromLbn OPTIONAL,
340 OUT PLONGLONG StartingLbn OPTIONAL,
341 OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
342 OUT PULONG Index OPTIONAL);
345 FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
351 FsRtlLookupLastMcbEntry (
358 FsRtlLookupMcbEntry (
368 IN PFILE_OBJECT FileObject,
369 IN PLARGE_INTEGER FileOffset,
373 OUT PIO_STATUS_BLOCK IoStatus
377 FsRtlMdlReadComplete (
378 IN PFILE_OBJECT FileObject,
383 FsRtlMdlReadCompleteDev (
384 IN PFILE_OBJECT FileObject,
386 IN PDEVICE_OBJECT DeviceObject
391 IN PFILE_OBJECT FileObject,
392 IN PLARGE_INTEGER FileOffset,
396 OUT PIO_STATUS_BLOCK IoStatus,
397 IN PDEVICE_OBJECT DeviceObject
401 FsRtlMdlWriteComplete (
402 IN PFILE_OBJECT FileObject,
403 IN PLARGE_INTEGER FileOffset,
408 FsRtlMdlWriteCompleteDev (
409 IN PFILE_OBJECT FileObject,
410 IN PLARGE_INTEGER FileOffset,
412 IN PDEVICE_OBJECT DeviceObject
416 FsRtlNotifyChangeDirectory (
417 IN PNOTIFY_SYNC NotifySync,
419 IN PSTRING FullDirectoryName,
420 IN PLIST_ENTRY NotifyList,
421 IN BOOLEAN WatchTree,
422 IN ULONG CompletionFilter,
428 IN PNOTIFY_SYNC NotifySync,
429 IN PLIST_ENTRY NotifyList,
433 BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) (
434 IN PVOID NotifyContext,
435 IN PVOID TargetContext,
436 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
440 FsRtlNotifyFullChangeDirectory (
441 IN PNOTIFY_SYNC NotifySync,
442 IN PLIST_ENTRY NotifyList,
444 IN PSTRING FullDirectoryName,
445 IN BOOLEAN WatchTree,
446 IN BOOLEAN IgnoreBuffer,
447 IN ULONG CompletionFilter,
449 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
450 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
454 FsRtlNotifyFullReportChange (
455 IN PNOTIFY_SYNC NotifySync,
456 IN PLIST_ENTRY NotifyList,
457 IN PSTRING FullTargetName,
458 IN USHORT TargetNameOffset,
459 IN PSTRING StreamName OPTIONAL,
460 IN PSTRING NormalizedParentName OPTIONAL,
461 IN ULONG FilterMatch,
463 IN PVOID TargetContext
467 FsRtlNotifyUninitializeSync (
468 IN OUT PNOTIFY_SYNC * NotifySync
472 FsRtlNotifyReportChange (
473 IN PNOTIFY_SYNC NotifySync,
474 IN PLIST_ENTRY NotifyList,
475 IN PSTRING FullTargetName,
476 IN PUSHORT FileNamePartLength,
481 FsRtlNotifyInitializeSync(IN OUT PNOTIFY_SYNC *NotifySync);
484 FsRtlNotifyVolumeEvent(IN PFILE_OBJECT FileObject,
488 FsRtlOplockFsctrl(IN POPLOCK Oplock,
493 FsRtlOplockIsFastIoPossible(IN POPLOCK Oplock);
497 FsRtlPrepareMdlWrite (
498 IN PFILE_OBJECT FileObject,
499 IN PLARGE_INTEGER FileOffset,
503 OUT PIO_STATUS_BLOCK IoStatus
507 FsRtlPrepareMdlWriteDev (
508 IN PFILE_OBJECT FileObject,
509 IN PLARGE_INTEGER FileOffset,
513 OUT PIO_STATUS_BLOCK IoStatus,
514 IN PDEVICE_OBJECT DeviceObject
518 FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize,
519 IN NTSTATUS NormalizedNtStatus);
522 FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb);
526 FsRtlNumberOfRunsInMcb (
531 FsRtlPostPagingFileStackOverflow (
538 FsRtlPostStackOverflow (
546 IN PFILE_LOCK FileLock,
547 IN PFILE_OBJECT FileObject,
548 IN PLARGE_INTEGER FileOffset,
549 IN PLARGE_INTEGER Length,
550 IN PEPROCESS Process,
552 IN BOOLEAN FailImmediately,
553 IN BOOLEAN ExclusiveLock,
554 OUT PIO_STATUS_BLOCK IoStatus,
555 IN PIRP Irp OPTIONAL,
557 IN BOOLEAN AlreadySynchronized
561 FsRtlProcessFileLock (
562 IN PFILE_LOCK FileLock,
564 IN PVOID Context OPTIONAL
568 FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
569 IN PUNICODE_STRING RedirectorDeviceName,
570 IN BOOLEAN MailslotsSupported);
573 FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
575 IN LONGLONG SectorCount);
579 FsRtlRemoveMcbEntry (
586 FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb,
599 FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
610 FsRtlUninitializeFileLock (
611 IN PFILE_LOCK FileLock
615 FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb);
619 FsRtlUninitializeMcb (
624 FsRtlUninitializeOplock(IN POPLOCK Oplock);
626 #endif /* __INCLUDE_DDK_FSFUNCS_H */