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 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.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.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.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.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