1 #ifndef __INCLUDE_DDK_FSFUNCS_H
2 #define __INCLUDE_DDK_FSFUNCS_H
4 #define FlagOn(x,f) ((x) & (f))
7 FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb,
10 IN LONGLONG SectorCount);
21 FsRtlAddToTunnelCache (
23 IN ULONGLONG DirectoryKey,
24 IN PUNICODE_STRING ShortName,
25 IN PUNICODE_STRING LongName,
26 IN BOOLEAN KeyByShortName,
33 IN POOL_TYPE PoolType,
34 IN ULONG NumberOfBytes
38 FsRtlAllocatePoolWithQuota (
39 IN POOL_TYPE PoolType,
40 IN ULONG NumberOfBytes
44 FsRtlAllocatePoolWithQuotaTag (
45 IN POOL_TYPE PoolType,
46 IN ULONG NumberOfBytes,
51 FsRtlAllocatePoolWithTag (
52 IN POOL_TYPE PoolType,
53 IN ULONG NumberOfBytes,
58 FsRtlAllocateResource (
64 IN PUNICODE_STRING Name1,
65 IN PUNICODE_STRING Name2,
66 IN BOOLEAN IgnoreCase,
67 IN PWCHAR UpcaseTable OPTIONAL
76 FsRtlCheckLockForReadAccess (
77 IN PFILE_LOCK FileLock,
82 FsRtlCheckLockForWriteAccess (
83 IN PFILE_LOCK FileLock,
88 FsRtlCheckOplock(IN POPLOCK Oplock,
91 IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
92 IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
97 IN PFILE_OBJECT FileObject,
98 IN PLARGE_INTEGER FileOffset,
103 OUT PIO_STATUS_BLOCK IoStatus,
104 IN PDEVICE_OBJECT DeviceObject
109 IN PFILE_OBJECT FileObject,
110 IN PLARGE_INTEGER FileOffset,
115 OUT PIO_STATUS_BLOCK IoStatus,
116 IN PDEVICE_OBJECT DeviceObject
120 FsRtlCurrentBatchOplock(IN POPLOCK Oplock);
123 FsRtlDeleteKeyFromTunnelCache(IN PTUNNEL Cache,
124 IN ULONGLONG DirectoryKey);
127 FsRtlDeleteTunnelCache(IN PTUNNEL Cache);
130 FsRtlDeregisterUncProvider(IN HANDLE Handle);
150 FsRtlDoesDbcsContainWildCards (
155 FsRtlDoesNameContainWildCards (
156 IN PUNICODE_STRING Name
160 FsRtlFastCheckLockForRead (
161 IN PFILE_LOCK FileLock,
162 IN PLARGE_INTEGER FileOffset,
163 IN PLARGE_INTEGER Length,
165 IN PFILE_OBJECT FileObject,
170 FsRtlFastCheckLockForWrite (
171 IN PFILE_LOCK FileLock,
172 IN PLARGE_INTEGER FileOffset,
173 IN PLARGE_INTEGER Length,
175 IN PFILE_OBJECT FileObject,
181 IN PFILE_LOCK FileLock,
182 IN PFILE_OBJECT FileObject,
183 IN PEPROCESS Process,
184 IN PVOID Context OPTIONAL
188 FsRtlFastUnlockAllByKey (
189 IN PFILE_LOCK FileLock,
190 IN PFILE_OBJECT FileObject,
191 IN PEPROCESS Process,
193 IN PVOID Context OPTIONAL
197 FsRtlFastUnlockSingle (
198 IN PFILE_LOCK FileLock,
199 IN PFILE_OBJECT FileObject,
200 IN PLARGE_INTEGER FileOffset,
201 IN PLARGE_INTEGER Length,
202 IN PEPROCESS Process,
204 IN PVOID Context OPTIONAL,
205 IN BOOLEAN AlreadySynchronized
209 FsRtlFindInTunnelCache (
211 IN ULONGLONG DirectoryKey,
212 IN PUNICODE_STRING Name,
213 OUT PUNICODE_STRING ShortName,
214 OUT PUNICODE_STRING LongName,
215 IN OUT PULONG DataLength,
221 IN PFILE_OBJECT FileObject,
222 IN OUT PLARGE_INTEGER FileSize
226 FsRtlGetNextFileLock (
227 IN PFILE_LOCK FileLock,
232 FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
236 OUT PLONGLONG SectorCount);
240 FsRtlGetNextMcbEntry (
247 #define FsRtlEnterFileSystem KeEnterCriticalRegion
248 #define FsRtlExitFileSystem KeLeaveCriticalRegion
251 FsRtlInitializeFileLock (
252 IN PFILE_LOCK FileLock,
253 IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
254 IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
258 FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb,
259 IN POOL_TYPE PoolType);
269 FsRtlInitializeOplock(IN OUT POPLOCK Oplock);
273 FsRtlInitializeTunnelCache (
278 FsRtlIsDbcsInExpression (
284 FsRtlIsFatDbcsLegal (
293 FsRtlIsHpfsDbcsLegal (
302 FsRtlIsNameInExpression (
303 IN PUNICODE_STRING Expression,
304 IN PUNICODE_STRING Name,
305 IN BOOLEAN IgnoreCase,
306 IN PWCHAR UpcaseTable OPTIONAL
310 FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus);
313 FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus);
315 #define FsRtlIsUnicodeCharacterWild(C) ( \
318 FlagOn((*FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \
322 FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
324 OUT PLONGLONG Lbn OPTIONAL,
325 OUT PLONGLONG SectorCountFromLbn OPTIONAL,
326 OUT PLONGLONG StartingLbn OPTIONAL,
327 OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
328 OUT PULONG Index OPTIONAL);
331 FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
337 FsRtlLookupLastMcbEntry (
344 FsRtlLookupMcbEntry (
354 IN PFILE_OBJECT FileObject,
355 IN PLARGE_INTEGER FileOffset,
359 OUT PIO_STATUS_BLOCK IoStatus
363 FsRtlMdlReadComplete (
364 IN PFILE_OBJECT FileObject,
369 FsRtlMdlReadCompleteDev (
370 IN PFILE_OBJECT FileObject,
372 IN PDEVICE_OBJECT DeviceObject
377 IN PFILE_OBJECT FileObject,
378 IN PLARGE_INTEGER FileOffset,
382 OUT PIO_STATUS_BLOCK IoStatus,
383 IN PDEVICE_OBJECT DeviceObject
387 FsRtlMdlWriteComplete (
388 IN PFILE_OBJECT FileObject,
389 IN PLARGE_INTEGER FileOffset,
394 FsRtlMdlWriteCompleteDev (
395 IN PFILE_OBJECT FileObject,
396 IN PLARGE_INTEGER FileOffset,
398 IN PDEVICE_OBJECT DeviceObject
402 FsRtlNotifyChangeDirectory (
403 IN PNOTIFY_SYNC NotifySync,
405 IN PSTRING FullDirectoryName,
406 IN PLIST_ENTRY NotifyList,
407 IN BOOLEAN WatchTree,
408 IN ULONG CompletionFilter,
414 IN PNOTIFY_SYNC NotifySync,
415 IN PLIST_ENTRY NotifyList,
419 BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) (
420 IN PVOID NotifyContext,
421 IN PVOID TargetContext,
422 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
426 FsRtlNotifyFullChangeDirectory (
427 IN PNOTIFY_SYNC NotifySync,
428 IN PLIST_ENTRY NotifyList,
430 IN PSTRING FullDirectoryName,
431 IN BOOLEAN WatchTree,
432 IN BOOLEAN IgnoreBuffer,
433 IN ULONG CompletionFilter,
435 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
436 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
440 FsRtlNotifyFullReportChange (
441 IN PNOTIFY_SYNC NotifySync,
442 IN PLIST_ENTRY NotifyList,
443 IN PSTRING FullTargetName,
444 IN USHORT TargetNameOffset,
445 IN PSTRING StreamName OPTIONAL,
446 IN PSTRING NormalizedParentName OPTIONAL,
447 IN ULONG FilterMatch,
449 IN PVOID TargetContext
453 FsRtlNotifyUninitializeSync (
454 IN OUT PNOTIFY_SYNC * NotifySync
458 FsRtlNotifyReportChange (
459 IN PNOTIFY_SYNC NotifySync,
460 IN PLIST_ENTRY NotifyList,
461 IN PSTRING FullTargetName,
462 IN PUSHORT FileNamePartLength,
467 FsRtlNotifyInitializeSync(IN OUT PNOTIFY_SYNC *NotifySync);
470 FsRtlNotifyVolumeEvent(IN PFILE_OBJECT FileObject,
474 FsRtlOplockFsctrl(IN POPLOCK Oplock,
479 FsRtlOplockIsFastIoPossible(IN POPLOCK Oplock);
483 FsRtlPrepareMdlWrite (
484 IN PFILE_OBJECT FileObject,
485 IN PLARGE_INTEGER FileOffset,
489 OUT PIO_STATUS_BLOCK IoStatus
493 FsRtlPrepareMdlWriteDev (
494 IN PFILE_OBJECT FileObject,
495 IN PLARGE_INTEGER FileOffset,
499 OUT PIO_STATUS_BLOCK IoStatus,
500 IN PDEVICE_OBJECT DeviceObject
504 FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize,
505 IN NTSTATUS NormalizedNtStatus);
508 FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb);
512 FsRtlNumberOfRunsInMcb (
517 FsRtlPostPagingFileStackOverflow (
524 FsRtlPostStackOverflow (
532 IN PFILE_LOCK FileLock,
533 IN PFILE_OBJECT FileObject,
534 IN PLARGE_INTEGER FileOffset,
535 IN PLARGE_INTEGER Length,
536 IN PEPROCESS Process,
538 IN BOOLEAN FailImmediately,
539 IN BOOLEAN ExclusiveLock,
540 OUT PIO_STATUS_BLOCK IoStatus,
541 IN PIRP Irp OPTIONAL,
543 IN BOOLEAN AlreadySynchronized
547 FsRtlProcessFileLock (
548 IN PFILE_LOCK FileLock,
550 IN PVOID Context OPTIONAL
554 FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
555 IN PUNICODE_STRING RedirectorDeviceName,
556 IN BOOLEAN MailslotsSupported);
559 FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
561 IN LONGLONG SectorCount);
565 FsRtlRemoveMcbEntry (
572 FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb,
585 FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
596 FsRtlUninitializeFileLock (
597 IN PFILE_LOCK FileLock
601 FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb);
605 FsRtlUninitializeMcb (
610 FsRtlUninitializeOplock(IN POPLOCK Oplock);
612 #endif /* __INCLUDE_DDK_FSFUNCS_H */