FSRTL Types and Prototypes Added.

svn path=/trunk/; revision=9820
This commit is contained in:
Alex Ionescu 2004-06-23 00:41:55 +00:00
parent f737c1e98a
commit 9467b632c1
2 changed files with 236 additions and 2 deletions

View file

@ -1,6 +1,6 @@
#ifndef __INCLUDE_DDK_FSFUNCS_H
#define __INCLUDE_DDK_FSFUNCS_H
/* $Id: fsfuncs.h,v 1.22 2003/12/17 20:27:06 ekohl Exp $ */
/* $Id: fsfuncs.h,v 1.23 2004/06/23 00:41:55 ion Exp $ */
#define FlagOn(x,f) ((x) & (f))
#include <ntos/fstypes.h>
@ -12,6 +12,12 @@ FsRtlFreeFileLock(
IN PFILE_LOCK FileLock
);
STDCALL
VOID
FsRtlAcquireFileExclusive (
IN PFILE_OBJECT FileObject
);
PFILE_LOCK
STDCALL
FsRtlAllocateFileLock (
@ -257,6 +263,19 @@ FsRtlGetNextMcbEntry (IN PMCB Mcb,
OUT PULONG SectorCount);
#define FsRtlEnterFileSystem KeEnterCriticalRegion
#define FsRtlExitFileSystem KeLeaveCriticalRegion
VOID
FsRtlIncrementCcFastReadNotPossible( VOID );
VOID
FsRtlIncrementCcFastReadWait( VOID );
VOID
FsRtlIncrementCcFastReadNoWait( VOID );
VOID
FsRtlIncrementCcFastReadResourceMiss( VOID );
VOID
STDCALL
FsRtlInitializeFileLock (
@ -276,11 +295,27 @@ FsRtlInitializeMcb (IN PMCB Mcb,
VOID STDCALL
FsRtlInitializeOplock(IN OUT POPLOCK Oplock);
VOID
STDCALL
FsRtlInitializeTunnelCache (
IN PTUNNEL Cache
);
STDCALL
NTSTATUS
FsRtlInsertPerFileObjectContext (
IN PFSRTL_ADVANCED_FCB_HEADER PerFileObjectContext,
IN PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/ Ptr
);
STDCALL
NTSTATUS
FsRtlInsertPerStreamContext (
IN PFSRTL_ADVANCED_FCB_HEADER PerStreamContext,
IN PFSRTL_PER_STREAM_CONTEXT Ptr
);
BOOLEAN
STDCALL
FsRtlIsDbcsInExpression (
@ -317,6 +352,11 @@ FsRtlIsNameInExpression (
BOOLEAN STDCALL
FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus);
ULONG
FsRtlIsPagingFile (
IN PFILE_OBJECT FileObject
);
BOOLEAN STDCALL
FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus);
@ -339,6 +379,14 @@ BOOLEAN STDCALL
FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
OUT PLONGLONG Vbn,
OUT PLONGLONG Lbn);
STDCALL
BOOLEAN
FsRtlLookupLastLargeMcbEntryAndIndex (
IN PLARGE_MCB OpaqueMcb,
OUT PLONGLONG LargeVbn,
OUT PLONGLONG LargeLbn,
OUT PULONG Index
);
BOOLEAN STDCALL
FsRtlLookupLastMcbEntry (IN PMCB Mcb,
@ -350,6 +398,21 @@ FsRtlLookupMcbEntry (IN PMCB Mcb,
OUT PLBN Lbn,
OUT PULONG SectorCount OPTIONAL,
OUT PULONG Index);
STDCALL
PFSRTL_PER_STREAM_CONTEXT
FsRtlLookupPerStreamContextInternal (
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
IN PVOID OwnerId OPTIONAL,
IN PVOID InstanceId OPTIONAL
);
STDCALL
PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
FsRtlLookupPerFileObjectContext (
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
IN PVOID OwnerId OPTIONAL,
IN PVOID InstanceId OPTIONAL
);
BOOLEAN
STDCALL
@ -424,6 +487,36 @@ BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) (
IN PVOID TargetContext,
IN PSECURITY_SUBJECT_CONTEXT SubjectContext
);
STDCALL
VOID
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,
IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL,
IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL
);
STDCALL
VOID
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,
IN PVOID FilterContext
);
VOID
STDCALL
FsRtlNotifyFullChangeDirectory (
@ -551,11 +644,24 @@ FsRtlProcessFileLock (
IN PVOID Context OPTIONAL
);
STDCALL
NTSTATUS
FsRtlRegisterFileSystemFilterCallbacks (
IN struct _DRIVER_OBJECT *FilterDriverObject,
IN PFS_FILTER_CALLBACKS Callbacks
);
NTSTATUS STDCALL
FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
IN PUNICODE_STRING RedirectorDeviceName,
IN BOOLEAN MailslotsSupported);
STDCALL
VOID
FsRtlReleaseFile (
IN PFILE_OBJECT FileObject
);
VOID STDCALL
FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
IN LONGLONG Vbn,
@ -566,6 +672,29 @@ FsRtlRemoveMcbEntry (IN PMCB Mcb,
IN VBN Vbn,
IN ULONG SectorCount);
STDCALL
PFSRTL_PER_STREAM_CONTEXT
FsRtlRemovePerStreamContext (
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
IN PVOID OwnerId OPTIONAL,
IN PVOID InstanceId OPTIONAL
);
STDCALL
PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
FsRtlRemovePerFileObjectContext (
IN PFSRTL_ADVANCED_FCB_HEADER PerFileObjectContext,
IN PVOID OwnerId OPTIONAL,
IN PVOID InstanceId OPTIONAL
);
STDCALL
VOID
FsRtlResetLargeMcb (
IN PLARGE_MCB Mcb,
IN BOOLEAN SelfSynchronized
);
BOOLEAN STDCALL
FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb,
IN LONGLONG Vbn,
@ -579,6 +708,12 @@ FsRtlSyncVolumes (
DWORD Unknown2
);
STDCALL
VOID
FsRtlTeardownPerStreamContexts (
IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader
);
VOID STDCALL
FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
IN LONGLONG Vbn);

