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…
==============================================================================
--- 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;