|
#define | USE_ROS_CC_AND_FS |
|
#define | ENABLE_SWAPOUT |
|
#define | VOLUME_IS_NOT_CACHED_WORK_AROUND_IT |
|
#define | ROUND_DOWN(n, align) (((ULONG)n) & ~((align) - 1l)) |
|
#define | ROUND_UP(n, align) ROUND_DOWN(((ULONG)n) + (align) - 1, (align)) |
|
#define | ROUND_DOWN_64(n, align) (((ULONGLONG)n) & ~((align) - 1LL)) |
|
#define | ROUND_UP_64(n, align) ROUND_DOWN_64(((ULONGLONG)n) + (align) - 1LL, (align)) |
|
#define | FAT_DIRTY_BIT 0x01 |
|
#define | FAT_EAFILE "EA DATA. SF" |
|
#define | VFAT_CASE_LOWER_BASE 8 |
|
#define | VFAT_CASE_LOWER_EXT 16 |
|
#define | LONGNAME_MAX_LENGTH 256 |
|
#define | ENTRY_DELETED(IsFatX, DirEntry) (IsFatX ? FATX_ENTRY_DELETED(&((DirEntry)->FatX)) : FAT_ENTRY_DELETED(&((DirEntry)->Fat))) |
|
#define | ENTRY_VOLUME(IsFatX, DirEntry) (IsFatX ? FATX_ENTRY_VOLUME(&((DirEntry)->FatX)) : FAT_ENTRY_VOLUME(&((DirEntry)->Fat))) |
|
#define | ENTRY_END(IsFatX, DirEntry) (IsFatX ? FATX_ENTRY_END(&((DirEntry)->FatX)) : FAT_ENTRY_END(&((DirEntry)->Fat))) |
|
#define | FAT_ENTRY_DELETED(DirEntry) ((DirEntry)->Filename[0] == 0xe5) |
|
#define | FAT_ENTRY_END(DirEntry) ((DirEntry)->Filename[0] == 0) |
|
#define | FAT_ENTRY_LONG(DirEntry) (((DirEntry)->Attrib & 0x3f) == 0x0f) |
|
#define | FAT_ENTRY_VOLUME(DirEntry) (((DirEntry)->Attrib & 0x1f) == 0x08) |
|
#define | FATX_ENTRY_DELETED(DirEntry) ((DirEntry)->FilenameLength == 0xe5) |
|
#define | FATX_ENTRY_END(DirEntry) ((DirEntry)->FilenameLength == 0xff) |
|
#define | FATX_ENTRY_LONG(DirEntry) (FALSE) |
|
#define | FATX_ENTRY_VOLUME(DirEntry) (((DirEntry)->Attrib & 0x1f) == 0x08) |
|
#define | FAT_ENTRIES_PER_PAGE (PAGE_SIZE / sizeof (FAT_DIR_ENTRY)) |
|
#define | FATX_ENTRIES_PER_PAGE (PAGE_SIZE / sizeof (FATX_DIR_ENTRY)) |
|
#define | BLOCKSIZE 512 |
|
#define | FAT16 (1) |
|
#define | FAT12 (2) |
|
#define | FAT32 (3) |
|
#define | FATX16 (4) |
|
#define | FATX32 (5) |
|
#define | VCB_VOLUME_LOCKED 0x0001 |
|
#define | VCB_DISMOUNT_PENDING 0x0002 |
|
#define | VCB_IS_FATX 0x0004 |
|
#define | VCB_IS_SYS_OR_HAS_PAGE 0x0008 |
|
#define | VCB_IS_DIRTY 0x4000 /* Volume is dirty */ |
|
#define | VCB_CLEAR_DIRTY 0x8000 /* Clean dirty flag at shutdown */ |
|
#define | VCB_GOOD 0x0010 /* If not set, the VCB is improper for usage */ |
|
#define | STATISTICS_SIZE_NO_PAD (sizeof(FILESYSTEM_STATISTICS) + sizeof(FAT_STATISTICS)) |
|
#define | VFAT_BREAK_ON_CORRUPTION 1 |
|
#define | FCB_CACHE_INITIALIZED 0x0001 |
|
#define | FCB_DELETE_PENDING 0x0002 |
|
#define | FCB_IS_FAT 0x0004 |
|
#define | FCB_IS_PAGE_FILE 0x0008 |
|
#define | FCB_IS_VOLUME 0x0010 |
|
#define | FCB_IS_DIRTY 0x0020 |
|
#define | FCB_DELAYED_CLOSE 0x0040 |
|
#define | NODE_TYPE_FCB ((CSHORT)0x0502) |
|
#define | CCB_DELETE_ON_CLOSE 0x0001 |
|
#define | TAG_CCB 'CtaF' |
|
#define | TAG_FCB 'FtaF' |
|
#define | TAG_IRP 'ItaF' |
|
#define | TAG_CLOSE 'xtaF' |
|
#define | TAG_STATS 'VtaF' |
|
#define | TAG_BUFFER 'OtaF' |
|
#define | TAG_VPB 'vtaF' |
|
#define | TAG_NAME 'ntaF' |
|
#define | TAG_SEARCH 'LtaF' |
|
#define | TAG_DIRENT 'DtaF' |
|
#define | ENTRIES_PER_SECTOR (BLOCKSIZE / sizeof(FATDirEntry)) |
|
#define | IRPCONTEXT_CANWAIT 0x0001 |
|
#define | IRPCONTEXT_COMPLETE 0x0002 |
|
#define | IRPCONTEXT_QUEUE 0x0004 |
|
#define | IRPCONTEXT_PENDINGRETURNED 0x0008 |
|
#define | IRPCONTEXT_DEFERRED_WRITE 0x0010 |
|
#define | vfatAddToStat(Vcb, Stat, Inc) |
|
|
typedef struct _BootSector | BootSector |
|
typedef struct _EAFileHeader | FAT_EA_FILE_HEADER |
|
typedef struct _EAFileHeader * | PFAT_EA_FILE_HEADER |
|
typedef struct _EASetHeader | FAT_EA_SET_HEADER |
|
typedef struct _EASetHeader * | PFAT_EA_SET_HEADER |
|
typedef struct _EAHeader | FAT_EA_HEADER |
|
typedef struct _EAHeader * | PFAT_EA_HEADER |
|
typedef struct _FATDirEntry | FAT_DIR_ENTRY |
|
typedef struct _FATDirEntry * | PFAT_DIR_ENTRY |
|
typedef struct _slot | slot |
|
typedef struct _FATXDirEntry | FATX_DIR_ENTRY |
|
typedef struct _FATXDirEntry * | PFATX_DIR_ENTRY |
|
typedef union _DIR_ENTRY | DIR_ENTRY |
|
typedef union _DIR_ENTRY * | PDIR_ENTRY |
|
typedef struct FATINFO * | PFATINFO |
|
typedef struct _HASHENTRY | HASHENTRY |
|
typedef struct DEVICE_EXTENSION * | PDEVICE_EXTENSION |
|
typedef NTSTATUS(* | PGET_NEXT_CLUSTER) (PDEVICE_EXTENSION, ULONG, PULONG) |
|
typedef NTSTATUS(* | PFIND_AND_MARK_AVAILABLE_CLUSTER) (PDEVICE_EXTENSION, PULONG) |
|
typedef NTSTATUS(* | PWRITE_CLUSTER) (PDEVICE_EXTENSION, ULONG, ULONG, PULONG) |
|
typedef BOOLEAN(* | PIS_DIRECTORY_EMPTY) (PDEVICE_EXTENSION, struct _VFATFCB *) |
|
typedef NTSTATUS(* | PADD_ENTRY) (PDEVICE_EXTENSION, PUNICODE_STRING, struct _VFATFCB **, struct _VFATFCB *, ULONG, UCHAR, struct _VFAT_MOVE_CONTEXT *) |
|
typedef NTSTATUS(* | PDEL_ENTRY) (PDEVICE_EXTENSION, struct _VFATFCB *, struct _VFAT_MOVE_CONTEXT *) |
|
typedef NTSTATUS(* | PGET_NEXT_DIR_ENTRY) (PVOID *, PVOID *, struct _VFATFCB *, struct _VFAT_DIRENTRY_CONTEXT *, BOOLEAN) |
|
typedef NTSTATUS(* | PGET_DIRTY_STATUS) (PDEVICE_EXTENSION, PBOOLEAN) |
|
typedef NTSTATUS(* | PSET_DIRTY_STATUS) (PDEVICE_EXTENSION, BOOLEAN) |
|
typedef struct _VFAT_DISPATCH | VFAT_DISPATCH |
|
typedef struct _VFAT_DISPATCH * | PVFAT_DISPATCH |
|
typedef struct _STATISTICS | STATISTICS |
|
typedef struct _STATISTICS * | PSTATISTICS |
|
typedef struct DEVICE_EXTENSION | DEVICE_EXTENSION |
|
typedef struct DEVICE_EXTENSION | VCB |
|
typedef struct DEVICE_EXTENSION * | PVCB |
|
typedef struct VFAT_GLOBAL_DATA * | PVFAT_GLOBAL_DATA |
|
typedef struct _VFATFCB | VFATFCB |
|
typedef struct _VFATFCB * | PVFATFCB |
|
typedef struct _VFATCCB | VFATCCB |
|
typedef struct _VFATCCB * | PVFATCCB |
|
typedef struct __DOSTIME | DOSTIME |
|
typedef struct __DOSTIME * | PDOSTIME |
|
typedef struct __DOSDATE | DOSDATE |
|
typedef struct __DOSDATE * | PDOSDATE |
|
typedef struct VFAT_IRP_CONTEXT * | PVFAT_IRP_CONTEXT |
|
typedef struct _VFAT_DIRENTRY_CONTEXT | VFAT_DIRENTRY_CONTEXT |
|
typedef struct _VFAT_DIRENTRY_CONTEXT * | PVFAT_DIRENTRY_CONTEXT |
|
typedef struct _VFAT_MOVE_CONTEXT | VFAT_MOVE_CONTEXT |
|
typedef struct _VFAT_MOVE_CONTEXT * | PVFAT_MOVE_CONTEXT |
|
typedef struct _VFAT_CLOSE_CONTEXT | VFAT_CLOSE_CONTEXT |
|
typedef struct _VFAT_CLOSE_CONTEXT * | PVFAT_CLOSE_CONTEXT |
|
|
FORCEINLINE BOOLEAN | VfatIsDirectoryEmpty (PDEVICE_EXTENSION DeviceExt, struct _VFATFCB *Fcb) |
|
FORCEINLINE NTSTATUS | VfatAddEntry (PDEVICE_EXTENSION DeviceExt, PUNICODE_STRING NameU, struct _VFATFCB **Fcb, struct _VFATFCB *ParentFcb, ULONG RequestedOptions, UCHAR ReqAttr, struct _VFAT_MOVE_CONTEXT *MoveContext) |
|
FORCEINLINE NTSTATUS | VfatDelEntry (PDEVICE_EXTENSION DeviceExt, struct _VFATFCB *Fcb, struct _VFAT_MOVE_CONTEXT *MoveContext) |
|
FORCEINLINE NTSTATUS | VfatGetNextDirEntry (PDEVICE_EXTENSION DeviceExt, PVOID *pContext, PVOID *pPage, struct _VFATFCB *pDirFcb, struct _VFAT_DIRENTRY_CONTEXT *DirContext, BOOLEAN First) |
|
FORCEINLINE NTSTATUS | VfatMarkIrpContextForQueue (PVFAT_IRP_CONTEXT IrpContext) |
|
FORCEINLINE BOOLEAN | vfatFCBIsDirectory (PVFATFCB FCB) |
|
FORCEINLINE BOOLEAN | vfatFCBIsReadOnly (PVFATFCB FCB) |
|
FORCEINLINE BOOLEAN | vfatVolumeIsFatX (PDEVICE_EXTENSION DeviceExt) |
|
FORCEINLINE VOID | vfatReportChange (IN PDEVICE_EXTENSION DeviceExt, IN PVFATFCB Fcb, IN ULONG FilterMatch, IN ULONG Action) |
|
NTSTATUS | VfatReadDisk (IN PDEVICE_OBJECT pDeviceObject, IN PLARGE_INTEGER ReadOffset, IN ULONG ReadLength, IN PUCHAR Buffer, IN BOOLEAN Override) |
|
NTSTATUS | VfatReadDiskPartial (IN PVFAT_IRP_CONTEXT IrpContext, IN PLARGE_INTEGER ReadOffset, IN ULONG ReadLength, IN ULONG BufferOffset, IN BOOLEAN Wait) |
|
NTSTATUS | VfatWriteDisk (IN PDEVICE_OBJECT pDeviceObject, IN PLARGE_INTEGER WriteOffset, IN ULONG WriteLength, IN OUT PUCHAR Buffer, IN BOOLEAN Override) |
|
NTSTATUS | VfatWriteDiskPartial (IN PVFAT_IRP_CONTEXT IrpContext, IN PLARGE_INTEGER WriteOffset, IN ULONG WriteLength, IN ULONG BufferOffset, IN BOOLEAN Wait) |
|
NTSTATUS | VfatBlockDeviceIoControl (IN PDEVICE_OBJECT DeviceObject, IN ULONG CtlCode, IN PVOID InputBuffer, IN ULONG InputBufferSize, IN OUT PVOID OutputBuffer, IN OUT PULONG pOutputBufferSize, IN BOOLEAN Override) |
|
NTSTATUS | VfatCleanup (PVFAT_IRP_CONTEXT IrpContext) |
|
NTSTATUS | VfatClose (PVFAT_IRP_CONTEXT IrpContext) |
|
NTSTATUS | VfatCloseFile (PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject) |
|
NTSTATUS | VfatCreate (PVFAT_IRP_CONTEXT IrpContext) |
|
NTSTATUS | FindFile (PDEVICE_EXTENSION DeviceExt, PVFATFCB Parent, PUNICODE_STRING FileToFindU, PVFAT_DIRENTRY_CONTEXT DirContext, BOOLEAN First) |
|
VOID | vfat8Dot3ToString (PFAT_DIR_ENTRY pEntry, PUNICODE_STRING NameU) |
|
NTSTATUS | VfatDirectoryControl (PVFAT_IRP_CONTEXT IrpContext) |
|
BOOLEAN | FsdDosDateTimeToSystemTime (PDEVICE_EXTENSION DeviceExt, USHORT DosDate, USHORT DosTime, PLARGE_INTEGER SystemTime) |
|
BOOLEAN | FsdSystemTimeToDosDateTime (PDEVICE_EXTENSION DeviceExt, PLARGE_INTEGER SystemTime, USHORT *pDosDate, USHORT *pDosTime) |
|
ULONG | vfatDirEntryGetFirstCluster (PDEVICE_EXTENSION pDeviceExt, PDIR_ENTRY pDirEntry) |
|
NTSTATUS | vfatFCBInitializeCacheFromVolume (PVCB vcb, PVFATFCB fcb) |
|
NTSTATUS | VfatUpdateEntry (IN PDEVICE_EXTENSION DeviceExt, PVFATFCB pFcb) |
|
BOOLEAN | vfatFindDirSpace (PDEVICE_EXTENSION DeviceExt, PVFATFCB pDirFcb, ULONG nbSlots, PULONG start) |
|
NTSTATUS | vfatRenameEntry (IN PDEVICE_EXTENSION DeviceExt, IN PVFATFCB pFcb, IN PUNICODE_STRING FileName, IN BOOLEAN CaseChangeOnly) |
|
NTSTATUS | VfatMoveEntry (IN PDEVICE_EXTENSION DeviceExt, IN PVFATFCB pFcb, IN PUNICODE_STRING FileName, IN PVFATFCB ParentFcb) |
|
NTSTATUS | VfatSetExtendedAttributes (PFILE_OBJECT FileObject, PVOID Ea, ULONG EaLength) |
|
VOID | VfatInitFastIoRoutines (PFAST_IO_DISPATCH FastIoDispatch) |
|
BOOLEAN NTAPI | VfatAcquireForLazyWrite (IN PVOID Context, IN BOOLEAN Wait) |
|
VOID NTAPI | VfatReleaseFromLazyWrite (IN PVOID Context) |
|
NTSTATUS | FAT12GetNextCluster (PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster, PULONG NextCluster) |
|
NTSTATUS | FAT12FindAndMarkAvailableCluster (PDEVICE_EXTENSION DeviceExt, PULONG Cluster) |
|
NTSTATUS | FAT12WriteCluster (PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite, ULONG NewValue, PULONG OldValue) |
|
NTSTATUS | FAT16GetNextCluster (PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster, PULONG NextCluster) |
|
NTSTATUS | FAT16FindAndMarkAvailableCluster (PDEVICE_EXTENSION DeviceExt, PULONG Cluster) |
|
NTSTATUS | FAT16WriteCluster (PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite, ULONG NewValue, PULONG OldValue) |
|
NTSTATUS | FAT32GetNextCluster (PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster, PULONG NextCluster) |
|
NTSTATUS | FAT32FindAndMarkAvailableCluster (PDEVICE_EXTENSION DeviceExt, PULONG Cluster) |
|
NTSTATUS | FAT32WriteCluster (PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite, ULONG NewValue, PULONG OldValue) |
|
NTSTATUS | OffsetToCluster (PDEVICE_EXTENSION DeviceExt, ULONG FirstCluster, ULONG FileOffset, PULONG Cluster, BOOLEAN Extend) |
|
ULONGLONG | ClusterToSector (PDEVICE_EXTENSION DeviceExt, ULONG Cluster) |
|
NTSTATUS | GetNextCluster (PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster, PULONG NextCluster) |
|
NTSTATUS | GetNextClusterExtend (PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster, PULONG NextCluster) |
|
NTSTATUS | CountAvailableClusters (PDEVICE_EXTENSION DeviceExt, PLARGE_INTEGER Clusters) |
|
NTSTATUS | WriteCluster (PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite, ULONG NewValue) |
|
NTSTATUS | GetDirtyStatus (PDEVICE_EXTENSION DeviceExt, PBOOLEAN DirtyStatus) |
|
NTSTATUS | FAT16GetDirtyStatus (PDEVICE_EXTENSION DeviceExt, PBOOLEAN DirtyStatus) |
|
NTSTATUS | FAT32GetDirtyStatus (PDEVICE_EXTENSION DeviceExt, PBOOLEAN DirtyStatus) |
|
NTSTATUS | SetDirtyStatus (PDEVICE_EXTENSION DeviceExt, BOOLEAN DirtyStatus) |
|
NTSTATUS | FAT16SetDirtyStatus (PDEVICE_EXTENSION DeviceExt, BOOLEAN DirtyStatus) |
|
NTSTATUS | FAT32SetDirtyStatus (PDEVICE_EXTENSION DeviceExt, BOOLEAN DirtyStatus) |
|
NTSTATUS | FAT32UpdateFreeClustersCount (PDEVICE_EXTENSION DeviceExt) |
|
PVFATFCB | vfatNewFCB (PDEVICE_EXTENSION pVCB, PUNICODE_STRING pFileNameU) |
|
NTSTATUS | vfatSetFCBNewDirName (PDEVICE_EXTENSION pVCB, PVFATFCB Fcb, PVFATFCB ParentFcb) |
|
NTSTATUS | vfatUpdateFCB (PDEVICE_EXTENSION pVCB, PVFATFCB Fcb, PVFAT_DIRENTRY_CONTEXT DirContext, PVFATFCB ParentFcb) |
|
VOID | vfatDestroyFCB (PVFATFCB pFCB) |
|
VOID | vfatDestroyCCB (PVFATCCB pCcb) |
|
VOID | vfatGrabFCB (PDEVICE_EXTENSION pVCB, PVFATFCB pFCB) |
|
VOID | vfatReleaseFCB (PDEVICE_EXTENSION pVCB, PVFATFCB pFCB) |
|
PVFATFCB | vfatGrabFCBFromTable (PDEVICE_EXTENSION pDeviceExt, PUNICODE_STRING pFileNameU) |
|
PVFATFCB | vfatMakeRootFCB (PDEVICE_EXTENSION pVCB) |
|
PVFATFCB | vfatOpenRootFCB (PDEVICE_EXTENSION pVCB) |
|
BOOLEAN | vfatFCBIsRoot (PVFATFCB FCB) |
|
NTSTATUS | vfatAttachFCBToFileObject (PDEVICE_EXTENSION vcb, PVFATFCB fcb, PFILE_OBJECT fileObject) |
|
NTSTATUS | vfatDirFindFile (PDEVICE_EXTENSION pVCB, PVFATFCB parentFCB, PUNICODE_STRING FileToFindU, PVFATFCB *fileFCB) |
|
NTSTATUS | vfatGetFCBForFile (PDEVICE_EXTENSION pVCB, PVFATFCB *pParentFCB, PVFATFCB *pFCB, PUNICODE_STRING pFileNameU) |
|
NTSTATUS | vfatMakeFCBFromDirEntry (PVCB vcb, PVFATFCB directoryFCB, PVFAT_DIRENTRY_CONTEXT DirContext, PVFATFCB *fileFCB) |
|
NTSTATUS | VfatGetStandardInformation (PVFATFCB FCB, PFILE_STANDARD_INFORMATION StandardInfo, PULONG BufferLength) |
|
NTSTATUS | VfatGetBasicInformation (PFILE_OBJECT FileObject, PVFATFCB FCB, PDEVICE_EXTENSION DeviceExt, PFILE_BASIC_INFORMATION BasicInfo, PULONG BufferLength) |
|
NTSTATUS | VfatQueryInformation (PVFAT_IRP_CONTEXT IrpContext) |
|
NTSTATUS | VfatSetInformation (PVFAT_IRP_CONTEXT IrpContext) |
|
NTSTATUS | VfatSetAllocationSizeInformation (PFILE_OBJECT FileObject, PVFATFCB Fcb, PDEVICE_EXTENSION DeviceExt, PLARGE_INTEGER AllocationSize) |
|
NTSTATUS | VfatFlush (PVFAT_IRP_CONTEXT IrpContext) |
|
NTSTATUS | VfatFlushVolume (PDEVICE_EXTENSION DeviceExt, PVFATFCB VolumeFcb) |
|
NTSTATUS | VfatFileSystemControl (PVFAT_IRP_CONTEXT IrpContext) |
|
NTSTATUS NTAPI | DriverEntry (PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) |
|
NTSTATUS NTAPI | VfatBuildRequest (PDEVICE_OBJECT DeviceObject, PIRP Irp) |
|
PVOID | VfatGetUserBuffer (IN PIRP Irp, IN BOOLEAN Paging) |
|
NTSTATUS | VfatLockUserBuffer (IN PIRP Irp, IN ULONG Length, IN LOCK_OPERATION Operation) |
|
BOOLEAN | VfatCheckForDismount (IN PDEVICE_EXTENSION DeviceExt, IN BOOLEAN Create) |
|
VOID NTAPI | VfatHandleDeferredWrite (IN PVOID IrpContext, IN PVOID Unused) |
|
NTSTATUS | VfatPnp (PVFAT_IRP_CONTEXT IrpContext) |
|
NTSTATUS | VfatRead (PVFAT_IRP_CONTEXT IrpContext) |
|
NTSTATUS | VfatWrite (PVFAT_IRP_CONTEXT *pIrpContext) |
|
NTSTATUS | NextCluster (PDEVICE_EXTENSION DeviceExt, ULONG FirstCluster, PULONG CurrentCluster, BOOLEAN Extend) |
|
NTSTATUS NTAPI | VfatShutdown (PDEVICE_OBJECT DeviceObject, PIRP Irp) |
|
VOID | vfatSplitPathName (PUNICODE_STRING PathNameU, PUNICODE_STRING DirNameU, PUNICODE_STRING FileNameU) |
|
BOOLEAN | vfatIsLongIllegal (WCHAR c) |
|
BOOLEAN | IsDotOrDotDot (PCUNICODE_STRING Name) |
|
NTSTATUS | VfatQueryVolumeInformation (PVFAT_IRP_CONTEXT IrpContext) |
|
NTSTATUS | VfatSetVolumeInformation (PVFAT_IRP_CONTEXT IrpContext) |
|