#include <ntifs.h>
#include <wdmsec.h> // for IoCreateDeviceSecure
#include <initguid.h>
+#include <ntintsafe.h>
#include "AFSDefines.h"
NTSTATUS
AFSNotifyDelete( IN AFSDirectoryCB *DirectoryCB,
- IN BOOLEAN CheckOnly);
+ IN GUID *AuthGroup,
+ IN BOOLEAN CheckOnly);
NTSTATUS
AFSNotifyRename( IN AFSObjectInfoCB *ObjectInfo,
+ IN GUID *AuthGroup,
IN AFSObjectInfoCB *ParentObjectInfo,
IN AFSObjectInfoCB *TargetParentObjectInfo,
IN AFSDirectoryCB *DirectoryCB,
NTSTATUS
AFSEvaluateTargetByName( IN GUID *AuthGroup,
- IN AFSFileID *ParentFileId,
+ IN AFSObjectInfoCB *ParentObjectInfo,
IN PUNICODE_STRING SourceName,
OUT AFSDirEnumEntry **DirEnumEntry);
OUT AFSVolumeInfoCB *VolumeInformation);
NTSTATUS
+AFSRetrieveVolumeSizeInformation( IN GUID *AuthGroup,
+ IN AFSFileID *FileID,
+ OUT AFSVolumeSizeInfoCB *VolumeSizeInformation);
+
+NTSTATUS
AFSNotifyPipeTransceive( IN AFSCcb *Ccb,
IN ULONG InputLength,
IN ULONG OutputLength,
NTSTATUS
AFSRequestExtents( IN AFSFcb *Fcb,
+ IN AFSCcb *Ccb,
IN PLARGE_INTEGER Offset,
IN ULONG Size,
OUT BOOLEAN *FullyMApped);
NTSTATUS
AFSRequestExtentsAsync( IN AFSFcb *Fcb,
+ IN AFSCcb *Ccb,
IN PLARGE_INTEGER Offset,
IN ULONG Size);
NTSTATUS
-AFSWaitForExtentMapping ( IN AFSFcb *Fcb );
+AFSWaitForExtentMapping ( IN AFSFcb *Fcb,
+ IN AFSCcb *Ccb);
NTSTATUS
AFSProcessSetFileExtents( IN AFSSetFileExtentsCB *SetExtents );
IN AFSFileExtentCB *Result);
NTSTATUS
-AFSFlushExtents( IN AFSFcb *pFcb);
+AFSFlushExtents( IN AFSFcb *pFcb,
+ IN GUID *AuthGroup);
+
+NTSTATUS
+AFSReleaseExtentsWithFlush( IN AFSFcb *Fcb,
+ IN GUID *AuthGroup);
NTSTATUS
-AFSReleaseExtentsWithFlush( IN AFSFcb *Fcb);
+AFSReleaseCleanExtents( IN AFSFcb *Fcb,
+ IN GUID *AuthGroup);
VOID
AFSMarkDirty( IN AFSFcb *pFcb,
IN AFSExtent *StartExtent,
IN ULONG ExtentsCount,
- IN LARGE_INTEGER *StartingByte);
+ IN LARGE_INTEGER *StartingByte,
+ IN BOOLEAN DerefExtents);
-BOOLEAN
-AFSTearDownFcbExtents( IN AFSFcb *Fcb ) ;
+VOID
+AFSTearDownFcbExtents( IN AFSFcb *Fcb,
+ IN GUID *AuthGroup);
void
AFSTrimExtents( IN AFSFcb *Fcb,
AFSRemoveEntryDirtyList( IN AFSFcb *Fcb,
IN AFSExtent *Extent);
+AFSExtent *
+ExtentFor( PLIST_ENTRY le, ULONG SkipList );
+
+AFSExtent *
+NextExtent( AFSExtent *Extent, ULONG SkipList );
+
+ULONG
+AFSConstructCleanByteRangeList( AFSFcb * pFcb,
+ AFSByteRange ** pByteRangeList);
+
#if GEN_MD5
void
AFSSetupMD5Hash( IN AFSFcb *Fcb,
//
NTSTATUS
-AFSInitFcb( IN AFSDirectoryCB *DirEntry,
- IN OUT AFSFcb **Fcb);
+AFSInitFcb( IN AFSDirectoryCB *DirEntry);
NTSTATUS
AFSInitVolume( IN GUID *AuthGroup,
AFSInitCcb( IN OUT AFSCcb **Ccb);
void
-AFSRemoveFcb( IN AFSFcb *Fcb);
+AFSRemoveFcb( IN AFSFcb **Fcb);
NTSTATUS
-AFSRemoveCcb( IN AFSCcb *Ccb);
+AFSRemoveCcb( IN AFSFcb *Fcb,
+ IN AFSCcb *Ccb);
+
+NTSTATUS
+AFSInsertCcb( IN AFSFcb *Fcb,
+ IN AFSCcb *Ccb);
//
// AFSNameSupport.cpp Prototypes
NTSTATUS
AFSProcessDFSLink( IN AFSDirectoryCB *DirEntry,
IN PFILE_OBJECT FileObject,
- IN UNICODE_STRING *RemainingPath);
+ IN UNICODE_STRING *RemainingPath,
+ IN GUID *AuthGroup);
//
// AFSNetworkProviderSupport.cpp
IN OUT PLONG Length);
NTSTATUS
+AFSQueryPhysicalNameInfo( IN PIRP Irp,
+ IN AFSDirectoryCB *DirectoryCB,
+ IN OUT PFILE_NETWORK_PHYSICAL_NAME_INFORMATION Buffer,
+ IN OUT PLONG Length);
+
+NTSTATUS
AFSSetFileInfo( IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
NTSTATUS
AFSSnapshotDirectory( IN AFSFcb *Fcb,
- IN AFSCcb *Ccb);
+ IN AFSCcb *Ccb,
+ IN BOOLEAN ResetIndex);
NTSTATUS
AFSFsRtlNotifyFullChangeDirectory( IN AFSObjectInfoCB *ObjectInfo,
//
ULONG
-AFSExceptionFilter( IN ULONG Code,
+AFSExceptionFilter( IN CHAR *FunctionString,
+ IN ULONG Code,
IN PEXCEPTION_POINTERS ExceptPtrs);
BOOLEAN
AFSCompleteRequest( IN PIRP Irp,
IN ULONG Status);
-void
-AFSBuildCRCTable( void);
-
ULONG
AFSGenerateCRC( IN PUNICODE_STRING FileName,
IN BOOLEAN UpperCaseName);
NTSTATUS
AFSInvalidateCache( IN AFSInvalidateCacheCB *InvalidateCB);
+NTSTATUS
+AFSInvalidateObject( IN OUT AFSObjectInfoCB **ppObjectInfo,
+ IN ULONG Reason);
+
BOOLEAN
AFSIsChildOfParent( IN AFSFcb *Dcb,
IN AFSFcb *Fcb);
AFSInvalidateVolume( IN AFSVolumeCB *VolumeCB,
IN ULONG Reason);
+VOID
+AFSInvalidateAllVolumes( VOID);
+
NTSTATUS
AFSVerifyEntry( IN GUID *AuthGroup,
IN AFSDirectoryCB *DirectoryCB);
NTSTATUS
AFSValidateEntry( IN AFSDirectoryCB *DirEntry,
IN GUID *AuthGroup,
- IN BOOLEAN PurgeContent,
IN BOOLEAN FastCall);
AFSDirectoryCB *
AFSInsertNextElement( IN AFSNameArrayHdr *NameArray,
IN AFSDirectoryCB *DirEntry);
-void
-AFSReplaceCurrentElement( IN AFSNameArrayHdr *NameArray,
- IN AFSDirectoryCB *DirectoryCB);
-
AFSDirectoryCB *
AFSBackupEntry( IN AFSNameArrayHdr *NameArray);
IN AFSDirectoryCB *DirectoryCB,
IN UNICODE_STRING *ParentPathName,
IN AFSNameArrayHdr *RelatedNameArray,
+ IN GUID *AuthGroup,
OUT AFSFileInfoCB *FileInfo);
AFSObjectInfoCB *
NTSTATUS
AFSCreateDefaultSecurityDescriptor( void);
+void
+AFSRetrieveParentPath( IN UNICODE_STRING *FullFileName,
+ OUT UNICODE_STRING *ParentPath);
+
+NTSTATUS
+AFSRetrieveValidAuthGroup( IN AFSFcb *Fcb,
+ IN AFSObjectInfoCB *ObjectInfo,
+ IN BOOLEAN WriteAccess,
+ OUT GUID *AuthGroup);
+
+NTSTATUS
+AFSPerformObjectInvalidate( IN AFSObjectInfoCB *ObjectInfo,
+ IN ULONG InvalidateReason);
+
//
// AFSWorker.cpp Prototypes
//
AFSShutdownVolumeWorker( IN AFSVolumeCB *VolumeCB);
NTSTATUS
-AFSQueueFlushExtents( IN AFSFcb *Fcb);
-
-NTSTATUS
-AFSQueueAsyncRead( IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN HANDLE CallerProcess);
-
-NTSTATUS
-AFSQueueAsyncWrite( IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN HANDLE CallerProcess);
+AFSQueueFlushExtents( IN AFSFcb *Fcb,
+ IN GUID *AuthGroup);
NTSTATUS
AFSQueueGlobalRootEnumeration( void);
IN ULONG RunCount,
IN AFSGatherIo *GatherIo);
+NTSTATUS
+AFSQueueInvalidateObject( IN AFSObjectInfoCB *ObjectInfo,
+ IN ULONG InvalidateReason);
+
//
// AFSMD5Support.cpp Prototypes
//