View file

@ -1,6 +1,6 @@
#ifndef __INCLUDE_DDK_FSTYPES_H
#define __INCLUDE_DDK_FSTYPES_H
/* $Id: fstypes.h,v 1.15 2004/03/18 16:19:25 weiden Exp $ */
/* $Id: fstypes.h,v 1.16 2004/06/23 00:41:55 ion Exp $ */
#ifndef __USE_W32API
@ -35,6 +35,90 @@ typedef VOID (*PUNLOCK_ROUTINE) (
IN PFILE_LOCK_INFO FileLockInfo
);
typedef
BOOLEAN (*PFILTER_REPORT_CHANGE) (
IN PVOID NotifyContext,
IN PVOID FilterContext
);
typedef enum _FS_FILTER_SECTION_SYNC_TYPE {
SyncTypeOther = 0,
SyncTypeCreateSection
} FS_FILTER_SECTION_SYNC_TYPE, *PFS_FILTER_SECTION_SYNC_TYPE;
typedef union _FS_FILTER_PARAMETERS {
/* AcquireForModifiedPageWriter */
struct {
PLARGE_INTEGER EndingOffset;
} AcquireForModifiedPageWriter;
/* ReleaseForModifiedPageWriter */
struct {
PERESOURCE ResourceToRelease;
} ReleaseForModifiedPageWriter;
/* AcquireForSectionSynchronization */
struct {
FS_FILTER_SECTION_SYNC_TYPE SyncType;
ULONG PageProtection;
} AcquireForSectionSynchronization;
/* Other */
struct {
PVOID Argument1;
PVOID Argument2;
PVOID Argument3;
PVOID Argument4;
PVOID Argument5;
} Others;
} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;
typedef struct _FS_FILTER_CALLBACK_DATA {
ULONG SizeOfFsFilterCallbackData;
UCHAR Operation;
UCHAR Reserved;
struct _DEVICE_OBJECT *DeviceObject;
struct _FILE_OBJECT *FileObject;
FS_FILTER_PARAMETERS Parameters;
} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;
typedef
NTSTATUS
(*PFS_FILTER_CALLBACK) (
IN PFS_FILTER_CALLBACK_DATA Data,
OUT PVOID *CompletionContext
);
typedef
VOID
(*PFS_FILTER_COMPLETION_CALLBACK) (
IN PFS_FILTER_CALLBACK_DATA Data,
IN NTSTATUS OperationStatus,
IN PVOID CompletionContext
);
typedef struct _FS_FILTER_CALLBACKS {
ULONG SizeOfFsFilterCallbacks;
ULONG Reserved;
PFS_FILTER_CALLBACK PreAcquireForSectionSynchronization;
PFS_FILTER_COMPLETION_CALLBACK PostAcquireForSectionSynchronization;
PFS_FILTER_CALLBACK PreReleaseForSectionSynchronization;
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForSectionSynchronization;
PFS_FILTER_CALLBACK PreAcquireForCcFlush;
PFS_FILTER_COMPLETION_CALLBACK PostAcquireForCcFlush;
PFS_FILTER_CALLBACK PreReleaseForCcFlush;
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForCcFlush;
PFS_FILTER_CALLBACK PreAcquireForModifiedPageWriter;
PFS_FILTER_COMPLETION_CALLBACK PostAcquireForModifiedPageWriter;
PFS_FILTER_CALLBACK PreReleaseForModifiedPageWriter;
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;
typedef struct _FILE_LOCK {
PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine;
@ -71,6 +155,21 @@ typedef struct _NOTIFY_SYNC
} NOTIFY_SYNC, * PNOTIFY_SYNC;
typedef struct _FSRTL_ADVANCED_FCB_HEADER {
FSRTL_COMMON_FCB_HEADER Header;
PFAST_MUTEX FastMutex;
LIST_ENTRY FilterContexts;
} FSRTL_ADVANCED_FCB_HEADER;
typedef FSRTL_ADVANCED_FCB_HEADER *PFSRTL_ADVANCED_FCB_HEADER;
typedef struct _FSRTL_PER_STREAM_CONTEXT {
LIST_ENTRY Links;
PVOID OwnerId;
PVOID InstanceId;
PFREE_FUNCTION FreeCallback;
} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;
typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE)(PVOID Context,
PIRP Irp);