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);
28 FsRtlAddMcbEntry (IN PMCB Mcb,
31 IN ULONG SectorCount);
34 FsRtlAddToTunnelCache (
36 IN ULONGLONG DirectoryKey,
37 IN PUNICODE_STRING ShortName,
38 IN PUNICODE_STRING LongName,
39 IN BOOLEAN KeyByShortName,
46 IN POOL_TYPE PoolType,
47 IN ULONG NumberOfBytes
51 FsRtlAllocatePoolWithQuota (
52 IN POOL_TYPE PoolType,
53 IN ULONG NumberOfBytes
57 FsRtlAllocatePoolWithQuotaTag (
58 IN POOL_TYPE PoolType,
59 IN ULONG NumberOfBytes,
64 FsRtlAllocatePoolWithTag (
65 IN POOL_TYPE PoolType,
66 IN ULONG NumberOfBytes,
71 FsRtlAllocateResource (
77 IN PUNICODE_STRING Name1,
78 IN PUNICODE_STRING Name2,
79 IN BOOLEAN IgnoreCase,
80 IN PWCHAR UpcaseTable OPTIONAL
89 FsRtlCheckLockForReadAccess (
90 IN PFILE_LOCK FileLock,
95 FsRtlCheckLockForWriteAccess (
96 IN PFILE_LOCK FileLock,
101 FsRtlCheckOplock(IN POPLOCK Oplock,
104 IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
105 IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
110 IN PFILE_OBJECT FileObject,
111 IN PLARGE_INTEGER FileOffset,
116 OUT PIO_STATUS_BLOCK IoStatus,
117 IN PDEVICE_OBJECT DeviceObject
122 IN PFILE_OBJECT FileObject,
123 IN PLARGE_INTEGER FileOffset,
128 OUT PIO_STATUS_BLOCK IoStatus,
129 IN PDEVICE_OBJECT DeviceObject
133 FsRtlCurrentBatchOplock(IN POPLOCK Oplock);
136 FsRtlDeleteKeyFromTunnelCache(IN PTUNNEL Cache,
137 IN ULONGLONG DirectoryKey);
140 FsRtlDeleteTunnelCache(IN PTUNNEL Cache);
143 FsRtlDeregisterUncProvider(IN HANDLE Handle);
163 FsRtlDoesDbcsContainWildCards (
168 FsRtlDoesNameContainWildCards (
169 IN PUNICODE_STRING Name
173 FsRtlFastCheckLockForRead (
174 IN PFILE_LOCK FileLock,
175 IN PLARGE_INTEGER FileOffset,
176 IN PLARGE_INTEGER Length,
178 IN PFILE_OBJECT FileObject,
183 FsRtlFastCheckLockForWrite (
184 IN PFILE_LOCK FileLock,
185 IN PLARGE_INTEGER FileOffset,
186 IN PLARGE_INTEGER Length,
188 IN PFILE_OBJECT FileObject,
194 IN PFILE_LOCK FileLock,
195 IN PFILE_OBJECT FileObject,
196 IN PEPROCESS Process,
197 IN PVOID Context OPTIONAL
201 FsRtlFastUnlockAllByKey (
202 IN PFILE_LOCK FileLock,
203 IN PFILE_OBJECT FileObject,
204 IN PEPROCESS Process,
206 IN PVOID Context OPTIONAL
210 FsRtlFastUnlockSingle (
211 IN PFILE_LOCK FileLock,
212 IN PFILE_OBJECT FileObject,
213 IN PLARGE_INTEGER FileOffset,
214 IN PLARGE_INTEGER Length,
215 IN PEPROCESS Process,
217 IN PVOID Context OPTIONAL,
218 IN BOOLEAN AlreadySynchronized
222 FsRtlFindInTunnelCache (
224 IN ULONGLONG DirectoryKey,
225 IN PUNICODE_STRING Name,
226 OUT PUNICODE_STRING ShortName,
227 OUT PUNICODE_STRING LongName,
228 IN OUT PULONG DataLength,
234 IN PFILE_OBJECT FileObject,
235 IN OUT PLARGE_INTEGER FileSize
239 FsRtlGetNextFileLock (
240 IN PFILE_LOCK FileLock,
245 FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
249 OUT PLONGLONG SectorCount);
252 FsRtlGetNextMcbEntry (IN PMCB Mcb,
256 OUT PULONG SectorCount);
257 #define FsRtlEnterFileSystem KeEnterCriticalRegion
258 #define FsRtlExitFileSystem KeLeaveCriticalRegion
261 FsRtlInitializeFileLock (
262 IN PFILE_LOCK FileLock,
263 IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
264 IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
268 FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb,
269 IN POOL_TYPE PoolType);
272 FsRtlInitializeMcb (IN PMCB Mcb,
273 IN POOL_TYPE PoolType);
276 FsRtlInitializeOplock(IN OUT POPLOCK Oplock);
280 FsRtlInitializeTunnelCache (
285 FsRtlIsDbcsInExpression (
291 FsRtlIsFatDbcsLegal (
300 FsRtlIsHpfsDbcsLegal (
309 FsRtlIsNameInExpression (
310 IN PUNICODE_STRING Expression,
311 IN PUNICODE_STRING Name,
312 IN BOOLEAN IgnoreCase,
313 IN PWCHAR UpcaseTable OPTIONAL
317 FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus);
320 FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus);
322 #define FsRtlIsUnicodeCharacterWild(C) ( \
325 FlagOn((*FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \
329 FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
331 OUT PLONGLONG Lbn OPTIONAL,
332 OUT PLONGLONG SectorCountFromLbn OPTIONAL,
333 OUT PLONGLONG StartingLbn OPTIONAL,
334 OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
335 OUT PULONG Index OPTIONAL);
338 FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
343 FsRtlLookupLastMcbEntry (IN PMCB Mcb,
347 FsRtlLookupMcbEntry (IN PMCB Mcb,
350 OUT PULONG SectorCount OPTIONAL,
356 IN PFILE_OBJECT FileObject,
357 IN PLARGE_INTEGER FileOffset,
361 OUT PIO_STATUS_BLOCK IoStatus
365 FsRtlMdlReadComplete (
366 IN PFILE_OBJECT FileObject,
371 FsRtlMdlReadCompleteDev (
372 IN PFILE_OBJECT FileObject,
374 IN PDEVICE_OBJECT DeviceObject
379 IN PFILE_OBJECT FileObject,
380 IN PLARGE_INTEGER FileOffset,
384 OUT PIO_STATUS_BLOCK IoStatus,
385 IN PDEVICE_OBJECT DeviceObject
389 FsRtlMdlWriteComplete (
390 IN PFILE_OBJECT FileObject,
391 IN PLARGE_INTEGER FileOffset,
396 FsRtlMdlWriteCompleteDev (
397 IN PFILE_OBJECT FileObject,
398 IN PLARGE_INTEGER FileOffset,
400 IN PDEVICE_OBJECT DeviceObject
404 FsRtlNotifyChangeDirectory (
405 IN PNOTIFY_SYNC NotifySync,
407 IN PSTRING FullDirectoryName,
408 IN PLIST_ENTRY NotifyList,
409 IN BOOLEAN WatchTree,
410 IN ULONG CompletionFilter,
416 IN PNOTIFY_SYNC NotifySync,
417 IN PLIST_ENTRY NotifyList,
421 BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) (
422 IN PVOID NotifyContext,
423 IN PVOID TargetContext,
424 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
428 FsRtlNotifyFullChangeDirectory (
429 IN PNOTIFY_SYNC NotifySync,
430 IN PLIST_ENTRY NotifyList,
432 IN PSTRING FullDirectoryName,
433 IN BOOLEAN WatchTree,
434 IN BOOLEAN IgnoreBuffer,
435 IN ULONG CompletionFilter,
437 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
438 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
442 FsRtlNotifyFullReportChange (
443 IN PNOTIFY_SYNC NotifySync,
444 IN PLIST_ENTRY NotifyList,
445 IN PSTRING FullTargetName,
446 IN USHORT TargetNameOffset,
447 IN PSTRING StreamName OPTIONAL,
448 IN PSTRING NormalizedParentName OPTIONAL,
449 IN ULONG FilterMatch,
451 IN PVOID TargetContext
455 FsRtlNotifyUninitializeSync (
456 IN OUT PNOTIFY_SYNC * NotifySync
460 FsRtlNotifyReportChange (
461 IN PNOTIFY_SYNC NotifySync,
462 IN PLIST_ENTRY NotifyList,
463 IN PSTRING FullTargetName,
464 IN PUSHORT FileNamePartLength,
469 FsRtlNotifyInitializeSync(IN OUT PNOTIFY_SYNC *NotifySync);
472 FsRtlNotifyVolumeEvent(IN PFILE_OBJECT FileObject,
476 FsRtlOplockFsctrl(IN POPLOCK Oplock,
481 FsRtlOplockIsFastIoPossible(IN POPLOCK Oplock);
485 FsRtlPrepareMdlWrite (
486 IN PFILE_OBJECT FileObject,
487 IN PLARGE_INTEGER FileOffset,
491 OUT PIO_STATUS_BLOCK IoStatus
495 FsRtlPrepareMdlWriteDev (
496 IN PFILE_OBJECT FileObject,
497 IN PLARGE_INTEGER FileOffset,
501 OUT PIO_STATUS_BLOCK IoStatus,
502 IN PDEVICE_OBJECT DeviceObject
506 FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize,
507 IN NTSTATUS NormalizedNtStatus);
510 FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb);
513 FsRtlNumberOfRunsInMcb (IN PMCB Mcb);
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);
564 FsRtlRemoveMcbEntry (IN PMCB Mcb,
566 IN ULONG SectorCount);
569 FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb,
582 FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
586 FsRtlTruncateMcb (IN PMCB Mcb,
590 FsRtlUninitializeFileLock (IN PFILE_LOCK FileLock);
593 FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb);
596 FsRtlUninitializeMcb (IN PMCB Mcb);
599 FsRtlUninitializeOplock(IN POPLOCK Oplock);
601 #endif /* __INCLUDE_DDK_FSFUNCS_H */