TFATFileSystem
Return to Unit FATFS
Description
To be documented
Class definitions
TFATFileSystem = class(TFileSystem)
constructor Create(ADriver:TFileSysDriver; AVolume:TDiskVolume; ADrive:TDiskDrive);
|
|
destructor Destroy; override;
|
|
private
| |
FFATType:TFATType;
|
|
FCaseFlags:Boolean;
|
Allow writing entries with the Lowercase Flags set (Reading is always supported) |
FVolumeFlags:LongWord;
|
Volume Dirty/Error flags |
FInfoSectorEnable:Boolean;
|
Enable use of FAT32 info sector for free cluster count and next free cluster |
FInfoImmediateUpdate:Boolean;
|
Enable immediate update of FAT32 info sector on allocate or release of clusters |
FEndOfFile:LongWord;
|
|
FEndOfCluster:LongWord;
|
|
FFreeCluster:LongWord;
|
|
FBadCluster:LongWord;
|
|
FMediaCluster:LongWord;
|
|
FStartCluster:LongWord;
|
|
FHardError:LongWord;
|
|
FCleanShutdown:LongWord;
|
|
FReservedBits:LongWord;
|
|
FNumberOfFats:Word;
|
Usually 2 |
FSectorsPerFat:LongWord;
|
|
FSectorsPerCluster:LongWord;
|
Usually 1,2,4,8,16,32,64,128 etc |
FReservedSectors:LongWord;
|
|
FRootEntryCount:LongWord;
|
Number of Directory entries in Root Directory |
FRootSectorCount:LongWord;
|
Number of Sectors occupied by Root Directory |
FRootStartSector:LongWord;
|
First Sector of Root Directory (Relative to StartSector) |
FInfoSector:LongWord;
|
Relative to StartSector |
FInfoBackup:LongWord;
|
Relative to StartSector |
FRootStartCluster:LongWord;
|
First Cluster of Root Directory |
FActiveFat:Word;
|
Zero based number of active FAT (Always 0 for FAT12/16) |
FFatMirroring:Boolean;
|
FAT Mirroring Enabled if True (Always True for FAT12/16) |
FEntriesPerSector:LongWord;
|
Number of Directory entries in a Sector |
FEntriesPerCluster:LongWord;
|
Number of Directory entries in a Cluster |
FEntriesPerBlock:LongWord;
|
Number of FAT entries per Block |
FSectorsPerBlock:LongWord;
|
Number of Sectors per Block of FAT entries |
FBlockShiftCount:Word;
|
Shift count for Cluster <-> BlockNo |
FSectorShiftCount:Word;
|
Shift count for Sector <-> Cluster |
FClusterShiftCount:Word;
|
Shift count for Cluster <-> Bytes |
FDataStartSector:LongWord;
|
First Sector of First Data Cluster (Relative to StartSector) |
FDataClusterCount:LongWord;
|
Number of usable data clusters |
FTotalClusterCount:LongWord;
|
Total number of clusters including reserved clusters |
FLastFreeCluster:LongWord;
|
Or $FFFFFFFF if not known |
FFreeClusterCount:LongWord;
|
Or $FFFFFFFF if not known |
FClusterSize:LongWord;
|
Size of a Cluster in Bytes (Max 65536 > Word) |
FInfoBuffer:Pointer;
|
Buffer for info sector handling (Sector size) |
FInfoLock:TMutexHandle;
|
Lock for info buffer |
FNameBuffer:Pointer;
|
Buffer for long name handling |
FNameLock:TMutexHandle;
|
Lock for name buffer |
FReadBuffer:Pointer;
|
Buffer for partial cluster entry reads (Cluster size) |
FReadLock:TMutexHandle;
|
Lock for read buffer |
FWriteBuffer:Pointer;
|
Buffer for partial cluster entry writes (Cluster size) |
FWriteLock:TMutexHandle;
|
Lock for write buffer |
FClusterBuffer:Pointer;
|
Buffer of exactly cluster size |
FClusterLock:TMutexHandle;
|
Lock for cluster buffer |
function InfoLock:Boolean;
|
|
function InfoUnlock:Boolean;
|
|
function NameLock:Boolean;
|
|
function NameUnlock:Boolean;
|
|
function ReadLock:Boolean;
|
|
function ReadUnlock:Boolean;
|
|
function WriteLock:Boolean;
|
|
function WriteUnlock:Boolean;
|
|
function ClusterLock:Boolean;
|
|
function ClusterUnlock:Boolean;
|
|
function IsRemovable:Boolean;
|
|
function GetHardError:Boolean;
|
|
procedure SetHardError(AValue:Boolean);
|
|
function GetCleanShutdown:Boolean;
|
|
procedure SetCleanShutdown(AValue:Boolean);
|
|
function GetVolumeFlags:LongWord;
|
|
function SetVolumeFlags(AFlags:LongWord):Boolean;
|
|
function UpdateInfoSector:Boolean;
|
|
function FillCluster(ACluster:LongWord; AValue:Byte):Boolean;
|
|
function ReadCluster(ACluster:LongWord; var ABuffer):Boolean;
|
|
function WriteCluster(ACluster:LongWord; const ABuffer):Boolean;
|
|
function GetNextFreeCluster:LongWord;
|
|
function GetFreeClusterCount:LongWord;
|
|
function SetNextFreeCluster(ACluster:LongWord):Boolean;
|
|
function SetFreeClusterCount(ACount:LongWord):Boolean;
|
|
function GetStartCluster(AEntry:TDiskEntry):LongWord;
|
|
function GetParentCluster(AParent:TDiskEntry):LongWord;
|
|
function CheckClusterBlock(ACluster,ANext:LongWord):Boolean;
|
|
function GetNextChainCluster(AParent:LongWord):LongWord;
|
|
function GetLastChainCluster(AParent:LongWord):LongWord;
|
|
function GetChainClusterCount(AParent:LongWord):LongWord;
|
|
function GetCluster(ACluster:LongWord):LongWord;
|
|
function SetCluster(ACluster,AValue:LongWord;ACommit:Boolean):Boolean;
|
|
function AllocCluster(AParent:LongWord; var ACluster:LongWord; ACount:LongWord):Boolean;
|
|
function ReleaseCluster(AParent,ACluster:LongWord):Boolean;
|
|
function CheckDirectoryRoot(AParent:TDiskEntry):Boolean;
|
|
function CheckDirectoryStart(AParent:TDiskEntry):Boolean;
|
|
function GetFirstDirectorySector(AParent:TDiskEntry; var ASector:LongWord):Boolean;
|
|
function GetNextDirectorySector(AParent:TDiskEntry; var ASector:LongWord; AWrite:Boolean):Boolean;
|
|
function GetDirectorySectorCount(AParent:TDiskEntry; AWrite:Boolean):LongWord;
|
|
function GetDirectorySectorOffset(AParent:TDiskEntry):LongWord;
|
|
function AllocDirectory(AParent:TDiskEntry; ACount:Byte; var AOffset,ASector:LongWord):Boolean;
|
|
function ReleaseDirectory(AParent:TDiskEntry; ACount:Byte; AOffset,ASector:LongWord):Boolean;
|
|
function GetBlockShiftCount(ASize:Word;AType:TFATType):Word;
|
|
function GetSectorShiftCount(ASectorsPerCluster:LongWord):Word;
|
|
function GetClusterShiftCount(AClusterSize:LongWord):Word;
|
|
function GetEntriesPerBlock(ASize:Word; AType:TFATType):LongWord;
|
|
function GetSectorsPerBlock(ASize:Word; AType:TFATType):LongWord;
|
|
procedure ReadConvert(ADirectory:PFATDirectory);
|
|
procedure WriteConvert(ADirectory:PFATDirectory);
|
|
function NameToEntry(AName:Pointer; AEntry:TFATDiskEntry; AShort:Boolean):Boolean;
|
|
function EntryToName(AEntry:TFATDiskEntry; AName:Pointer; AShort:Boolean):Boolean;
|
|
function BufferToName(ABuffer:Pointer; var AName:String):Boolean;
|
|
function NameToBuffer(const AName:String; ABuffer:Pointer):Boolean;
|
|
function DirectoryToBuffer(ADirectory,ABuffer:Pointer; ACount,AChecksum:Byte; ALast:Boolean):Boolean;
|
|
function BufferToDirectory(ABuffer,ADirectory:Pointer; ACount,AChecksum:Byte; ALast:Boolean):Boolean;
|
|
function DirectoryToEntry(ADirectory:Pointer; AEntry:TFATDiskEntry; AShort:Boolean):Boolean;
|
|
function EntryToDirectory(AEntry:TFATDiskEntry; ADirectory:Pointer; AShort:Boolean):Boolean;
|
|
function FATTypeToFileSysType(AFATType:TFATType):TFileSysType;
|
|
protected
| |
function LoadMaxFile:Integer; override;
|
|
function LoadMaxPath:Integer; override;
|
|
function LoadAttributes:LongWord; override;
|
|
function LoadMaxAttributes:LongWord; override;
|
|
function LoadMinFileTime:TFileTime; override;
|
|
function LoadSystemName:String; override;
|
|
function LoadVolumeName:String; override;
|
|
function LoadVolumeSerial:LongWord; override;
|
|
function LoadFileSysType:TFileSysType; override;
|
|
function SetVolumeName(const AName:String):Boolean;
|
|
function SetVolumeSerial(ASerial:LongWord):Boolean;
|
|
function ReadEntry(AParent,AEntry:TDiskEntry; var ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer; override;
|
|
function WriteEntry(AParent,AEntry:TDiskEntry; const ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer; override;
|
|
function LoadTables:Boolean; override;
|
|
function LoadBlocks:Boolean; override;
|
|
function LoadEntries(AParent:TDiskEntry):Boolean; override;
|
|
function LoadTable(ATableNo:LongWord):Boolean; override;
|
|
function LoadBlock(ABlockNo:LongWord):Boolean; override;
|
|
function LoadEntry(AParent:TDiskEntry; ABuffer:Pointer; var ABlockOffset,AEntryOffset,ABlockSector,AEntrySector:LongWord):Boolean;
|
Not override |
function LoadLong(AParent:TDiskEntry; ABuffer:Pointer; var ABlockOffset,AEntryOffset,ABlockSector,AEntrySector:LongWord):Boolean;
|
Not override |
function AddEntry(AParent:TDiskEntry; const AName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry; override;
|
|
function AddEntryEx(AParent:TDiskEntry; const AName,AAltName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry; override;
|
|
function RemoveEntry(AParent,AEntry:TDiskEntry):Boolean; override;
|
|
function RenameEntry(AParent,AEntry:TDiskEntry; const AName:String):Boolean; override;
|
|
function RenameEntryEx(AParent,AEntry:TDiskEntry; const AAltName:String):Boolean; override;
|
|
function MoveEntry(ASource,ADest,AEntry:TDiskEntry):Boolean; override;
|
|
function SetBlock(ABlock:TDiskBlock):Boolean; override;
|
|
function SetEntry(AParent,AEntry:TDiskEntry):Boolean; override;
|
|
function SetLong(AParent,AEntry:TDiskEntry):Boolean; {Not override}
|
|
function SizeEntry(AParent,AEntry:TDiskEntry; const ASize:Int64):Boolean; override;
|
|
function GetBlock(ABlockNo:LongWord):TDiskBlock; override;
|
|
function GetBlockEx(ABlockNo:LongWord; AWrite:Boolean):TDiskBlock; override;
|
|
function CheckName(const AName:String):Boolean; override;
|
|
function CountName(const AName:String):Byte;
|
|
function CompareName(const AName,AMatch:String; AWildcard:Boolean):Boolean; override;
|
|
function ChecksumName(AEntry:TDiskEntry):Byte;
|
|
function GenerateName(AParent,AEntry:TDiskEntry; const AName:String):String;
|
|
function GetNameFlags(const AName:String):LongWord;
|
|
function CheckFlagName(const AName:String):Boolean;
|
|
function ValidateName(AName:Pointer):Boolean;
|
|
function ValidateDirectory(ADirectory:Pointer):Boolean;
|
|
public
| |
property CaseFlags:Boolean read FCaseFlags write FCaseFlags;
|
|
property OemConvert:Boolean read FOemConvert write FOemConvert;
|
|
property NumericTail:Boolean read FNumericTail write FNumericTail;
|
|
property ReadOnly:Boolean read FReadOnly write FReadOnly;
|
|
property LongNames:Boolean read FLongNames write FLongNames;
|
|
property CasePreserved:Boolean read FCasePreserved write FCasePreserved;
|
|
property UnicodeNames:Boolean read FUnicodeNames write FUnicodeNames;
|
|
property InfoSectorEnable:Boolean read FInfoSectorEnable write FInfoSectorEnable;
|
|
property InfoImmediateUpdate:Boolean read FInfoImmediateUpdate write FInfoImmediateUpdate;
|
|
property HardError:Boolean read GetHardError write SetHardError;
|
|
property CleanShutdown:Boolean read GetCleanShutdown write SetCleanShutdown;
|
|
function FileSystemInit:Boolean; override;
|
|
function MountFileSystem:Boolean; override;
|
|
function DismountFileSystem:Boolean; override;
|
|
function InitializeFileSystem(ASectorsPerCluster:LongWord; AFileSysType:TFileSysType):Boolean; override;
|
|
function GetDriveLabel:String; override;
|
|
function SetDriveLabel(const ALabel:String):Boolean; override;
|
|
function SetDriveSerial(ASerial:LongWord):Boolean; override;
|
|
function GetDriveFreeSpaceEx:Int64; override;
|
|
function GetDriveTotalSpaceEx:Int64; override;
|
|
function GetDriveInformation(var AClusterSize:LongWord; var ATotalClusterCount,AFreeClusterCount:Int64):Boolean; override;
|
Function declarations
constructor TFATFileSystem.Create(ADriver:TFileSysDriver; AVolume:TDiskVolume; ADrive:TDiskDrive);
Note | None documented |
---|
destructor TFATFileSystem.Destroy;
Note | None documented |
---|
function TFATFileSystem.InfoLock:Boolean;
Note | None documented |
---|
function TFATFileSystem.InfoUnlock:Boolean;
Note | None documented |
---|
function TFATFileSystem.NameLock:Boolean;
Note | None documented |
---|
function TFATFileSystem.NameUnlock:Boolean;
Note | None documented |
---|
function TFATFileSystem.ReadLock:Boolean;
Note | None documented |
---|
function TFATFileSystem.ReadUnlock:Boolean;
Note | None documented |
---|
function TFATFileSystem.WriteLock:Boolean;
Note | None documented |
---|
function TFATFileSystem.WriteUnlock:Boolean;
Note | None documented |
---|
function TFATFileSystem.ClusterLock:Boolean;
Note | None documented |
---|
function TFATFileSystem.ClusterUnlock:Boolean;
Note | None documented |
---|
function TFATFileSystem.IsRemovable:Boolean;
Note | None documented |
---|
function TFATFileSystem.GetHardError:Boolean;
Note | Bit is on for Good and off for Error. Opposite to CleanShutdown. |
---|
procedure TFATFileSystem.SetHardError(AValue:Boolean);
Note | Bit is on for Good and off for Error. Opposite to CleanShutdown. |
---|
function TFATFileSystem.GetCleanShutdown:Boolean;
Note | Bit is on for Clean and off for Dirty. Opposite to HardError. |
---|
procedure TFATFileSystem.SetCleanShutdown(AValue:Boolean);
Note | Bit is on for Clean and off for Dirty. Opposite to HardError. |
---|
function TFATFileSystem.GetVolumeFlags:LongWord;
Note | None documented |
---|
function TFATFileSystem.SetVolumeFlags(AFlags:LongWord):Boolean;
Note | None documented |
---|
function TFATFileSystem.UpdateInfoSector:Boolean;
Note | None documented |
---|
function TFATFileSystem.FillCluster(ACluster:LongWord; AValue:Byte):Boolean;
Note | None documented |
---|
function TFATFileSystem.ReadCluster(ACluster:LongWord; var ABuffer):Boolean;
Note | Performs conversion of Cluster to Sector based on Offsets
Sector is relative to StartSector and DataStartSector of the FileSystem |
---|
function TFATFileSystem.WriteCluster(ACluster:LongWord; const ABuffer):Boolean;
Note | Performs conversion of Cluster to Sector based on Offsets
Sector is relative to StartSector and DataStartSector of the FileSystem |
---|
function TFATFileSystem.GetNextFreeCluster:LongWord;
Note | For speed does direct FAT lookup instead of GetCluster
For speed uses the LastFreeCluster after first lookup |
---|
function TFATFileSystem.GetFreeClusterCount:LongWord;
Note | For speed does direct FAT lookup instead of GetCluster
For speed uses the FreeClusterCount after first lookup |
---|
function TFATFileSystem.SetNextFreeCluster(ACluster:LongWord):Boolean;
Note | None documented |
---|
function TFATFileSystem.SetFreeClusterCount(ACount:LongWord):Boolean;
Note | None documented |
---|
function TFATFileSystem.GetStartCluster(AEntry:TDiskEntry):LongWord;
Note | Handles FAT12/16 Root special case
Differs from GetParentCluster below. Used by AllocDirectory.
|
---|
function TFATFileSystem.GetParentCluster(AParent:TDiskEntry):LongWord;
Note | Handles FAT12/16 Root special case
Differs from GetStartCluster above. Used by AddEntry.
|
---|
function TFATFileSystem.CheckClusterBlock(ACluster,ANext:LongWord):Boolean;
Note | None documented |
---|
function TFATFileSystem.GetNextChainCluster(AParent:LongWord):LongWord;
Note | Returns zero on end of chain or error |
---|
function TFATFileSystem.GetLastChainCluster(AParent:LongWord):LongWord;
Note | Returns zero on error or parent on end of chain |
---|
function TFATFileSystem.GetChainClusterCount(AParent:LongWord):LongWord;
Note | Returns zero on error |
---|
function TFATFileSystem.GetCluster(ACluster:LongWord):LongWord;
Note | None documented |
---|
function TFATFileSystem.SetCluster(ACluster,AValue:LongWord; ACommit:Boolean):Boolean;
Note | None documented |
---|
function TFATFileSystem.AllocCluster(AParent:LongWord; var ACluster:LongWord; ACount:LongWord):Boolean;
Note | Add to the parent chain if supplied |
---|
function TFATFileSystem.ReleaseCluster(AParent,ACluster:LongWord):Boolean;
Note | Update the parent cluster if supplied |
---|
function TFATFileSystem.CheckDirectoryRoot(AParent:TDiskEntry):Boolean;
Note | Handles FAT12/16 Root special case |
---|
function TFATFileSystem.CheckDirectoryStart(AParent:TDiskEntry):Boolean;
Note | Handles FAT12/16 Root special case |
---|
function TFATFileSystem.GetFirstDirectorySector(AParent:TDiskEntry; var ASector:LongWord):Boolean;
Note | Handles FAT12/16 Root special case |
---|
function TFATFileSystem.GetNextDirectorySector(AParent:TDiskEntry; var ASector:LongWord; AWrite:Boolean):Boolean;
Note | Handles FAT12/16 Root special case |
---|
function TFATFileSystem.GetDirectorySectorCount(AParent:TDiskEntry; AWrite:Boolean):LongWord;
Note | Handles FAT12/16 Root special case |
---|
function TFATFileSystem.GetDirectorySectorOffset(AParent:TDiskEntry):LongWord;
Note | Handles FAT12/16 Root special case |
---|
function TFATFileSystem.AllocDirectory(AParent:TDiskEntry; ACount:Byte; var AOffset,ASector:LongWord):Boolean;
Note | Allocate new Cluster if no free available (and not FAT12/16 Root)
Offset and Sector are undefined on call
|
---|
function TFATFileSystem.ReleaseDirectory(AParent:TDiskEntry; ACount:Byte; AOffset,ASector:LongWord):Boolean;
Note | Offset and Sector point to the first directory entry on call |
---|
function TFATFileSystem.GetBlockShiftCount(ASize:Word; AType:TFATType):Word;
Note | None documented |
---|
function TFATFileSystem.GetSectorShiftCount(ASectorsPerCluster:LongWord):Word;
Note | None documented |
---|
function TFATFileSystem.GetClusterShiftCount(AClusterSize:LongWord):Word;
Note | None documented |
---|
function TFATFileSystem.GetEntriesPerBlock(ASize:Word; AType:TFATType):LongWord;
Note | None documented |
---|
function TFATFileSystem.GetSectorsPerBlock(ASize:Word; AType:TFATType):LongWord;
Note | None documented |
---|
procedure TFATFileSystem.ReadConvert(ADirectory:PFATDirectory);
Note | None documented |
---|
procedure TFATFileSystem.WriteConvert(ADirectory:PFATDirectory);
Note | None documented |
---|
function TFATFileSystem.NameToEntry(AName:Pointer; AEntry:TFATDiskEntry; AShort:Boolean):Boolean;
Note | Should only be called by DirectoryToEntry |
---|
function TFATFileSystem.EntryToName(AEntry:TFATDiskEntry; AName:Pointer; AShort:Boolean):Boolean;
Note | Should only be called by EntryToDirectory and ChecksumName |
---|
function TFATFileSystem.BufferToName(ABuffer:Pointer; var AName:String):Boolean;
Note | Should only be called by LoadLong |
---|
function TFATFileSystem.NameToBuffer(const AName:String; ABuffer:Pointer):Boolean;
Note | Should only be called by SetLong |
---|
function TFATFileSystem.DirectoryToBuffer(ADirectory,ABuffer:Pointer; ACount,AChecksum:Byte; ALast:Boolean):Boolean;
Note | Should only be called by LoadLong
Caller must check the lfnEntryLast flag |
---|
function TFATFileSystem.BufferToDirectory(ABuffer,ADirectory:Pointer; ACount,AChecksum:Byte; ALast:Boolean):Boolean;
Note | Should only be called by SetLong |
---|
function TFATFileSystem.DirectoryToEntry(ADirectory:Pointer; AEntry:TFATDiskEntry; AShort:Boolean):Boolean;
Note | Should only be called by LoadEntry and LoadLong |
---|
function TFATFileSystem.EntryToDirectory(AEntry:TFATDiskEntry; ADirectory:Pointer; AShort:Boolean):Boolean;
Note | Should only be called by SetEntry and SetLong |
---|
function TFATFileSystem.FATTypeToFileSysType(AFATType:TFATType):TFileSysType;
Note | None documented |
---|
function TFATFileSystem.LoadMaxFile:Integer;
Note | None documented |
---|
function TFATFileSystem.LoadMaxPath:Integer;
Note | None documented |
---|
function TFATFileSystem.LoadAttributes:LongWord;
Note | None documented |
---|
function TFATFileSystem.LoadMaxAttributes:LongWord;
Note | None documented |
---|
function TFATFileSystem.LoadMinFileTime:TFileTime; override;
Note | None documented |
---|
function TFATFileSystem.LoadSystemName:String;
Note | None documented |
---|
function TFATFileSystem.LoadVolumeName:String;
Note | None documented |
---|
function TFATFileSystem.LoadVolumeSerial:LongWord;
Note | None documented |
---|
function TFATFileSystem.LoadFileSysType:TFileSysType;
Note | None documented |
---|
function TFATFileSystem.SetVolumeName(const AName:String):Boolean;
Note | None documented |
---|
function TFATFileSystem.SetVolumeSerial(ASerial:LongWord):Boolean;
Note | None documented |
---|
function TFATFileSystem.ReadEntry(AParent,AEntry:TDiskEntry; var ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer;
Note | The caller must ensure the entry is large enough or the read will fail |
---|
function TFATFileSystem.WriteEntry(AParent,AEntry:TDiskEntry; const ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer;
Note | The caller must ensure the entry is large enough or the write will fail |
---|
function TFATFileSystem.LoadTables:Boolean;
Note | None documented |
---|
function TFATFileSystem.LoadBlocks:Boolean;
Note | None documented |
---|
function TFATFileSystem.LoadEntries(AParent:TDiskEntry):Boolean;
Note | None documented |
---|
function TFATFileSystem.LoadTable(ATableNo:LongWord):Boolean;
Note | None documented |
---|
function TFATFileSystem.LoadBlock(ABlockNo:LongWord):Boolean;
Note | LoadBlock reads up to SectorsPerBlock sectors from the disk |
---|
function TFATFileSystem.LoadEntry(AParent:TDiskEntry; ABuffer:Pointer; var ABlockOffset,AEntryOffset,ABlockSector,AEntrySector:LongWord):Boolean;
Note | Offset and Sector point to the first directory entry of the entry on call
Offset and Sector point to the last directory entry of the entry on return
|
---|
function TFATFileSystem.LoadLong(AParent:TDiskEntry; ABuffer:Pointer; var ABlockOffset,AEntryOffset,ABlockSector,AEntrySector:LongWord):Boolean;
Note | Offset and Sector point to the first directory entry of the entry on call
Offset and Sector point to the last directory entry of the entry on return
|
---|
function TFATFileSystem.AddEntry(AParent:TDiskEntry; const AName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry;
Reference | Add a reference on the returned entry if True |
---|
function TFATFileSystem.AddEntryEx(AParent:TDiskEntry; const AName,AAltName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry;
Reference | Add a reference on the returned entry if True |
---|---|
Note | If AltName already exists then a generated one will be provided, will not fail due to AltName. |
function TFATFileSystem.RemoveEntry(AParent,AEntry:TDiskEntry):Boolean;
Note | None documented |
---|
function TFATFileSystem.RenameEntry(AParent,AEntry:TDiskEntry; const AName:String):Boolean;
Note | None documented |
---|
function TFATFileSystem.RenameEntryEx(AParent,AEntry:TDiskEntry; const AAltName:String):Boolean;
Note | None documented |
---|
function TFATFileSystem.MoveEntry(ASource,ADest,AEntry:TDiskEntry):Boolean;
Note | None documented |
---|
function TFATFileSystem.SetBlock(ABlock:TDiskBlock):Boolean;
Note | SetBlock writes up to SectorsPerBlock sectors to the disk |
---|
function TFATFileSystem.SetEntry(AParent,AEntry:TDiskEntry):Boolean;
Note | Should only be called by SetTime/SetAttr/SetSize/Rename/Move/Add
Calls SetLong if EntryCount > 1 |
---|
function TFATFileSystem.SetLong(AParent,AEntry:TDiskEntry):Boolean;
Note | Should only be called by Rename/Move/Add
SetLong updates the EntryOffset/Sector but EntryCount must be correct
|
---|
function TFATFileSystem.SizeEntry(AParent,AEntry:TDiskEntry; const ASize:Int64):Boolean;
Note | None documented |
---|
function TFATFileSystem.GetBlock(ABlockNo:LongWord):TDiskBlock;
Note | Overidden to implement multiple entry blocks |
---|
function TFATFileSystem.GetBlockEx(ABlockNo:LongWord; AWrite:Boolean):TDiskBlock;
Note | Overidden to implement multiple entry blocks |
---|
function TFATFileSystem.CheckName(const AName:String):Boolean;
Note | None documented |
---|
function TFATFileSystem.CountName(const AName:String):Byte;
Note | None documented |
---|
function TFATFileSystem.CompareName(const AName,AMatch:String; AWildcard:Boolean):Boolean;
Note | None documented |
---|
function TFATFileSystem.ChecksumName(AEntry:TDiskEntry):Byte;
Note | None documented |
---|
function TFATFileSystem.GenerateName(AParent,AEntry:TDiskEntry; const AName:String):String;
Note | None documented |
---|
function TFATFileSystem.GetNameFlags(const AName:String):LongWord;
Note | None documented |
---|
function TFATFileSystem.CheckFlagName(const AName:String):Boolean;
Note | None documented |
---|
function TFATFileSystem.ValidateName(AName:Pointer):Boolean;
Note | None documented |
---|
function TFATFileSystem.ValidateDirectory(ADirectory:Pointer):Boolean;
Note | None documented |
---|
function TFATFileSystem.FileSystemInit:Boolean;
Note | None documented |
---|
function TFATFileSystem.MountFileSystem:Boolean;
Note | None documented |
---|
function TFATFileSystem.DismountFileSystem:Boolean;
Note | None documented |
---|
function TFATFileSystem.InitializeFileSystem(ASectorsPerCluster:LongWord; AFileSysType:TFileSysType):Boolean;
Note | None documented |
---|
function TFATFileSystem.GetDriveLabel:String;
Note | Overidden to Account for Volume Label entry in Root |
---|
function TFATFileSystem.SetDriveLabel(const ALabel:String):Boolean;
Note | None documented |
---|
function TFATFileSystem.SetDriveSerial(ASerial:LongWord):Boolean;
Note | None documented |
---|
function TFATFileSystem.GetDriveFreeSpaceEx:Int64;
Note | None documented |
---|
function TFATFileSystem.GetDriveTotalSpaceEx:Int64;
Note | None documented |
---|
function TFATFileSystem.GetDriveInformation(var AClusterSize:LongWord; var ATotalClusterCount,AFreeClusterCount:Int64):Boolean;
Note | None documented |
---|
Return to Unit Reference