[ros-diffs] [akhaldi] 46194: [NTIFS] - Group some related definitions

akhaldi at svn.reactos.org akhaldi at svn.reactos.org
Sun Mar 14 00:23:24 CET 2010


Author: akhaldi
Date: Sun Mar 14 00:23:24 2010
New Revision: 46194

URL: http://svn.reactos.org/svn/reactos?rev=46194&view=rev
Log:
[NTIFS]
- Group some related definitions

Modified:
    branches/header-work/include/ddk/ntifs.h

Modified: branches/header-work/include/ddk/ntifs.h
URL: http://svn.reactos.org/svn/reactos/branches/header-work/include/ddk/ntifs.h?rev=46194&r1=46193&r2=46194&view=diff
==============================================================================
--- branches/header-work/include/ddk/ntifs.h [iso-8859-1] (original)
+++ branches/header-work/include/ddk/ntifs.h [iso-8859-1] Sun Mar 14 00:23:24 2010
@@ -6549,1369 +6549,6 @@
   LONG volatile LockRequestsInProgress;
 } FILE_LOCK, *PFILE_LOCK;
 
-#if (NTDDI_VERSION >= NTDDI_WIN2K)
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlCopyRead(
-  IN PFILE_OBJECT FileObject,
-  IN PLARGE_INTEGER FileOffset,
-  IN ULONG Length,
-  IN BOOLEAN Wait,
-  IN ULONG LockKey,
-  OUT PVOID Buffer,
-  OUT PIO_STATUS_BLOCK IoStatus,
-  IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlCopyWrite(
-  IN PFILE_OBJECT FileObject,
-  IN PLARGE_INTEGER FileOffset,
-  IN ULONG Length,
-  IN BOOLEAN Wait,
-  IN ULONG LockKey,
-  IN PVOID Buffer,
-  OUT PIO_STATUS_BLOCK IoStatus,
-  IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlMdlReadDev(
-  IN PFILE_OBJECT FileObject,
-  IN PLARGE_INTEGER FileOffset,
-  IN ULONG Length,
-  IN ULONG LockKey,
-  OUT PMDL *MdlChain,
-  OUT PIO_STATUS_BLOCK IoStatus,
-  IN PDEVICE_OBJECT DeviceObject OPTIONAL);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlMdlReadCompleteDev(
-  IN PFILE_OBJECT FileObject,
-  IN PMDL MdlChain,
-  IN PDEVICE_OBJECT DeviceObject OPTIONAL);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlPrepareMdlWriteDev(
-  IN PFILE_OBJECT FileObject,
-  IN PLARGE_INTEGER FileOffset,
-  IN ULONG Length,
-  IN ULONG LockKey,
-  OUT PMDL *MdlChain,
-  OUT PIO_STATUS_BLOCK IoStatus,
-  IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlMdlWriteCompleteDev(
-  IN PFILE_OBJECT FileObject,
-  IN PLARGE_INTEGER FileOffset,
-  IN PMDL MdlChain,
-  IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlAcquireFileExclusive(
-  IN PFILE_OBJECT FileObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlReleaseFile(
-  IN PFILE_OBJECT FileObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlGetFileSize(
-  IN PFILE_OBJECT FileObject,
-  OUT PLARGE_INTEGER FileSize);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlIsTotalDeviceFailure(
-  IN NTSTATUS Status);
-
-NTKERNELAPI
-PFILE_LOCK
-NTAPI
-FsRtlAllocateFileLock(
-  IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
-  IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlFreeFileLock(
-  IN PFILE_LOCK FileLock);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlInitializeFileLock(
-  IN PFILE_LOCK FileLock,
-  IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
-  IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlUninitializeFileLock(
-  IN PFILE_LOCK FileLock);
-
-/*
-  FsRtlProcessFileLock:
-
-  ret:
-    -STATUS_INVALID_DEVICE_REQUEST
-    -STATUS_RANGE_NOT_LOCKED from unlock routines.
-    -STATUS_PENDING, STATUS_LOCK_NOT_GRANTED from FsRtlPrivateLock
-    (redirected IoStatus->Status).
-
-  Internals:
-    -switch ( Irp->CurrentStackLocation->MinorFunction )
-        lock: return FsRtlPrivateLock;
-        unlocksingle: return FsRtlFastUnlockSingle;
-        unlockall: return FsRtlFastUnlockAll;
-        unlockallbykey: return FsRtlFastUnlockAllByKey;
-        default: IofCompleteRequest with STATUS_INVALID_DEVICE_REQUEST;
-                 return STATUS_INVALID_DEVICE_REQUEST;
-
-    -'AllwaysZero' is passed thru as 'AllwaysZero' to lock / unlock routines.
-    -'Irp' is passet thru as 'Irp' to FsRtlPrivateLock.
-*/
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlProcessFileLock(
-  IN PFILE_LOCK FileLock,
-  IN PIRP Irp,
-  IN PVOID Context OPTIONAL);
-
-/*
-  FsRtlCheckLockForReadAccess:
-
-  All this really does is pick out the lock parameters from the irp (io stack
-  location?), get IoGetRequestorProcess, and pass values on to
-  FsRtlFastCheckLockForRead.
-*/
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlCheckLockForReadAccess(
-  IN PFILE_LOCK FileLock,
-  IN PIRP Irp);
-
-/*
-  FsRtlCheckLockForWriteAccess:
-
-  All this really does is pick out the lock parameters from the irp (io stack
-  location?), get IoGetRequestorProcess, and pass values on to
-  FsRtlFastCheckLockForWrite.
-*/
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlCheckLockForWriteAccess(
-  IN PFILE_LOCK FileLock,
-  IN PIRP Irp);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlFastCheckLockForRead(
-  IN PFILE_LOCK FileLock,
-  IN PLARGE_INTEGER FileOffset,
-  IN PLARGE_INTEGER Length,
-  IN ULONG Key,
-  IN PFILE_OBJECT FileObject,
-  IN PVOID Process);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlFastCheckLockForWrite(
-  IN PFILE_LOCK FileLock,
-  IN PLARGE_INTEGER FileOffset,
-  IN PLARGE_INTEGER Length,
-  IN ULONG Key,
-  IN PFILE_OBJECT FileObject,
-  IN PVOID Process);
-
-/*
-  FsRtlGetNextFileLock:
-
-  ret: NULL if no more locks
-
-  Internals:
-    FsRtlGetNextFileLock uses FileLock->LastReturnedLockInfo and
-    FileLock->LastReturnedLock as storage.
-    LastReturnedLock is a pointer to the 'raw' lock inkl. double linked
-    list, and FsRtlGetNextFileLock needs this to get next lock on subsequent
-    calls with Restart = FALSE.
-*/
-NTKERNELAPI
-PFILE_LOCK_INFO
-NTAPI
-FsRtlGetNextFileLock(
-  IN PFILE_LOCK FileLock,
-  IN BOOLEAN Restart);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlFastUnlockSingle(
-  IN PFILE_LOCK FileLock,
-  IN PFILE_OBJECT FileObject,
-  IN PLARGE_INTEGER FileOffset,
-  IN PLARGE_INTEGER Length,
-  IN PEPROCESS Process,
-  IN ULONG Key,
-  IN PVOID Context OPTIONAL,
-  IN BOOLEAN AlreadySynchronized);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlFastUnlockAll(
-  IN PFILE_LOCK FileLock,
-  IN PFILE_OBJECT FileObject,
-  IN PEPROCESS Process,
-  IN PVOID Context OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlFastUnlockAllByKey(
-  IN PFILE_LOCK FileLock,
-  IN PFILE_OBJECT FileObject,
-  IN PEPROCESS Process,
-  IN ULONG Key,
-  IN PVOID Context OPTIONAL);
-
-/*
-  FsRtlPrivateLock:
-
-  ret: IoStatus->Status: STATUS_PENDING, STATUS_LOCK_NOT_GRANTED
-
-  Internals:
-    -Calls IoCompleteRequest if Irp
-    -Uses exception handling / ExRaiseStatus with STATUS_INSUFFICIENT_RESOURCES
-*/
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlPrivateLock(
-  IN PFILE_LOCK FileLock,
-  IN PFILE_OBJECT FileObject,
-  IN PLARGE_INTEGER FileOffset,
-  IN PLARGE_INTEGER Length,
-  IN PEPROCESS Process,
-  IN ULONG Key,
-  IN BOOLEAN FailImmediately,
-  IN BOOLEAN ExclusiveLock,
-  OUT PIO_STATUS_BLOCK IoStatus,
-  IN PIRP Irp OPTIONAL,
-  IN PVOID Context,
-  IN BOOLEAN AlreadySynchronized);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlInitializeTunnelCache(
-  IN PTUNNEL Cache);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlAddToTunnelCache(
-  IN PTUNNEL Cache,
-  IN ULONGLONG DirectoryKey,
-  IN PUNICODE_STRING ShortName,
-  IN PUNICODE_STRING LongName,
-  IN BOOLEAN KeyByShortName,
-  IN ULONG DataLength,
-  IN PVOID Data);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlFindInTunnelCache(
-  IN PTUNNEL Cache,
-  IN ULONGLONG DirectoryKey,
-  IN PUNICODE_STRING Name,
-  OUT PUNICODE_STRING ShortName,
-  OUT PUNICODE_STRING LongName,
-  IN OUT PULONG DataLength,
-  OUT PVOID Data);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlDeleteKeyFromTunnelCache(
-  IN PTUNNEL Cache,
-  IN ULONGLONG DirectoryKey);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlDeleteTunnelCache(
-  IN PTUNNEL Cache);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlDissectDbcs(
-  IN ANSI_STRING Name,
-  OUT PANSI_STRING FirstPart,
-  OUT PANSI_STRING RemainingPart);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlDoesDbcsContainWildCards(
-  IN PANSI_STRING Name);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlIsDbcsInExpression(
-  IN PANSI_STRING Expression,
-  IN PANSI_STRING Name);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlIsFatDbcsLegal(
-  IN ANSI_STRING DbcsName,
-  IN BOOLEAN WildCardsPermissible,
-  IN BOOLEAN PathNamePermissible,
-  IN BOOLEAN LeadingBackslashPermissible);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlIsHpfsDbcsLegal(
-  IN ANSI_STRING DbcsName,
-  IN BOOLEAN WildCardsPermissible,
-  IN BOOLEAN PathNamePermissible,
-  IN BOOLEAN LeadingBackslashPermissible);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlNormalizeNtstatus(
-  IN NTSTATUS Exception,
-  IN NTSTATUS GenericException);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlIsNtstatusExpected(
-  IN NTSTATUS Ntstatus);
-
-NTKERNELAPI
-PERESOURCE
-NTAPI
-FsRtlAllocateResource(
-  VOID);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlInitializeLargeMcb(
-  IN PLARGE_MCB Mcb,
-  IN POOL_TYPE PoolType);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlUninitializeLargeMcb(
-  IN PLARGE_MCB Mcb);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlResetLargeMcb(
-  IN PLARGE_MCB Mcb,
-  IN BOOLEAN SelfSynchronized);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlTruncateLargeMcb(
-  IN PLARGE_MCB Mcb,
-  IN LONGLONG Vbn);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlAddLargeMcbEntry(
-  IN PLARGE_MCB Mcb,
-  IN LONGLONG Vbn,
-  IN LONGLONG Lbn,
-  IN LONGLONG SectorCount);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlRemoveLargeMcbEntry(
-  IN PLARGE_MCB Mcb,
-  IN LONGLONG Vbn,
-  IN LONGLONG SectorCount);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlLookupLargeMcbEntry(
-  IN PLARGE_MCB Mcb,
-  IN LONGLONG Vbn,
-  OUT PLONGLONG Lbn OPTIONAL,
-  OUT PLONGLONG SectorCountFromLbn OPTIONAL,
-  OUT PLONGLONG StartingLbn OPTIONAL,
-  OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
-  OUT PULONG Index OPTIONAL);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlLookupLastLargeMcbEntry(
-  IN PLARGE_MCB Mcb,
-  OUT PLONGLONG Vbn,
-  OUT PLONGLONG Lbn);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlLookupLastLargeMcbEntryAndIndex(
-  IN PLARGE_MCB OpaqueMcb,
-  OUT PLONGLONG LargeVbn,
-  OUT PLONGLONG LargeLbn,
-  OUT PULONG Index);
-
-NTKERNELAPI
-ULONG
-NTAPI
-FsRtlNumberOfRunsInLargeMcb(
-  IN PLARGE_MCB Mcb);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlGetNextLargeMcbEntry(
-  IN PLARGE_MCB Mcb,
-  IN ULONG RunIndex,
-  OUT PLONGLONG Vbn,
-  OUT PLONGLONG Lbn,
-  OUT PLONGLONG SectorCount);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlSplitLargeMcb(
-  IN PLARGE_MCB Mcb,
-  IN LONGLONG Vbn,
-  IN LONGLONG Amount);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlInitializeMcb(
-  IN PMCB Mcb,
-  IN POOL_TYPE PoolType);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlUninitializeMcb(
-  IN PMCB Mcb);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlTruncateMcb(
-  IN PMCB Mcb,
-  IN VBN Vbn);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlAddMcbEntry(
-  IN PMCB Mcb,
-  IN VBN Vbn,
-  IN LBN Lbn,
-  IN ULONG SectorCount);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlRemoveMcbEntry(
-  IN PMCB Mcb,
-  IN VBN Vbn,
-  IN ULONG SectorCount);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlLookupMcbEntry(
-  IN PMCB Mcb,
-  IN VBN Vbn,
-  OUT PLBN Lbn,
-  OUT PULONG SectorCount OPTIONAL,
-  OUT PULONG Index);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlLookupLastMcbEntry(
-  IN PMCB Mcb,
-  OUT PVBN Vbn,
-  OUT PLBN Lbn);
-
-NTKERNELAPI
-ULONG
-NTAPI
-FsRtlNumberOfRunsInMcb(
-  IN PMCB Mcb);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlGetNextMcbEntry(
-  IN PMCB Mcb,
-  IN ULONG RunIndex,
-  OUT PVBN Vbn,
-  OUT PLBN Lbn,
-  OUT PULONG SectorCount);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlBalanceReads(
-  IN PDEVICE_OBJECT TargetDevice);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlInitializeOplock(
-  IN OUT POPLOCK Oplock);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlUninitializeOplock(
-  IN OUT POPLOCK Oplock);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlOplockFsctrl(
-  IN POPLOCK Oplock,
-  IN PIRP Irp,
-  IN ULONG OpenCount);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlCheckOplock(
-  IN POPLOCK Oplock,
-  IN PIRP Irp,
-  IN PVOID Context,
-  IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
-  IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlOplockIsFastIoPossible(
-  IN POPLOCK Oplock);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlCurrentBatchOplock(
-  IN POPLOCK Oplock);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlNotifyVolumeEvent(
-  IN PFILE_OBJECT FileObject,
-  IN ULONG EventCode);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlNotifyInitializeSync(
-  IN PNOTIFY_SYNC *NotifySync);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlNotifyUninitializeSync(
-  IN PNOTIFY_SYNC *NotifySync);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlNotifyFullChangeDirectory(
-  IN PNOTIFY_SYNC NotifySync,
-  IN PLIST_ENTRY NotifyList,
-  IN PVOID FsContext,
-  IN PSTRING FullDirectoryName,
-  IN BOOLEAN WatchTree,
-  IN BOOLEAN IgnoreBuffer,
-  IN ULONG CompletionFilter,
-  IN PIRP NotifyIrp OPTIONAL,
-  IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
-  IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlNotifyFilterReportChange(
-  IN PNOTIFY_SYNC NotifySync,
-  IN PLIST_ENTRY NotifyList,
-  IN PSTRING FullTargetName,
-  IN USHORT TargetNameOffset,
-  IN PSTRING StreamName OPTIONAL,
-  IN PSTRING NormalizedParentName OPTIONAL,
-  IN ULONG FilterMatch,
-  IN ULONG Action,
-  IN PVOID TargetContext OPTIONAL,
-  IN PVOID FilterContext OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlNotifyFullReportChange(
-  IN PNOTIFY_SYNC NotifySync,
-  IN PLIST_ENTRY NotifyList,
-  IN PSTRING FullTargetName,
-  IN USHORT TargetNameOffset,
-  IN PSTRING StreamName OPTIONAL,
-  IN PSTRING NormalizedParentName OPTIONAL,
-  IN ULONG FilterMatch,
-  IN ULONG Action,
-  IN PVOID TargetContext OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlNotifyCleanup(
-  IN PNOTIFY_SYNC NotifySync,
-  IN PLIST_ENTRY NotifyList,
-  IN PVOID FsContext);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlDissectName(
-  IN UNICODE_STRING Name,
-  OUT PUNICODE_STRING FirstPart,
-  OUT PUNICODE_STRING RemainingPart);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlDoesNameContainWildCards(
-  IN PUNICODE_STRING Name);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlAreNamesEqual(
-  IN PCUNICODE_STRING Name1,
-  IN PCUNICODE_STRING Name2,
-  IN BOOLEAN IgnoreCase,
-  IN PCWCH UpcaseTable OPTIONAL);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlIsNameInExpression(
-  IN PUNICODE_STRING Expression,
-  IN PUNICODE_STRING Name,
-  IN BOOLEAN IgnoreCase,
-  IN PWCHAR UpcaseTable OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlPostPagingFileStackOverflow(
-  IN PVOID Context,
-  IN PKEVENT Event,
-  IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlPostStackOverflow (
-  IN PVOID Context,
-  IN PKEVENT Event,
-  IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlRegisterUncProvider(
-  OUT PHANDLE MupHandle,
-  IN PUNICODE_STRING RedirectorDeviceName,
-  IN BOOLEAN MailslotsSupported);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlDeregisterUncProvider(
-  IN HANDLE Handle);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlTeardownPerStreamContexts(
-  IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlCreateSectionForDataScan(
-  OUT PHANDLE SectionHandle,
-  OUT PVOID *SectionObject,
-  OUT PLARGE_INTEGER SectionFileSize OPTIONAL,
-  IN PFILE_OBJECT FileObject,
-  IN ACCESS_MASK DesiredAccess,
-  IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
-  IN PLARGE_INTEGER MaximumSize OPTIONAL,
-  IN ULONG SectionPageProtection,
-  IN ULONG AllocationAttributes,
-  IN ULONG Flags);
-
-#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
-
-#if (NTDDI_VERSION >= NTDDI_WINXP)
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlNotifyFilterChangeDirectory(
-  IN PNOTIFY_SYNC NotifySync,
-  IN PLIST_ENTRY NotifyList,
-  IN PVOID FsContext,
-  IN PSTRING FullDirectoryName,
-  IN BOOLEAN WatchTree,
-  IN BOOLEAN IgnoreBuffer,
-  IN ULONG CompletionFilter,
-  IN PIRP NotifyIrp OPTIONAL,
-  IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
-  IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL,
-  IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlInsertPerStreamContext(
-  IN PFSRTL_ADVANCED_FCB_HEADER PerStreamContext,
-  IN PFSRTL_PER_STREAM_CONTEXT Ptr);
-
-NTKERNELAPI
-PFSRTL_PER_STREAM_CONTEXT
-NTAPI
-FsRtlLookupPerStreamContextInternal(
-  IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
-  IN PVOID OwnerId OPTIONAL,
-  IN PVOID InstanceId OPTIONAL);
-
-NTKERNELAPI
-PFSRTL_PER_STREAM_CONTEXT
-NTAPI
-FsRtlRemovePerStreamContext(
-  IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
-  IN PVOID OwnerId OPTIONAL,
-  IN PVOID InstanceId OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlIncrementCcFastReadNotPossible(
-  VOID);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlIncrementCcFastReadWait(
-  VOID);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlIncrementCcFastReadNoWait(
-  VOID);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlIncrementCcFastReadResourceMiss(
-  VOID);
-
-NTKERNELAPI
-LOGICAL
-NTAPI
-FsRtlIsPagingFile(
-  IN PFILE_OBJECT FileObject);
-
-#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
-
-#if (NTDDI_VERSION >= NTDDI_WS03)
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlInitializeBaseMcb(
-  IN PBASE_MCB Mcb,
-  IN POOL_TYPE PoolType);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlUninitializeBaseMcb(
-  IN PBASE_MCB Mcb);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlResetBaseMcb(
-  IN PBASE_MCB Mcb);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlTruncateBaseMcb(
-  IN PBASE_MCB Mcb,
-  IN LONGLONG Vbn);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlAddBaseMcbEntry(
-  IN PBASE_MCB Mcb,
-  IN LONGLONG Vbn,
-  IN LONGLONG Lbn,
-  IN LONGLONG SectorCount);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlRemoveBaseMcbEntry(
-  IN PBASE_MCB Mcb,
-  IN LONGLONG Vbn,
-  IN LONGLONG SectorCount);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlLookupBaseMcbEntry(
-  IN PBASE_MCB Mcb,
-  IN LONGLONG Vbn,
-  OUT PLONGLONG Lbn OPTIONAL,
-  OUT PLONGLONG SectorCountFromLbn OPTIONAL,
-  OUT PLONGLONG StartingLbn OPTIONAL,
-  OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
-  OUT PULONG Index OPTIONAL);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlLookupLastBaseMcbEntry(
-  IN PBASE_MCB Mcb,
-  OUT PLONGLONG Vbn,
-  OUT PLONGLONG Lbn);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlLookupLastBaseMcbEntryAndIndex(
-  IN PBASE_MCB OpaqueMcb,
-  IN OUT PLONGLONG LargeVbn,
-  IN OUT PLONGLONG LargeLbn,
-  IN OUT PULONG Index);
-
-NTKERNELAPI
-ULONG
-NTAPI
-FsRtlNumberOfRunsInBaseMcb(
-  IN PBASE_MCB Mcb);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlGetNextBaseMcbEntry(
-  IN PBASE_MCB Mcb,
-  IN ULONG RunIndex,
-  OUT PLONGLONG Vbn,
-  OUT PLONGLONG Lbn,
-  OUT PLONGLONG SectorCount);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlSplitBaseMcb(
-  IN PBASE_MCB Mcb,
-  IN LONGLONG Vbn,
-  IN LONGLONG Amount);
-
-#endif /* (NTDDI_VERSION >= NTDDI_WS03) */
-
-#if (NTDDI_VERSION >= NTDDI_VISTA)
-
-BOOLEAN
-NTAPI
-FsRtlInitializeBaseMcbEx(
-  IN PBASE_MCB Mcb,
-  IN POOL_TYPE PoolType,
-  IN USHORT Flags);
-
-NTSTATUS
-NTAPI
-FsRtlAddBaseMcbEntryEx(
-  IN PBASE_MCB Mcb,
-  IN LONGLONG Vbn,
-  IN LONGLONG Lbn,
-  IN LONGLONG SectorCount);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlCurrentOplock(
-  IN POPLOCK Oplock);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlOplockBreakToNone(
-  IN OUT POPLOCK Oplock,
-  IN PIO_STACK_LOCATION IrpSp OPTIONAL,
-  IN PIRP Irp,
-  IN PVOID Context OPTIONAL,
-  IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
-  IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlNotifyVolumeEventEx(
-  IN PFILE_OBJECT FileObject,
-  IN ULONG EventCode,
-  IN PTARGET_DEVICE_CUSTOM_NOTIFICATION Event);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlNotifyCleanupAll(
-  IN PNOTIFY_SYNC NotifySync,
-  IN PLIST_ENTRY NotifyList);
-
-NTSTATUS
-NTAPI
-FsRtlRegisterUncProviderEx(
-  OUT PHANDLE MupHandle,
-  IN PUNICODE_STRING RedirDevName,
-  IN PDEVICE_OBJECT DeviceObject,
-  IN ULONG Flags);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlCancellableWaitForSingleObject(
-  IN PVOID Object,
-  IN PLARGE_INTEGER Timeout OPTIONAL,
-  IN PIRP Irp OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlCancellableWaitForMultipleObjects(
-  IN ULONG Count,
-  IN PVOID ObjectArray[],
-  IN WAIT_TYPE WaitType,
-  IN PLARGE_INTEGER Timeout OPTIONAL,
-  IN PKWAIT_BLOCK WaitBlockArray OPTIONAL,
-  IN PIRP Irp OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlMupGetProviderInfoFromFileObject(
-  IN PFILE_OBJECT pFileObject,
-  IN ULONG Level,
-  OUT PVOID pBuffer,
-  IN OUT PULONG pBufferSize);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlMupGetProviderIdFromName(
-  IN PUNICODE_STRING pProviderName,
-  OUT PULONG32 pProviderId);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlIncrementCcFastMdlReadWait(
-  VOID);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlValidateReparsePointBuffer(
-  IN ULONG BufferLength,
-  IN PREPARSE_DATA_BUFFER ReparseBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlRemoveDotsFromPath(
-  IN OUT PWSTR OriginalString,
-  IN USHORT PathLength,
-  OUT USHORT *NewLength);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlAllocateExtraCreateParameterList(
-  IN FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
-  OUT PECP_LIST *EcpList);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlFreeExtraCreateParameterList(
-  IN PECP_LIST EcpList);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlAllocateExtraCreateParameter(
-  IN LPCGUID EcpType,
-  IN ULONG SizeOfContext,
-  IN FSRTL_ALLOCATE_ECP_FLAGS Flags,
-  IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL,
-  IN ULONG PoolTag,
-  OUT PVOID *EcpContext);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlFreeExtraCreateParameter(
-  IN PVOID EcpContext);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlInitExtraCreateParameterLookasideList(
-  IN OUT PVOID Lookaside,
-  IN FSRTL_ECP_LOOKASIDE_FLAGS Flags,
-  IN SIZE_T Size,
-  IN ULONG Tag);
-
-VOID
-NTAPI
-FsRtlDeleteExtraCreateParameterLookasideList(
-  IN OUT PVOID Lookaside,
-  IN FSRTL_ECP_LOOKASIDE_FLAGS Flags);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlAllocateExtraCreateParameterFromLookasideList(
-  IN LPCGUID EcpType,
-  IN ULONG SizeOfContext,
-  IN FSRTL_ALLOCATE_ECP_FLAGS Flags,
-  IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL,
-  IN OUT PVOID LookasideList,
-  OUT PVOID *EcpContext);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlInsertExtraCreateParameter(
-  IN OUT PECP_LIST EcpList,
-  IN OUT PVOID EcpContext);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlFindExtraCreateParameter(
-  IN PECP_LIST EcpList,
-  IN LPCGUID EcpType,
-  OUT PVOID *EcpContext OPTIONAL,
-  OUT ULONG *EcpContextSize OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlRemoveExtraCreateParameter(
-  IN OUT PECP_LIST EcpList,
-  IN LPCGUID EcpType,
-  OUT PVOID *EcpContext,
-  OUT ULONG *EcpContextSize OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlGetEcpListFromIrp(
-  IN PIRP Irp,
-  OUT PECP_LIST *EcpList OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlSetEcpListIntoIrp(
-  IN OUT PIRP Irp,
-  IN PECP_LIST EcpList);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlGetNextExtraCreateParameter(
-  IN PECP_LIST EcpList,
-  IN PVOID CurrentEcpContext OPTIONAL,
-  OUT LPGUID NextEcpType OPTIONAL,
-  OUT PVOID *NextEcpContext OPTIONAL,
-  OUT ULONG *NextEcpContextSize OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlAcknowledgeEcp(
-  IN PVOID EcpContext);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlIsEcpAcknowledged(
-  IN PVOID EcpContext);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlIsEcpFromUserMode(
-  IN PVOID EcpContext);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlChangeBackingFileObject(
-  IN PFILE_OBJECT CurrentFileObject OPTIONAL,
-  IN PFILE_OBJECT NewFileObject,
-  IN FSRTL_CHANGE_BACKING_TYPE ChangeBackingType,
-  IN ULONG Flags);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlLogCcFlushError(
-  IN PUNICODE_STRING FileName,
-  IN PDEVICE_OBJECT DeviceObject,
-  IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
-  IN NTSTATUS FlushError,
-  IN ULONG Flags);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlAreVolumeStartupApplicationsComplete(
-  VOID);
-
-NTKERNELAPI
-ULONG
-NTAPI
-FsRtlQueryMaximumVirtualDiskNestingLevel(
-  VOID);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlGetVirtualDiskNestingLevel(
-  IN PDEVICE_OBJECT DeviceObject,
-  OUT PULONG NestingLevel,
-  OUT PULONG NestingFlags OPTIONAL);
-
-#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
-
-#if (NTDDI_VERSION >= NTDDI_VISTASP1)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlCheckOplockEx(
-  IN POPLOCK Oplock,
-  IN PIRP Irp,
-  IN ULONG Flags,
-  IN PVOID Context OPTIONAL,
-  IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
-  IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
-
-#endif
-
-#if (NTDDI_VERSION >= NTDDI_WIN7)
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlAreThereCurrentOrInProgressFileLocks(
-  IN PFILE_LOCK FileLock);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlOplockIsSharedRequest(
-  IN PIRP Irp);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlOplockBreakH(
-  IN POPLOCK Oplock,
-  IN PIRP Irp,
-  IN ULONG Flags,
-  IN PVOID Context OPTIONAL,
-  IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
-  IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlCurrentOplockH(
-  IN POPLOCK Oplock);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlOplockBreakToNoneEx(
-  IN OUT POPLOCK Oplock,
-  IN PIRP Irp,
-  IN ULONG Flags,
-  IN PVOID Context OPTIONAL,
-  IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
-  IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlOplockFsctrlEx(
-  IN POPLOCK Oplock,
-  IN PIRP Irp,
-  IN ULONG OpenCount,
-  IN ULONG Flags);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlOplockKeysEqual(
-  IN PFILE_OBJECT Fo1 OPTIONAL,
-  IN PFILE_OBJECT Fo2 OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlInitializeExtraCreateParameterList(
-  IN OUT PECP_LIST EcpList);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlInitializeExtraCreateParameter(
-  IN PECP_HEADER Ecp,
-  IN ULONG EcpFlags,
-  IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL,
-  IN ULONG TotalSize,
-  IN LPCGUID EcpType,
-  IN PVOID ListAllocatedFrom OPTIONAL);
-
-#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlInsertPerFileContext(
-  IN PVOID* PerFileContextPointer,
-  IN PFSRTL_PER_FILE_CONTEXT Ptr);
-
-NTKERNELAPI
-PFSRTL_PER_FILE_CONTEXT
-NTAPI
-FsRtlLookupPerFileContext(
-  IN PVOID* PerFileContextPointer,
-  IN PVOID OwnerId OPTIONAL,
-  IN PVOID InstanceId OPTIONAL);
-
-NTKERNELAPI
-PFSRTL_PER_FILE_CONTEXT
-NTAPI
-FsRtlRemovePerFileContext(
-  IN PVOID* PerFileContextPointer,
-  IN PVOID OwnerId OPTIONAL,
-  IN PVOID InstanceId OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-FsRtlTeardownPerFileContexts(
-  IN PVOID* PerFileContextPointer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-FsRtlInsertPerFileObjectContext(
-  IN PFILE_OBJECT FileObject,
-  IN PFSRTL_PER_FILEOBJECT_CONTEXT Ptr);
-
-NTKERNELAPI
-PFSRTL_PER_FILEOBJECT_CONTEXT
-NTAPI
-FsRtlLookupPerFileObjectContext(
-  IN PFILE_OBJECT FileObject,
-  IN PVOID OwnerId OPTIONAL,
-  IN PVOID InstanceId OPTIONAL);
-
-NTKERNELAPI
-PFSRTL_PER_FILEOBJECT_CONTEXT
-NTAPI
-FsRtlRemovePerFileObjectContext(
-  IN PFILE_OBJECT FileObject,
-  IN PVOID OwnerId OPTIONAL,
-  IN PVOID InstanceId OPTIONAL);
-
-#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) (       \
-     FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11)   \
-)
-
-#define FsRtlAreThereCurrentFileLocks(FL) ( \
-    ((FL)->FastIoIsQuestionable)            \
-)
-
-#define FsRtlIncrementLockRequestsInProgress(FL) {                           \
-    ASSERT( (FL)->LockRequestsInProgress >= 0 );                             \
-    (void)                                                                   \
-    (InterlockedIncrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
-}
-
-#define FsRtlDecrementLockRequestsInProgress(FL) {                           \
-    ASSERT( (FL)->LockRequestsInProgress > 0 );                              \
-    (void)                                                                   \
-    (InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
-}
-
 typedef struct _TUNNEL {
   FAST_MUTEX Mutex;
   PRTL_SPLAY_LINKS Cache;
@@ -7925,63 +6562,12 @@
   GreaterThan = 1
 } FSRTL_COMPARISON_RESULT;
 
-#ifdef NLS_MB_CODE_PAGE_TAG
-#undef NLS_MB_CODE_PAGE_TAG
-#endif
-
-#define LEGAL_ANSI_CHARACTER_ARRAY        FsRtlLegalAnsiCharacterArray
-#define NLS_MB_CODE_PAGE_TAG              NlsMbOemCodePageTag
-#define NLS_OEM_LEAD_BYTE_INFO            NlsOemLeadByteInfo
-
-extern UCHAR const* const LEGAL_ANSI_CHARACTER_ARRAY;
-extern PUSHORT NLS_OEM_LEAD_BYTE_INFO;
-
 #define FSRTL_FAT_LEGAL                 0x01
 #define FSRTL_HPFS_LEGAL                0x02
 #define FSRTL_NTFS_LEGAL                0x04
 #define FSRTL_WILD_CHARACTER            0x08
 #define FSRTL_OLE_LEGAL                 0x10
 #define FSRTL_NTFS_STREAM_LEGAL         (FSRTL_NTFS_LEGAL | FSRTL_OLE_LEGAL)
-
-#define FsRtlIsAnsiCharacterWild(C) (                                       \
-    FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
-)
-
-#define FsRtlIsAnsiCharacterLegalFat(C, WILD) (                                \
-    FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_FAT_LEGAL) |       \
-                                        ((WILD) ? FSRTL_WILD_CHARACTER : 0 ))  \
-)
-
-#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) (                               \
-    FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) |      \
-                                        ((WILD) ? FSRTL_WILD_CHARACTER : 0 ))  \
-)
-
-#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) (                               \
-    FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) |      \
-                                        ((WILD) ? FSRTL_WILD_CHARACTER : 0 ))  \
-)
-
-#define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) (                    \
-    FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL)   \
-)
-
-#define FsRtlIsAnsiCharacterLegal(C,FLAGS) (          \
-    FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS)) \
-)
-
-#define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) (            \
-        ((SCHAR)(C) < 0) ? DEFAULT_RET :                                    \
-                           FlagOn( LEGAL_ANSI_CHARACTER_ARRAY[(C)],         \
-                                   (FLAGS) |                                \
-                                   ((WILD_OK) ? FSRTL_WILD_CHARACTER : 0) ) \
-)
-
-#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) (                               \
-    (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE :                           \
-              (NLS_MB_CODE_PAGE_TAG &&                                      \
-               (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0)))          \
-)
 
 typedef struct _BASE_MCB {
   ULONG MaximumPairCount;
@@ -8064,12 +6650,6 @@
   IN PVOID NotifyContext,
   IN PVOID FilterContext);
 
-#define FsRtlIsUnicodeCharacterWild(C) (                                    \
-    (((C) >= 0x40) ?                                                        \
-    FALSE :                                                                 \
-    FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER ))       \
-)
-
 typedef VOID
 (NTAPI *PFSRTL_STACK_OVERFLOW_ROUTINE) (
   IN PVOID Context,
@@ -8125,6 +6705,1451 @@
   PVOID InstanceId;
   PFREE_FUNCTION FreeCallback;
 } FSRTL_PER_FILE_CONTEXT, *PFSRTL_PER_FILE_CONTEXT;
+
+typedef struct _FSRTL_PER_STREAM_CONTEXT {
+  LIST_ENTRY Links;
+  PVOID OwnerId;
+  PVOID InstanceId;
+  PFREE_FUNCTION FreeCallback;
+} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;
+
+#if (NTDDI_VERSION >= NTDDI_WIN2K)
+typedef VOID
+(*PFN_FSRTLTEARDOWNPERSTREAMCONTEXTS) (
+  IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader);
+#endif
+
+typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT {
+  LIST_ENTRY Links;
+  PVOID OwnerId;
+  PVOID InstanceId;
+} FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT;
+
+#define FsRtlEnterFileSystem    KeEnterCriticalRegion
+#define FsRtlExitFileSystem     KeLeaveCriticalRegion
+
+#define FSRTL_CC_FLUSH_ERROR_FLAG_NO_HARD_ERROR  0x1
+#define FSRTL_CC_FLUSH_ERROR_FLAG_NO_LOG_ENTRY   0x2
+
+#if (NTDDI_VERSION >= NTDDI_WIN2K)
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCopyRead(
+  IN PFILE_OBJECT FileObject,
+  IN PLARGE_INTEGER FileOffset,
+  IN ULONG Length,
+  IN BOOLEAN Wait,
+  IN ULONG LockKey,
+  OUT PVOID Buffer,
+  OUT PIO_STATUS_BLOCK IoStatus,
+  IN PDEVICE_OBJECT DeviceObject);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCopyWrite(
+  IN PFILE_OBJECT FileObject,
+  IN PLARGE_INTEGER FileOffset,
+  IN ULONG Length,
+  IN BOOLEAN Wait,
+  IN ULONG LockKey,
+  IN PVOID Buffer,
+  OUT PIO_STATUS_BLOCK IoStatus,
+  IN PDEVICE_OBJECT DeviceObject);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlMdlReadDev(
+  IN PFILE_OBJECT FileObject,
+  IN PLARGE_INTEGER FileOffset,
+  IN ULONG Length,
+  IN ULONG LockKey,
+  OUT PMDL *MdlChain,
+  OUT PIO_STATUS_BLOCK IoStatus,
+  IN PDEVICE_OBJECT DeviceObject OPTIONAL);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlMdlReadCompleteDev(
+  IN PFILE_OBJECT FileObject,
+  IN PMDL MdlChain,
+  IN PDEVICE_OBJECT DeviceObject OPTIONAL);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlPrepareMdlWriteDev(
+  IN PFILE_OBJECT FileObject,
+  IN PLARGE_INTEGER FileOffset,
+  IN ULONG Length,
+  IN ULONG LockKey,
+  OUT PMDL *MdlChain,
+  OUT PIO_STATUS_BLOCK IoStatus,
+  IN PDEVICE_OBJECT DeviceObject);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlMdlWriteCompleteDev(
+  IN PFILE_OBJECT FileObject,
+  IN PLARGE_INTEGER FileOffset,
+  IN PMDL MdlChain,
+  IN PDEVICE_OBJECT DeviceObject);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlAcquireFileExclusive(
+  IN PFILE_OBJECT FileObject);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlReleaseFile(
+  IN PFILE_OBJECT FileObject);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlGetFileSize(
+  IN PFILE_OBJECT FileObject,
+  OUT PLARGE_INTEGER FileSize);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlIsTotalDeviceFailure(
+  IN NTSTATUS Status);
+
+NTKERNELAPI
+PFILE_LOCK
+NTAPI
+FsRtlAllocateFileLock(
+  IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
+  IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlFreeFileLock(
+  IN PFILE_LOCK FileLock);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitializeFileLock(
+  IN PFILE_LOCK FileLock,
+  IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
+  IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlUninitializeFileLock(
+  IN PFILE_LOCK FileLock);
+
+/*
+  FsRtlProcessFileLock:
+
+  ret:
+    -STATUS_INVALID_DEVICE_REQUEST
+    -STATUS_RANGE_NOT_LOCKED from unlock routines.
+    -STATUS_PENDING, STATUS_LOCK_NOT_GRANTED from FsRtlPrivateLock
+    (redirected IoStatus->Status).
+
+  Internals:
+    -switch ( Irp->CurrentStackLocation->MinorFunction )
+        lock: return FsRtlPrivateLock;
+        unlocksingle: return FsRtlFastUnlockSingle;
+        unlockall: return FsRtlFastUnlockAll;
+        unlockallbykey: return FsRtlFastUnlockAllByKey;
+        default: IofCompleteRequest with STATUS_INVALID_DEVICE_REQUEST;
+                 return STATUS_INVALID_DEVICE_REQUEST;
+
+    -'AllwaysZero' is passed thru as 'AllwaysZero' to lock / unlock routines.
+    -'Irp' is passet thru as 'Irp' to FsRtlPrivateLock.
+*/
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlProcessFileLock(
+  IN PFILE_LOCK FileLock,
+  IN PIRP Irp,
+  IN PVOID Context OPTIONAL);
+
+/*
+  FsRtlCheckLockForReadAccess:
+
+  All this really does is pick out the lock parameters from the irp (io stack
+  location?), get IoGetRequestorProcess, and pass values on to
+  FsRtlFastCheckLockForRead.
+*/
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCheckLockForReadAccess(
+  IN PFILE_LOCK FileLock,
+  IN PIRP Irp);
+
+/*
+  FsRtlCheckLockForWriteAccess:
+
+  All this really does is pick out the lock parameters from the irp (io stack
+  location?), get IoGetRequestorProcess, and pass values on to
+  FsRtlFastCheckLockForWrite.
+*/
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCheckLockForWriteAccess(
+  IN PFILE_LOCK FileLock,
+  IN PIRP Irp);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlFastCheckLockForRead(
+  IN PFILE_LOCK FileLock,
+  IN PLARGE_INTEGER FileOffset,
+  IN PLARGE_INTEGER Length,
+  IN ULONG Key,
+  IN PFILE_OBJECT FileObject,
+  IN PVOID Process);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlFastCheckLockForWrite(
+  IN PFILE_LOCK FileLock,
+  IN PLARGE_INTEGER FileOffset,
+  IN PLARGE_INTEGER Length,
+  IN ULONG Key,
+  IN PFILE_OBJECT FileObject,
+  IN PVOID Process);
+
+/*
+  FsRtlGetNextFileLock:
+
+  ret: NULL if no more locks
+
+  Internals:
+    FsRtlGetNextFileLock uses FileLock->LastReturnedLockInfo and
+    FileLock->LastReturnedLock as storage.
+    LastReturnedLock is a pointer to the 'raw' lock inkl. double linked
+    list, and FsRtlGetNextFileLock needs this to get next lock on subsequent
+    calls with Restart = FALSE.
+*/
+NTKERNELAPI
+PFILE_LOCK_INFO
+NTAPI
+FsRtlGetNextFileLock(
+  IN PFILE_LOCK FileLock,
+  IN BOOLEAN Restart);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlFastUnlockSingle(
+  IN PFILE_LOCK FileLock,
+  IN PFILE_OBJECT FileObject,
+  IN PLARGE_INTEGER FileOffset,
+  IN PLARGE_INTEGER Length,
+  IN PEPROCESS Process,
+  IN ULONG Key,
+  IN PVOID Context OPTIONAL,
+  IN BOOLEAN AlreadySynchronized);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlFastUnlockAll(
+  IN PFILE_LOCK FileLock,
+  IN PFILE_OBJECT FileObject,
+  IN PEPROCESS Process,
+  IN PVOID Context OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlFastUnlockAllByKey(
+  IN PFILE_LOCK FileLock,
+  IN PFILE_OBJECT FileObject,
+  IN PEPROCESS Process,
+  IN ULONG Key,
+  IN PVOID Context OPTIONAL);
+
+/*
+  FsRtlPrivateLock:
+
+  ret: IoStatus->Status: STATUS_PENDING, STATUS_LOCK_NOT_GRANTED
+
+  Internals:
+    -Calls IoCompleteRequest if Irp
+    -Uses exception handling / ExRaiseStatus with STATUS_INSUFFICIENT_RESOURCES
+*/
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlPrivateLock(
+  IN PFILE_LOCK FileLock,
+  IN PFILE_OBJECT FileObject,
+  IN PLARGE_INTEGER FileOffset,
+  IN PLARGE_INTEGER Length,
+  IN PEPROCESS Process,
+  IN ULONG Key,
+  IN BOOLEAN FailImmediately,
+  IN BOOLEAN ExclusiveLock,
+  OUT PIO_STATUS_BLOCK IoStatus,
+  IN PIRP Irp OPTIONAL,
+  IN PVOID Context,
+  IN BOOLEAN AlreadySynchronized);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitializeTunnelCache(
+  IN PTUNNEL Cache);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlAddToTunnelCache(
+  IN PTUNNEL Cache,
+  IN ULONGLONG DirectoryKey,
+  IN PUNICODE_STRING ShortName,
+  IN PUNICODE_STRING LongName,
+  IN BOOLEAN KeyByShortName,
+  IN ULONG DataLength,
+  IN PVOID Data);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlFindInTunnelCache(
+  IN PTUNNEL Cache,
+  IN ULONGLONG DirectoryKey,
+  IN PUNICODE_STRING Name,
+  OUT PUNICODE_STRING ShortName,
+  OUT PUNICODE_STRING LongName,
+  IN OUT PULONG DataLength,
+  OUT PVOID Data);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlDeleteKeyFromTunnelCache(
+  IN PTUNNEL Cache,
+  IN ULONGLONG DirectoryKey);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlDeleteTunnelCache(
+  IN PTUNNEL Cache);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlDissectDbcs(
+  IN ANSI_STRING Name,
+  OUT PANSI_STRING FirstPart,
+  OUT PANSI_STRING RemainingPart);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlDoesDbcsContainWildCards(
+  IN PANSI_STRING Name);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlIsDbcsInExpression(
+  IN PANSI_STRING Expression,
+  IN PANSI_STRING Name);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlIsFatDbcsLegal(
+  IN ANSI_STRING DbcsName,
+  IN BOOLEAN WildCardsPermissible,
+  IN BOOLEAN PathNamePermissible,
+  IN BOOLEAN LeadingBackslashPermissible);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlIsHpfsDbcsLegal(
+  IN ANSI_STRING DbcsName,
+  IN BOOLEAN WildCardsPermissible,
+  IN BOOLEAN PathNamePermissible,
+  IN BOOLEAN LeadingBackslashPermissible);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlNormalizeNtstatus(
+  IN NTSTATUS Exception,
+  IN NTSTATUS GenericException);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlIsNtstatusExpected(
+  IN NTSTATUS Ntstatus);
+
+NTKERNELAPI
+PERESOURCE
+NTAPI
+FsRtlAllocateResource(
+  VOID);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitializeLargeMcb(
+  IN PLARGE_MCB Mcb,
+  IN POOL_TYPE PoolType);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlUninitializeLargeMcb(
+  IN PLARGE_MCB Mcb);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlResetLargeMcb(
+  IN PLARGE_MCB Mcb,
+  IN BOOLEAN SelfSynchronized);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlTruncateLargeMcb(
+  IN PLARGE_MCB Mcb,
+  IN LONGLONG Vbn);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlAddLargeMcbEntry(
+  IN PLARGE_MCB Mcb,
+  IN LONGLONG Vbn,
+  IN LONGLONG Lbn,
+  IN LONGLONG SectorCount);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlRemoveLargeMcbEntry(
+  IN PLARGE_MCB Mcb,
+  IN LONGLONG Vbn,
+  IN LONGLONG SectorCount);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlLookupLargeMcbEntry(
+  IN PLARGE_MCB Mcb,
+  IN LONGLONG Vbn,
+  OUT PLONGLONG Lbn OPTIONAL,
+  OUT PLONGLONG SectorCountFromLbn OPTIONAL,
+  OUT PLONGLONG StartingLbn OPTIONAL,
+  OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
+  OUT PULONG Index OPTIONAL);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlLookupLastLargeMcbEntry(
+  IN PLARGE_MCB Mcb,
+  OUT PLONGLONG Vbn,
+  OUT PLONGLONG Lbn);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlLookupLastLargeMcbEntryAndIndex(
+  IN PLARGE_MCB OpaqueMcb,
+  OUT PLONGLONG LargeVbn,
+  OUT PLONGLONG LargeLbn,
+  OUT PULONG Index);
+
+NTKERNELAPI
+ULONG
+NTAPI
+FsRtlNumberOfRunsInLargeMcb(
+  IN PLARGE_MCB Mcb);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlGetNextLargeMcbEntry(
+  IN PLARGE_MCB Mcb,
+  IN ULONG RunIndex,
+  OUT PLONGLONG Vbn,
+  OUT PLONGLONG Lbn,
+  OUT PLONGLONG SectorCount);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlSplitLargeMcb(
+  IN PLARGE_MCB Mcb,
+  IN LONGLONG Vbn,
+  IN LONGLONG Amount);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitializeMcb(
+  IN PMCB Mcb,
+  IN POOL_TYPE PoolType);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlUninitializeMcb(
+  IN PMCB Mcb);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlTruncateMcb(
+  IN PMCB Mcb,
+  IN VBN Vbn);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlAddMcbEntry(
+  IN PMCB Mcb,
+  IN VBN Vbn,
+  IN LBN Lbn,
+  IN ULONG SectorCount);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlRemoveMcbEntry(
+  IN PMCB Mcb,
+  IN VBN Vbn,
+  IN ULONG SectorCount);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlLookupMcbEntry(
+  IN PMCB Mcb,
+  IN VBN Vbn,
+  OUT PLBN Lbn,
+  OUT PULONG SectorCount OPTIONAL,
+  OUT PULONG Index);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlLookupLastMcbEntry(
+  IN PMCB Mcb,
+  OUT PVBN Vbn,
+  OUT PLBN Lbn);
+
+NTKERNELAPI
+ULONG
+NTAPI
+FsRtlNumberOfRunsInMcb(
+  IN PMCB Mcb);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlGetNextMcbEntry(
+  IN PMCB Mcb,
+  IN ULONG RunIndex,
+  OUT PVBN Vbn,
+  OUT PLBN Lbn,
+  OUT PULONG SectorCount);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlBalanceReads(
+  IN PDEVICE_OBJECT TargetDevice);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitializeOplock(
+  IN OUT POPLOCK Oplock);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlUninitializeOplock(
+  IN OUT POPLOCK Oplock);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlOplockFsctrl(
+  IN POPLOCK Oplock,
+  IN PIRP Irp,
+  IN ULONG OpenCount);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlCheckOplock(
+  IN POPLOCK Oplock,
+  IN PIRP Irp,
+  IN PVOID Context,
+  IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
+  IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlOplockIsFastIoPossible(
+  IN POPLOCK Oplock);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCurrentBatchOplock(
+  IN POPLOCK Oplock);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlNotifyVolumeEvent(
+  IN PFILE_OBJECT FileObject,
+  IN ULONG EventCode);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyInitializeSync(
+  IN PNOTIFY_SYNC *NotifySync);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyUninitializeSync(
+  IN PNOTIFY_SYNC *NotifySync);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyFullChangeDirectory(
+  IN PNOTIFY_SYNC NotifySync,
+  IN PLIST_ENTRY NotifyList,
+  IN PVOID FsContext,
+  IN PSTRING FullDirectoryName,
+  IN BOOLEAN WatchTree,
+  IN BOOLEAN IgnoreBuffer,
+  IN ULONG CompletionFilter,
+  IN PIRP NotifyIrp OPTIONAL,
+  IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
+  IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyFilterReportChange(
+  IN PNOTIFY_SYNC NotifySync,
+  IN PLIST_ENTRY NotifyList,
+  IN PSTRING FullTargetName,
+  IN USHORT TargetNameOffset,
+  IN PSTRING StreamName OPTIONAL,
+  IN PSTRING NormalizedParentName OPTIONAL,
+  IN ULONG FilterMatch,
+  IN ULONG Action,
+  IN PVOID TargetContext OPTIONAL,
+  IN PVOID FilterContext OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyFullReportChange(
+  IN PNOTIFY_SYNC NotifySync,
+  IN PLIST_ENTRY NotifyList,
+  IN PSTRING FullTargetName,
+  IN USHORT TargetNameOffset,
+  IN PSTRING StreamName OPTIONAL,
+  IN PSTRING NormalizedParentName OPTIONAL,
+  IN ULONG FilterMatch,
+  IN ULONG Action,
+  IN PVOID TargetContext OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyCleanup(
+  IN PNOTIFY_SYNC NotifySync,
+  IN PLIST_ENTRY NotifyList,
+  IN PVOID FsContext);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlDissectName(
+  IN UNICODE_STRING Name,
+  OUT PUNICODE_STRING FirstPart,
+  OUT PUNICODE_STRING RemainingPart);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlDoesNameContainWildCards(
+  IN PUNICODE_STRING Name);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlAreNamesEqual(
+  IN PCUNICODE_STRING Name1,
+  IN PCUNICODE_STRING Name2,
+  IN BOOLEAN IgnoreCase,
+  IN PCWCH UpcaseTable OPTIONAL);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlIsNameInExpression(
+  IN PUNICODE_STRING Expression,
+  IN PUNICODE_STRING Name,
+  IN BOOLEAN IgnoreCase,
+  IN PWCHAR UpcaseTable OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlPostPagingFileStackOverflow(
+  IN PVOID Context,
+  IN PKEVENT Event,
+  IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlPostStackOverflow (
+  IN PVOID Context,
+  IN PKEVENT Event,
+  IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlRegisterUncProvider(
+  OUT PHANDLE MupHandle,
+  IN PUNICODE_STRING RedirectorDeviceName,
+  IN BOOLEAN MailslotsSupported);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlDeregisterUncProvider(
+  IN HANDLE Handle);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlTeardownPerStreamContexts(
+  IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlCreateSectionForDataScan(
+  OUT PHANDLE SectionHandle,
+  OUT PVOID *SectionObject,
+  OUT PLARGE_INTEGER SectionFileSize OPTIONAL,
+  IN PFILE_OBJECT FileObject,
+  IN ACCESS_MASK DesiredAccess,
+  IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+  IN PLARGE_INTEGER MaximumSize OPTIONAL,
+  IN ULONG SectionPageProtection,
+  IN ULONG AllocationAttributes,
+  IN ULONG Flags);
+
+#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
+
+#if (NTDDI_VERSION >= NTDDI_WINXP)
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyFilterChangeDirectory(
+  IN PNOTIFY_SYNC NotifySync,
+  IN PLIST_ENTRY NotifyList,
+  IN PVOID FsContext,
+  IN PSTRING FullDirectoryName,
+  IN BOOLEAN WatchTree,
+  IN BOOLEAN IgnoreBuffer,
+  IN ULONG CompletionFilter,
+  IN PIRP NotifyIrp OPTIONAL,
+  IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
+  IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL,
+  IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlInsertPerStreamContext(
+  IN PFSRTL_ADVANCED_FCB_HEADER PerStreamContext,
+  IN PFSRTL_PER_STREAM_CONTEXT Ptr);
+
+NTKERNELAPI
+PFSRTL_PER_STREAM_CONTEXT
+NTAPI
+FsRtlLookupPerStreamContextInternal(
+  IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
+  IN PVOID OwnerId OPTIONAL,
+  IN PVOID InstanceId OPTIONAL);
+
+NTKERNELAPI
+PFSRTL_PER_STREAM_CONTEXT
+NTAPI
+FsRtlRemovePerStreamContext(
+  IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
+  IN PVOID OwnerId OPTIONAL,
+  IN PVOID InstanceId OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlIncrementCcFastReadNotPossible(
+  VOID);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlIncrementCcFastReadWait(
+  VOID);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlIncrementCcFastReadNoWait(
+  VOID);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlIncrementCcFastReadResourceMiss(
+  VOID);
+
+NTKERNELAPI
+LOGICAL
+NTAPI
+FsRtlIsPagingFile(
+  IN PFILE_OBJECT FileObject);
+
+#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
+
+#if (NTDDI_VERSION >= NTDDI_WS03)
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitializeBaseMcb(
+  IN PBASE_MCB Mcb,
+  IN POOL_TYPE PoolType);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlUninitializeBaseMcb(
+  IN PBASE_MCB Mcb);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlResetBaseMcb(
+  IN PBASE_MCB Mcb);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlTruncateBaseMcb(
+  IN PBASE_MCB Mcb,
+  IN LONGLONG Vbn);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlAddBaseMcbEntry(
+  IN PBASE_MCB Mcb,
+  IN LONGLONG Vbn,
+  IN LONGLONG Lbn,
+  IN LONGLONG SectorCount);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlRemoveBaseMcbEntry(
+  IN PBASE_MCB Mcb,
+  IN LONGLONG Vbn,
+  IN LONGLONG SectorCount);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlLookupBaseMcbEntry(
+  IN PBASE_MCB Mcb,
+  IN LONGLONG Vbn,
+  OUT PLONGLONG Lbn OPTIONAL,
+  OUT PLONGLONG SectorCountFromLbn OPTIONAL,
+  OUT PLONGLONG StartingLbn OPTIONAL,
+  OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
+  OUT PULONG Index OPTIONAL);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlLookupLastBaseMcbEntry(
+  IN PBASE_MCB Mcb,
+  OUT PLONGLONG Vbn,
+  OUT PLONGLONG Lbn);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlLookupLastBaseMcbEntryAndIndex(
+  IN PBASE_MCB OpaqueMcb,
+  IN OUT PLONGLONG LargeVbn,
+  IN OUT PLONGLONG LargeLbn,
+  IN OUT PULONG Index);
+
+NTKERNELAPI
+ULONG
+NTAPI
+FsRtlNumberOfRunsInBaseMcb(
+  IN PBASE_MCB Mcb);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlGetNextBaseMcbEntry(
+  IN PBASE_MCB Mcb,
+  IN ULONG RunIndex,
+  OUT PLONGLONG Vbn,
+  OUT PLONGLONG Lbn,
+  OUT PLONGLONG SectorCount);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlSplitBaseMcb(
+  IN PBASE_MCB Mcb,
+  IN LONGLONG Vbn,
+  IN LONGLONG Amount);
+
+#endif /* (NTDDI_VERSION >= NTDDI_WS03) */
+
+#if (NTDDI_VERSION >= NTDDI_VISTA)
+
+BOOLEAN
+NTAPI
+FsRtlInitializeBaseMcbEx(
+  IN PBASE_MCB Mcb,
+  IN POOL_TYPE PoolType,
+  IN USHORT Flags);
+
+NTSTATUS
+NTAPI
+FsRtlAddBaseMcbEntryEx(
+  IN PBASE_MCB Mcb,
+  IN LONGLONG Vbn,
+  IN LONGLONG Lbn,
+  IN LONGLONG SectorCount);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCurrentOplock(
+  IN POPLOCK Oplock);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlOplockBreakToNone(
+  IN OUT POPLOCK Oplock,
+  IN PIO_STACK_LOCATION IrpSp OPTIONAL,
+  IN PIRP Irp,
+  IN PVOID Context OPTIONAL,
+  IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
+  IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlNotifyVolumeEventEx(
+  IN PFILE_OBJECT FileObject,
+  IN ULONG EventCode,
+  IN PTARGET_DEVICE_CUSTOM_NOTIFICATION Event);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlNotifyCleanupAll(
+  IN PNOTIFY_SYNC NotifySync,
+  IN PLIST_ENTRY NotifyList);
+
+NTSTATUS
+NTAPI
+FsRtlRegisterUncProviderEx(
+  OUT PHANDLE MupHandle,
+  IN PUNICODE_STRING RedirDevName,
+  IN PDEVICE_OBJECT DeviceObject,
+  IN ULONG Flags);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlCancellableWaitForSingleObject(
+  IN PVOID Object,
+  IN PLARGE_INTEGER Timeout OPTIONAL,
+  IN PIRP Irp OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlCancellableWaitForMultipleObjects(
+  IN ULONG Count,
+  IN PVOID ObjectArray[],
+  IN WAIT_TYPE WaitType,
+  IN PLARGE_INTEGER Timeout OPTIONAL,
+  IN PKWAIT_BLOCK WaitBlockArray OPTIONAL,
+  IN PIRP Irp OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlMupGetProviderInfoFromFileObject(
+  IN PFILE_OBJECT pFileObject,
+  IN ULONG Level,
+  OUT PVOID pBuffer,
+  IN OUT PULONG pBufferSize);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlMupGetProviderIdFromName(
+  IN PUNICODE_STRING pProviderName,
+  OUT PULONG32 pProviderId);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlIncrementCcFastMdlReadWait(
+  VOID);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlValidateReparsePointBuffer(
+  IN ULONG BufferLength,
+  IN PREPARSE_DATA_BUFFER ReparseBuffer);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlRemoveDotsFromPath(
+  IN OUT PWSTR OriginalString,
+  IN USHORT PathLength,
+  OUT USHORT *NewLength);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlAllocateExtraCreateParameterList(
+  IN FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
+  OUT PECP_LIST *EcpList);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlFreeExtraCreateParameterList(
+  IN PECP_LIST EcpList);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlAllocateExtraCreateParameter(
+  IN LPCGUID EcpType,
+  IN ULONG SizeOfContext,
+  IN FSRTL_ALLOCATE_ECP_FLAGS Flags,
+  IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL,
+  IN ULONG PoolTag,
+  OUT PVOID *EcpContext);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlFreeExtraCreateParameter(
+  IN PVOID EcpContext);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitExtraCreateParameterLookasideList(
+  IN OUT PVOID Lookaside,
+  IN FSRTL_ECP_LOOKASIDE_FLAGS Flags,
+  IN SIZE_T Size,
+  IN ULONG Tag);
+
+VOID
+NTAPI
+FsRtlDeleteExtraCreateParameterLookasideList(
+  IN OUT PVOID Lookaside,
+  IN FSRTL_ECP_LOOKASIDE_FLAGS Flags);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlAllocateExtraCreateParameterFromLookasideList(
+  IN LPCGUID EcpType,
+  IN ULONG SizeOfContext,
+  IN FSRTL_ALLOCATE_ECP_FLAGS Flags,
+  IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL,
+  IN OUT PVOID LookasideList,
+  OUT PVOID *EcpContext);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlInsertExtraCreateParameter(
+  IN OUT PECP_LIST EcpList,
+  IN OUT PVOID EcpContext);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlFindExtraCreateParameter(
+  IN PECP_LIST EcpList,
+  IN LPCGUID EcpType,
+  OUT PVOID *EcpContext OPTIONAL,
+  OUT ULONG *EcpContextSize OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlRemoveExtraCreateParameter(
+  IN OUT PECP_LIST EcpList,
+  IN LPCGUID EcpType,
+  OUT PVOID *EcpContext,
+  OUT ULONG *EcpContextSize OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlGetEcpListFromIrp(
+  IN PIRP Irp,
+  OUT PECP_LIST *EcpList OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlSetEcpListIntoIrp(
+  IN OUT PIRP Irp,
+  IN PECP_LIST EcpList);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlGetNextExtraCreateParameter(
+  IN PECP_LIST EcpList,
+  IN PVOID CurrentEcpContext OPTIONAL,
+  OUT LPGUID NextEcpType OPTIONAL,
+  OUT PVOID *NextEcpContext OPTIONAL,
+  OUT ULONG *NextEcpContextSize OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlAcknowledgeEcp(
+  IN PVOID EcpContext);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlIsEcpAcknowledged(
+  IN PVOID EcpContext);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlIsEcpFromUserMode(
+  IN PVOID EcpContext);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlChangeBackingFileObject(
+  IN PFILE_OBJECT CurrentFileObject OPTIONAL,
+  IN PFILE_OBJECT NewFileObject,
+  IN FSRTL_CHANGE_BACKING_TYPE ChangeBackingType,
+  IN ULONG Flags);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlLogCcFlushError(
+  IN PUNICODE_STRING FileName,
+  IN PDEVICE_OBJECT DeviceObject,
+  IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
+  IN NTSTATUS FlushError,
+  IN ULONG Flags);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlAreVolumeStartupApplicationsComplete(
+  VOID);
+
+NTKERNELAPI
+ULONG
+NTAPI
+FsRtlQueryMaximumVirtualDiskNestingLevel(
+  VOID);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlGetVirtualDiskNestingLevel(
+  IN PDEVICE_OBJECT DeviceObject,
+  OUT PULONG NestingLevel,
+  OUT PULONG NestingFlags OPTIONAL);
+
+#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
+
+#if (NTDDI_VERSION >= NTDDI_VISTASP1)
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlCheckOplockEx(
+  IN POPLOCK Oplock,
+  IN PIRP Irp,
+  IN ULONG Flags,
+  IN PVOID Context OPTIONAL,
+  IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
+  IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
+
+#endif
+
+#if (NTDDI_VERSION >= NTDDI_WIN7)
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlAreThereCurrentOrInProgressFileLocks(
+  IN PFILE_LOCK FileLock);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlOplockIsSharedRequest(
+  IN PIRP Irp);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlOplockBreakH(
+  IN POPLOCK Oplock,
+  IN PIRP Irp,
+  IN ULONG Flags,
+  IN PVOID Context OPTIONAL,
+  IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
+  IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlCurrentOplockH(
+  IN POPLOCK Oplock);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlOplockBreakToNoneEx(
+  IN OUT POPLOCK Oplock,
+  IN PIRP Irp,
+  IN ULONG Flags,
+  IN PVOID Context OPTIONAL,
+  IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
+  IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlOplockFsctrlEx(
+  IN POPLOCK Oplock,
+  IN PIRP Irp,
+  IN ULONG OpenCount,
+  IN ULONG Flags);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+FsRtlOplockKeysEqual(
+  IN PFILE_OBJECT Fo1 OPTIONAL,
+  IN PFILE_OBJECT Fo2 OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlInitializeExtraCreateParameterList(
+  IN OUT PECP_LIST EcpList);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlInitializeExtraCreateParameter(
+  IN PECP_HEADER Ecp,
+  IN ULONG EcpFlags,
+  IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL,
+  IN ULONG TotalSize,
+  IN LPCGUID EcpType,
+  IN PVOID ListAllocatedFrom OPTIONAL);
+
+#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlInsertPerFileContext(
+  IN PVOID* PerFileContextPointer,
+  IN PFSRTL_PER_FILE_CONTEXT Ptr);
+
+NTKERNELAPI
+PFSRTL_PER_FILE_CONTEXT
+NTAPI
+FsRtlLookupPerFileContext(
+  IN PVOID* PerFileContextPointer,
+  IN PVOID OwnerId OPTIONAL,
+  IN PVOID InstanceId OPTIONAL);
+
+NTKERNELAPI
+PFSRTL_PER_FILE_CONTEXT
+NTAPI
+FsRtlRemovePerFileContext(
+  IN PVOID* PerFileContextPointer,
+  IN PVOID OwnerId OPTIONAL,
+  IN PVOID InstanceId OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+FsRtlTeardownPerFileContexts(
+  IN PVOID* PerFileContextPointer);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+FsRtlInsertPerFileObjectContext(
+  IN PFILE_OBJECT FileObject,
+  IN PFSRTL_PER_FILEOBJECT_CONTEXT Ptr);
+
+NTKERNELAPI
+PFSRTL_PER_FILEOBJECT_CONTEXT
+NTAPI
+FsRtlLookupPerFileObjectContext(
+  IN PFILE_OBJECT FileObject,
+  IN PVOID OwnerId OPTIONAL,
+  IN PVOID InstanceId OPTIONAL);
+
+NTKERNELAPI
+PFSRTL_PER_FILEOBJECT_CONTEXT
+NTAPI
+FsRtlRemovePerFileObjectContext(
+  IN PFILE_OBJECT FileObject,
+  IN PVOID OwnerId OPTIONAL,
+  IN PVOID InstanceId OPTIONAL);
+
+#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) (       \
+     FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11)   \
+)
+
+#define FsRtlAreThereCurrentFileLocks(FL) ( \
+    ((FL)->FastIoIsQuestionable)            \
+)
+
+#define FsRtlIncrementLockRequestsInProgress(FL) {                           \
+    ASSERT( (FL)->LockRequestsInProgress >= 0 );                             \
+    (void)                                                                   \
+    (InterlockedIncrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
+}
+
+#define FsRtlDecrementLockRequestsInProgress(FL) {                           \
+    ASSERT( (FL)->LockRequestsInProgress > 0 );                              \
+    (void)                                                                   \
+    (InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
+}
+
+#ifdef NLS_MB_CODE_PAGE_TAG
+#undef NLS_MB_CODE_PAGE_TAG
+#endif
+
+#define LEGAL_ANSI_CHARACTER_ARRAY        FsRtlLegalAnsiCharacterArray
+#define NLS_MB_CODE_PAGE_TAG              NlsMbOemCodePageTag
+#define NLS_OEM_LEAD_BYTE_INFO            NlsOemLeadByteInfo
+
+extern UCHAR const* const LEGAL_ANSI_CHARACTER_ARRAY;
+extern PUSHORT NLS_OEM_LEAD_BYTE_INFO;
+
+#define FsRtlIsAnsiCharacterWild(C) (                                       \
+    FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
+)
+
+#define FsRtlIsAnsiCharacterLegalFat(C, WILD) (                                \
+    FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_FAT_LEGAL) |       \
+                                        ((WILD) ? FSRTL_WILD_CHARACTER : 0 ))  \
+)
+
+#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) (                               \
+    FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) |      \
+                                        ((WILD) ? FSRTL_WILD_CHARACTER : 0 ))  \
+)
+
+#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) (                               \
+    FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) |      \
+                                        ((WILD) ? FSRTL_WILD_CHARACTER : 0 ))  \
+)
+
+#define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) (                    \
+    FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL)   \
+)
+
+#define FsRtlIsAnsiCharacterLegal(C,FLAGS) (          \
+    FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS)) \
+)
+
+#define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) (            \
+        ((SCHAR)(C) < 0) ? DEFAULT_RET :                                    \
+                           FlagOn( LEGAL_ANSI_CHARACTER_ARRAY[(C)],         \
+                                   (FLAGS) |                                \
+                                   ((WILD_OK) ? FSRTL_WILD_CHARACTER : 0) ) \
+)
+
+#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) (                               \
+    (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE :                           \
+              (NLS_MB_CODE_PAGE_TAG &&                                      \
+               (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0)))          \
+)
+
+#define FsRtlIsUnicodeCharacterWild(C) (                                    \
+    (((C) >= 0x40) ?                                                        \
+    FALSE :                                                                 \
+    FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER ))       \
+)
 
 #define FsRtlInitPerFileContext( _fc, _owner, _inst, _cb)   \
     ((_fc)->OwnerId = (_owner),                               \
@@ -8148,13 +8173,6 @@
         (_advhdr)->FileContextSupportPointer = (_fctxptr);                          \
     }                                                                               \
 }
-
-typedef struct _FSRTL_PER_STREAM_CONTEXT {
-  LIST_ENTRY Links;
-  PVOID OwnerId;
-  PVOID InstanceId;
-  PFREE_FUNCTION FreeCallback;
-} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;
 
 #define FsRtlGetPerStreamContextPointer(FO) (   \
     (PFSRTL_ADVANCED_FCB_HEADER)(FO)->FsContext \
@@ -8205,18 +8223,6 @@
 #endif
 }
 
-#if (NTDDI_VERSION >= NTDDI_WIN2K)
-typedef VOID
-(*PFN_FSRTLTEARDOWNPERSTREAMCONTEXTS) (
-  IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader);
-#endif
-
-typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT {
-  LIST_ENTRY Links;
-  PVOID OwnerId;
-  PVOID InstanceId;
-} FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT;
-
 #define FsRtlInitPerFileObjectContext(_fc, _owner, _inst)         \
            ((_fc)->OwnerId = (_owner), (_fc)->InstanceId = (_inst))
 
@@ -8224,12 +8230,6 @@
     (IRP)->IoStatus.Status = (STATUS);             \
     IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \
 }
-
-#define FsRtlEnterFileSystem    KeEnterCriticalRegion
-#define FsRtlExitFileSystem     KeLeaveCriticalRegion
-
-#define FSRTL_CC_FLUSH_ERROR_FLAG_NO_HARD_ERROR  0x1
-#define FSRTL_CC_FLUSH_ERROR_FLAG_NO_LOG_ENTRY   0x2
 
 #if (NTDDI_VERSION >= NTDDI_WIN7)
 typedef struct _ECP_HEADER ECP_HEADER, *PECP_HEADER;




More information about the Ros-diffs mailing list