TFileSystem
Return to Unit Filesystem
Description
To be documented
Class definitions
TFileSystem = class(TListObject)
 constructor Create(ADriver:TFileSysDriver; AVolume:TDiskVolume; ADrive:TDiskDrive);
 | 
|
 destructor Destroy; override;
 | 
|
private 
 | |
 FLock:TSynchronizerHandle;
 | 
|
 FLocalLock:TMutexHandle;
 | 
|
protected 
 | |
 FDriver:TFileSysDriver;
 | 
|
 FVolume:TDiskVolume;
 | 
|
 FDrive:TDiskDrive;
 | 
|
 FPathChar:String;
 | 
Path separator character | 
 FNameChar:String;
 | 
Name separator character | 
 FFileChar:String;
 | 
File separator character | 
 FRootChar:String;
 | 
Root specifier character (eg C:) | 
 FRootName:String;
 | 
|
 FRootPath:String;
 | 
Root Path must be prefixed with \\. | 
 FMaxFile:Integer;
 | 
|
 FMaxPath:Integer;
 | 
|
 FMaxAltFile:Integer;
 | 
|
 FMaxAltPath:Integer;
 | 
|
 FAttributes:LongWord;
 | 
|
 FMaxAttributes:LongWord;
 | 
|
 FMaskAttributes:LongWord;
 | 
|
 FMountPointTag:LongWord;
 | 
|
 FSymbolicLinkTag:LongWord;
 | 
|
 FMinFileTime:TFileTime;
 | 
|
 FSystemName:String;
 | 
|
 FVolumeName:String;
 | 
|
 FVolumeGUID:String;
 | 
|
 FVolumeSerial:LongWord;
 | 
|
 FFileSysType:TFileSysType;
 | 
|
 FSectorSize:Word;
 | 
|
 FStartSector:Int64;
 | 
|
 FSectorCount:LongWord;
 | 
|
 FRoot:TDiskEntry;
 | 
|
 FCurrentIndex:LongWord;
 | 
TLS Index for storing current directory | 
 FCurrentEntry:TDiskEntry;
 | 
Current directory when global current directory is enabled | 
 FChunks:TFileSysList;
 | 
|
 FTables:TFileSysList;
 | 
|
 FBlocks:TFileSysList;
 | 
|
 FEntries:TFileSysTree;
 | 
|
 FCatalogs:TFileSysList;
 | 
|
 FAcls:TFileSysList;
 | 
|
 FChunkLocal:TMutexHandle;
 | 
Local Lock shared by all DiskChunk objects | 
 FTableLocal:TMutexHandle;
 | 
Local Lock shared by all DiskTable objects | 
 FBlockLocal:TMutexHandle;
 | 
Local Lock shared by all DiskBlock objects | 
 FEntryLocal:TMutexHandle;
 | 
Local Lock shared by all DiskEntry objects | 
 FCatalogLocal:TMutexHandle;
 | 
Local Lock shared by all DiskCatalog objects | 
 FSecurityLocal:TMutexHandle;
 | 
Local Lock shared by all DiskSecurity objects | 
 FAclLocal:TMutexHandle;
 | 
Local Lock shared by all DiskAcl objects | 
 FAceLocal:TMutexHandle;
 | 
Local Lock shared by all DiskAce objects | 
 FMarkDirty:Boolean;
 | 
Mark the volume as dirty when dismounting (Either by request or due to error) | 
 FMarkClean:Boolean;
 | 
Mark the volume as clean when dismounting (Only by request) | 
 FMarkError:Boolean;
 | 
Error was encounted on volume, mark as dirty when dismounting | 
 FLogDirty:Boolean;
 | 
LogFile was dirty when mounted (if supported by filesystem) | 
 FMountDirty:Boolean;
 | 
Volume was dirty when mounted, leave marked as dirty when dismounting | 
 FOemConvert:Boolean;
 | 
Default to True overidden by descendants if not supported | 
 FNumericTail:Boolean;
 | 
Default to True overidden by descendants if not supported | 
 FReadOnly:Boolean;
 | 
Default to False overidden by descendants if True | 
 FLongNames:Boolean;
 | 
Default to True overidden by descendants if not supported | 
 FDataStreams:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FReparsePoints:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FCaseSensitive:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FCasePreserved:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FUnicodeNames:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FPersistentAcls:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FFileCompression:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FVolumeQuotas:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FSparseFiles:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FRemoteStorage:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FVolumeCompressed:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FObjectIds:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FEncryption:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FBootCatalog:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FVirtualVolume:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FFolderEncryption:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FFolderCompression:Boolean;
 | 
Default to False overidden by descendants if supported | 
 FBootSector:LongWord;
 | 
Relative to StartSector | 
 FBootBackup:LongWord;
 | 
Relative to StartSector | 
 FSectorBuffer:Pointer;
 | 
Buffer of exactly sector size | 
 FSectorLock:TMutexHandle;
 | 
Lock for sector buffer | 
 function AcquireLock:Boolean;
 | 
|
 function ReleaseLock:Boolean;
 | 
|
 function SectorLock:Boolean;
 | 
|
 function SectorUnlock:Boolean;
 | 
|
 procedure SetDrive(ADrive:TDiskDrive); virtual;
 | 
|
 procedure SetVolume(AVolume:TDiskVolume); virtual;
 | 
|
 function GetPathChar:String; virtual;
 | 
|
 function GetNameChar:String; virtual;
 | 
|
 function GetFileChar:String; virtual;
 | 
|
 function GetRootChar:String; virtual;
 | 
|
 function GetRootName:String; virtual;
 | 
|
 function GetRootPath:String; virtual;
 | 
|
 function GetSystemName:String; virtual;
 | 
|
 function GetVolumeName:String; virtual;
 | 
|
 function GetVolumeGUID:String; virtual;
 | 
|
 function LoadPathChar:String; virtual;
 | 
|
 function LoadNameChar:String; virtual;
 | 
|
 function LoadFileChar:String; virtual;
 | 
|
 function LoadRootChar:String; virtual;
 | 
|
 function LoadRootName:String; virtual;
 | 
|
 function LoadRootPath:String; virtual;
 | 
|
 function LoadMaxFile:Integer; virtual;
 | 
|
 function LoadMaxPath:Integer; virtual;
 | 
|
 function LoadMaxAltFile:Integer; virtual;
 | 
|
 function LoadMaxAltPath:Integer; virtual;
 | 
|
 function LoadAttributes:LongWord; virtual;
 | 
Get the Volume Attributes | 
 function LoadMaxAttributes:LongWord; virtual;
 | 
Get the Maximum File Attributes (used when setting file attributes) | 
 function LoadMaskAttributes:LongWord; virtual;
 | 
Get the File Attributes Mask (used when getting file attributes) | 
 function LoadMountPointTag:LongWord; virtual;
 | 
|
 function LoadSymbolicLinkTag:LongWord; virtual;
 | 
|
 function LoadMinFileTime:TFileTime; virtual;
 | 
|
 function LoadSystemName:String; virtual;
 | 
|
 function LoadVolumeName:String; virtual;
 | 
|
 function LoadVolumeGUID:String; virtual;
 | 
|
 function LoadVolumeSerial:LongWord; virtual;
 | 
|
 function LoadFileSysType:TFileSysType; virtual;
 | 
|
 function LoadSectorSize:Word; virtual;
 | 
|
 function LoadStartSector:Int64; virtual;
 | 
|
 function LoadSectorCount:LongWord; virtual;
 | 
|
 function GetCurrent:TDiskEntry; virtual;
 | 
|
 function SetCurrent(ACurrent:TDiskEntry):Boolean; virtual;
 | 
|
 function FillSectors(ASector,ACount:LongWord; AValue:Byte):Boolean;
 | 
|
 function ReadSectors(ASector,ACount:LongWord; var ABuffer):Boolean;
 | 
|
 function WriteSectors(ASector,ACount:LongWord; const ABuffer):Boolean;
 | 
|
 function ReadEntry(AParent,AEntry:TDiskEntry; var ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer; virtual;
 | 
|
 function WriteEntry(AParent,AEntry:TDiskEntry; const ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer; virtual;
 | 
|
 function LoadTables:Boolean; virtual;
 | 
|
 function LoadBlocks:Boolean; virtual;
 | 
|
 function LoadEntries(AParent:TDiskEntry):Boolean; virtual;
 | 
|
 function LoadCatalogs:Boolean; virtual;
 | 
|
 function LoadTable(ATableNo:LongWord):Boolean; virtual;
 | 
|
 function LoadBlock(ABlockNo:LongWord):Boolean; virtual;
 | 
|
| Note: LoadEntry can be implemented if needed but is not defined here. | |
| Note: LoadCatalog can be implemented if needed but is not defined here. | |
 function UnloadEntries(AParent:TDiskEntry):Boolean; virtual;
 | 
|
 function AddEntry(AParent:TDiskEntry; const AName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry; virtual;
 | 
|
 function AddEntryEx(AParent:TDiskEntry; const AName,AAltName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry; virtual;
 | 
|
 function RemoveEntry(AParent,AEntry:TDiskEntry):Boolean; virtual;
 | 
|
 function RenameEntry(AParent,AEntry:TDiskEntry; const AName:String):Boolean; virtual;
 | 
|
 function RenameEntryEx(AParent,AEntry:TDiskEntry; const AAltName:String):Boolean; virtual;
 | 
|
 function MoveEntry(ASource,ADest,AEntry:TDiskEntry):Boolean; virtual;
 | 
|
 function AddCatalog(AEntry:TDiskEntry; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):TDiskCatalog; virtual;
 | 
|
 function RemoveCatalog(ACatalog:TDiskCatalog):Boolean; virtual;
 | 
|
 function CheckCatalog(ACatalog:TDiskCatalog; ALock:Boolean; AState:LongWord):Boolean; virtual;
 | 
|
 function GetCatalogByNo(ACatalogNo:LongWord; ALock:Boolean; AState:LongWord):TDiskCatalog; virtual;
 | 
|
 function GetCatalogByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskCatalog; virtual;
 | 
|
 function GetCatalogByNext(APrevious:TDiskCatalog; ALock,AUnlock:Boolean; AState:LongWord):TDiskCatalog; virtual;
 | 
|
 function GetNextCatalogNo:LongWord; virtual;
 | 
|
 function GetMaxCatalogNo:LongWord; virtual;
 | 
|
 function AddHardlink(AEntry,AParent:TDiskEntry; const AName:String; AReference:Boolean):TDiskEntry; virtual;
 | 
|
 function RemoveHardlink(AParent,AEntry:TDiskEntry):Boolean; virtual;
 | 
|
 function AddMountPoint(AEntry:TDiskEntry; const ATarget:String):Boolean; virtual;
 | 
|
 function RemoveMountPoint(AEntry:TDiskEntry):Boolean; virtual;
 | 
|
 function AddJunctionPoint(AEntry:TDiskEntry; const ATarget:String):Boolean; virtual;
 | 
|
 function RemoveJunctionPoint(AEntry:TDiskEntry):Boolean; virtual;
 | 
|
 function AddSymbolicLink(AParent:TDiskEntry; const AName,ATarget:String; AFolder,AReference:Boolean):TDiskEntry; virtual;
 | 
|
 function AddSymbolicLinkEx(AParent:TDiskEntry; const AName,AAltName,ATarget:String; AFolder,AReference:Boolean):TDiskEntry; virtual;
 | 
|
 function RemoveSymbolicLink(AParent,AEntry:TDiskEntry):Boolean; virtual;
 | 
|
 function SetTable(ATable:TDiskTable):Boolean; virtual;
 | 
|
 function SetBlock(ABlock:TDiskBlock):Boolean; virtual;
 | 
|
 function SetEntry(AParent,AEntry:TDiskEntry):Boolean; virtual;
 | 
|
 function SetCatalog(ACatalog:TDiskCatalog):Boolean; virtual;
 | 
|
 function SetReparse(AParent,AEntry:TDiskEntry; AReparse:TDiskReparse):Boolean; virtual;
 | 
|
 function SetSecurity(AParent,AEntry:TDiskEntry; ASecurity:TDiskSecurity):Boolean; virtual;
 | 
|
 function SizeEntry(AParent,AEntry:TDiskEntry; const ASize:Int64):Boolean; virtual;
 | 
|
 function GetTable(ATableNo:LongWord):TDiskTable; virtual;
 | 
|
 function GetTableEx(ATableNo:LongWord; AWrite:Boolean):TDiskTable; virtual;
 | 
|
 function GetBlock(ABlockNo:LongWord):TDiskBlock; virtual;
 | 
|
 function GetBlockEx(ABlockNo:LongWord; AWrite:Boolean):TDiskBlock; virtual;
 | 
|
 function GetEntry(AParent:TDiskEntry; const AName:String; AAttributes:LongWord):TDiskEntry; virtual;
 | 
|
 function GetEntryEx(AParent:TDiskEntry; const AName:String; AAttributes:LongWord; AAdd,ARemove,AWrite:Boolean):TDiskEntry; virtual;
 | 
|
 function GetCatalog(ACatalogNo:LongWord):TDiskCatalog; virtual;
 | 
|
 function GetCatalogEx(ACatalogNo:LongWord; AWrite:Boolean):TDiskCatalog; virtual;
 | 
|
 function GetReparse(AEntry:TDiskEntry):TDiskReparse; virtual;
 | 
|
 function GetSecurity(AEntry:TDiskEntry):TDiskSecurity; virtual;
 | 
|
 function MatchEntry(AParent,APrevious:TDiskEntry; const AName:String; AAttributes:LongWord; AAny:Boolean):TDiskEntry; virtual;
 | 
|
 function MatchEntryEx(AParent,APrevious:TDiskEntry; const AName:String; AAttributes:LongWord; AAny,AAdd,ARemove,AWrite:Boolean):TDiskEntry; virtual;
 | 
|
 function GetEntryPath(AEntry:TDiskEntry; AAltName:Boolean):String;
 | 
|
 function GetEntryName(AEntry:TDiskEntry; AAltName:Boolean):String;
 | 
|
 function SplitPath(const APath:String; var ARelative:Boolean; AFolders:TStrings; var AName:String):Boolean; virtual;
 | 
|
 function SplitName(const AName:String; var AFile,AStream:String):Boolean; virtual;
 | 
|
 function SplitFile(const AFile:String; var AName,AExt:String):Boolean; virtual;
 | 
|
 function SplitStream(const AStream:String; var AName,AType:String):Boolean; virtual;
 | 
|
 function BuildPath(ARelative:Boolean; AFolders:TLinkedStringList; const AName:String):String; virtual;
 | 
|
 function BuildName(const AFile,AStream:String):String; virtual;
 | 
|
 function BuildFile(const AName,AExt:String):String; virtual;
 | 
|
 function BuildStream(const AName,AType:String):String; virtual;
 | 
|
 function CheckName(const AName:String):Boolean; virtual;
 | 
|
 function CompareName(const AName,AMatch:String; AWildcard:Boolean):Boolean; virtual;
 | 
|
 function CheckAltName(const AAltName:String):Boolean; virtual;
 | 
|
 function CompareAltName(const AAltName,AMatch:String; AWildcard:Boolean):Boolean; virtual;
 | 
|
 function CheckLinkName(const AName:String):Boolean; virtual;
 | 
|
 function GetSecurityFromDescriptor(ADescriptor:Pointer):TDiskSecurity; virtual;
 | 
|
 function GetDescriptorFromSecurity(ASecurity:TDiskSecurity; ADescriptor:Pointer; var ASize:LongWord):Boolean; virtual;
 | 
|
public 
 | |
 property Volume:TDiskVolume read FVolume write SetVolume;
 | 
|
 property Drive:TDiskDrive read FDrive write SetDrive;
 | 
|
 property PathChar:String read GetPathChar;
 | 
|
 property NameChar:String read GetNameChar;
 | 
|
 property FileChar:String read GetFileChar;
 | 
|
 property RootChar:String read GetRootChar;
 | 
|
 property RootName:String read GetRootName;
 | 
|
 property RootPath:String read GetRootPath;
 | 
|
 property MaxFile:Integer read FMaxFile;
 | 
|
 property MaxPath:Integer read FMaxPath;
 | 
|
 property MaxAltFile:Integer read FMaxAltFile;
 | 
|
 property MaxAltPath:Integer read FMaxAltPath;
 | 
|
 property Attributes:LongWord read FAttributes;
 | 
|
 property MaxAttributes:LongWord read FMaxAttributes;
 | 
|
 property MaskAttributes:LongWord read FMaskAttributes;
 | 
|
 property MountPointTag:LongWord read FMountPointTag;
 | 
|
 property SymbolicLinkTag:LongWord read FSymbolicLinkTag;
 | 
|
 property MinFileTime:TFileTime read FMinFileTime;
 | 
|
 property SystemName:String read GetSystemName;
 | 
|
 property VolumeName:String read GetVolumeName;
 | 
|
 property VolumeGUID:String read GetVolumeGUID;
 | 
|
 property VolumeSerial:LongWord read FVolumeSerial;
 | 
|
 property FileSysType:TFileSysType read FFileSysType;
 | 
|
 property SectorSize:Word read FSectorSize;
 | 
|
 property StartSector:Int64 read FStartSector;
 | 
|
 property SectorCount:LongWord read FSectorCount;
 | 
|
 property MarkDirty:Boolean read FMarkDirty write FMarkDirty;
 | 
|
 property MarkClean:Boolean read FMarkClean write FMarkClean;
 | 
|
 property MarkError:Boolean read FMarkError;
 | 
|
 property LogDirty:Boolean read FLogDirty;
 | 
|
 property MountDirty:Boolean read FMountDirty;
 | 
|
 function ReaderLock:Boolean;
 | 
|
 function ReaderUnlock:Boolean;
 | 
|
 function ReaderConvert:Boolean;
 | 
|
 function WriterLock:Boolean;
 | 
|
 function WriterUnlock:Boolean;
 | 
|
 function WriterConvert:Boolean;
 | 
|
 function FileSystemInit:Boolean; virtual;
 | 
|
 function MountFileSystem:Boolean; virtual;
 | 
|
 function DismountFileSystem:Boolean; virtual;
 | 
|
 function InitializeFileSystem(ASectorsPerCluster:LongWord; AFileSysType:TFileSysType):Boolean; virtual;
 | 
|
 function CreateCatalog(const AName:String; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):LongWord; virtual;
 | 
|
 function DeleteCatalog(ACatalogNo:LongWord):Boolean; virtual;
 | 
|
 function FindFirstCatalog(var ASearchRec:TCatalogSearchRec):Integer; virtual;
 | 
|
 function FindNextCatalog(var ASearchRec:TCatalogSearchRec):Integer; virtual;
 | 
|
 procedure FindCatalogClose(var ASearchRec:TCatalogSearchRec); virtual;
 | 
|
 function GetDriveLabel:String; virtual;
 | 
|
 function SetDriveLabel(const ALabel:String):Boolean; virtual;
 | 
|
 function GetDriveSerial:LongWord; virtual;
 | 
|
 function SetDriveSerial(ASerial:LongWord):Boolean; virtual;
 | 
|
 function GetDriveFreeSpace:LongWord; virtual;
 | 
|
 function GetDriveFreeSpaceEx:Int64; virtual;
 | 
|
 function GetDriveTotalSpace:LongWord; virtual;
 | 
|
 function GetDriveTotalSpaceEx:Int64; virtual;
 | 
|
 function GetDriveInformation(var AClusterSize:LongWord; var ATotalClusterCount,AFreeClusterCount:Int64):Boolean; virtual;
 | 
|
 function FileOpen(const FileName:String; Mode:Integer):THandle; virtual;
 | 
|
 function FileCreate(const FileName:String; Mode:Integer = fmOpenReadWrite or fmShareExclusive):THandle; virtual;
 | 
|
 function DeleteFile(const FileName:String):Boolean; virtual;
 | 
|
 procedure FileClose(Handle:THandle); virtual;
 | 
|
 function RenameFile(const OldName,NewName:String):Boolean; virtual;
 | 
|
 function FileSeek(Handle:THandle; Offset,Origin:LongInt):LongInt; virtual;
 | 
|
 function FileSeekEx(Handle:THandle; const Offset:Int64; Origin:LongInt):Int64; virtual;
 | 
|
 function FileFlush(Handle:THandle):Boolean; virtual;
 | 
|
 function FileTruncate(Handle:THandle):Boolean; virtual;
 | 
|
 function FilePos(Handle:THandle):LongInt; virtual;
 | 
|
 function FilePosEx(Handle:THandle):Int64; virtual;
 | 
|
 function FileGetAttr(const FileName:String):Integer; virtual;
 | 
|
 function FileGetDate(Handle:THandle):Integer; virtual;
 | 
|
 function FileGetSize(Handle:THandle):LongInt; virtual;
 | 
|
 function FileGetSizeEx(Handle:THandle):Int64; virtual;
 | 
|
 function FileSetAttr(const FileName:String; Attr:Integer):Integer; virtual;
 | 
|
 function FileSetDate(Handle:THandle; Age:Integer):Integer; virtual;
 | 
|
 function FileSetSize(Handle:THandle; Size:LongInt):LongInt; virtual;
 | 
|
 function FileSetSizeEx(Handle:THandle; const Size:Int64):LongInt; virtual;
 | 
|
 function FileRead(Handle:THandle; var Buffer; Count:LongInt):LongInt; virtual;
 | 
|
 function FileWrite(Handle:THandle; const Buffer; Count:LongInt):LongInt; virtual;
 | 
|
 function CreateDir(const DirName:String):Boolean; virtual;
 | 
|
 function RemoveDir(const DirName:String):Boolean; virtual;
 | 
|
 function GetCurrentDir:String; virtual;
 | 
|
 function SetCurrentDir(const DirName:String):Boolean; virtual;
 | 
|
 function FindOne(const Path:String; var SearchRec:TFileSearchRec):Integer; virtual;
 | 
|
 function FindAll(const Path:String; var SearchRec:TFileSearchRec):Integer; virtual;
 | 
|
 function FindFirstEx(const Path:String; var SearchRec:TFileSearchRec):Integer; virtual;
 | 
|
 function FindNextEx(var SearchRec:TFileSearchRec):Integer; virtual;
 | 
|
 procedure FindCloseEx(var SearchRec:TFileSearchRec); virtual;
 | 
|
 function FindFirstStream(const FileName:String; var SearchRec:TStreamSearchRec):Integer; virtual;
 | 
|
 function FindNextStream(var SearchRec:TStreamSearchRec):Integer; virtual;
 | 
|
 procedure FindStreamClose(var SearchRec:TStreamSearchRec); virtual;
 | 
|
 function FindFirstFileName(const FileName:String; var SearchRec:TLinkSearchRec):Integer; virtual;
 | 
|
 function FindNextFileName(var SearchRec:TLinkSearchRec):Integer; virtual;
 | 
|
 procedure FindFileNameClose(var SearchRec:TLinkSearchRec); virtual;
 | 
|
 function CreateHardLink(const LinkName,FileName:String):Boolean; virtual;
 | 
|
 function DeleteHardLink(const LinkName:String):Boolean; virtual;
 | 
|
 function CreateMountPoint(const PathName,VolumeName:String):Boolean; virtual;
 | 
|
 function DeleteMountPoint(const PathName:String):Boolean; virtual;
 | 
|
 function CreateJunctionPoint(const PathName,FolderName:String):Boolean; virtual;
 | 
|
 function DeleteJunctionPoint(const PathName:String):Boolean; virtual;
 | 
|
 function CreateSymbolicLink(const LinkName,TargetName:String; Directory:Boolean):Boolean; virtual;
 | 
|
 function CreateSymbolicLinkEx(const LinkName,ShortName,TargetName:String; Directory:Boolean):Boolean; virtual;
 | 
|
 function DeleteSymbolicLink(const LinkName:String):Boolean; virtual;
 | 
|
 function GetMountPointTarget(const PathName:String):String; virtual;
 | 
|
 function GetJunctionPointTarget(const PathName:String):String; virtual;
 | 
|
 function GetSymbolicLinkTarget(const LinkName:String):String; virtual;
 | 
|
 function SetFileShortName(const FileName,ShortName:String):Boolean; virtual;
 | 
|
 function SetFileShortNameEx(Handle:THandle; const ShortName:String):Boolean; virtual;
 | 
|
 function GetFileSecurity(const FileName:String; Descriptor:Pointer; var Size:LongWord):Boolean; virtual;
 | 
|
 function SetFileSecurity(const FileName:String; Descriptor:Pointer):Boolean; virtual;
 | 
|
 function GetPathName(const FileName:String):String; virtual;
 | 
|
 function GetShortName(const FileName:String):String; virtual;
 | 
|
 function GetLongName(const FileName:String):String; virtual;
 | 
|
 function GetTrueName(const FileName:String):String; virtual;
 | 
|
 function FileCreateEx(const FileName,ShortName:String; Mode:Integer = fmOpenReadWrite or fmShareExclusive):THandle; virtual;
 | 
|
 function CreateDirEx(const DirName,ShortName:String):Boolean; virtual;
 | 
|
 function FileGetAttrEx(Handle:THandle):Integer; virtual;
 | 
|
 function FileGetDateEx(Handle:THandle):TFileTime; virtual;
 | 
|
 function FileSetDateEx(Handle:THandle; Age:TFileTime):Integer; virtual;
 | 
|
 function GetFileTime(Handle:THandle; CreateTime,AccessTime,ModifyTime:PFileTime):Boolean; virtual;
 | 
|
 function SetFileTime(Handle:THandle; CreateTime,AccessTime,ModifyTime:PFileTime):Boolean; virtual;
 | 
|
 function CloseFile(Handle:THandle):Boolean; virtual;
 | 
Equivalent to Win32 CloseHandle | 
Function declarations
constructor TFileSystem.Create(ADriver:TFileSysDriver; AVolume:TDiskVolume; ADrive:TDiskDrive);
| Note | None documented | 
|---|
destructor TFileSystem.Destroy;
| Note | None documented | 
|---|
function TFileSystem.AcquireLock:Boolean;
| Note | None documented | 
|---|
function TFileSystem.ReleaseLock:Boolean;
| Note | None documented | 
|---|
function TFileSystem.SectorLock:Boolean;
| Note | None documented | 
|---|
function TFileSystem.SectorUnlock:Boolean;
| Note | None documented | 
|---|
procedure TFileSystem.SetDrive(ADrive:TDiskDrive);
| Note | None documented | 
|---|
procedure TFileSystem.SetVolume(AVolume:TDiskVolume);
| Note | None documented | 
|---|
function TFileSystem.GetPathChar:String;
| Note | None documented | 
|---|
function TFileSystem.GetNameChar:String;
| Note | None documented | 
|---|
function TFileSystem.GetFileChar:String;
| Note | None documented | 
|---|
function TFileSystem.GetRootChar:String;
| Note | None documented | 
|---|
 
function TFileSystem.GetRootName:String;
| Note | None documented | 
|---|
function TFileSystem.GetRootPath:String;
| Note | None documented | 
|---|
function TFileSystem.GetSystemName:String;
| Note | None documented | 
|---|
 
function TFileSystem.GetVolumeName:String;
| Note | None documented | 
|---|
function TFileSystem.GetVolumeGUID:String;
| Note | None documented | 
|---|
function TFileSystem.LoadPathChar:String;
| Note | None documented | 
|---|
function TFileSystem.LoadNameChar:String;
| Note | None documented | 
|---|
function TFileSystem.LoadFileChar:String;
| Note | None documented | 
|---|
function TFileSystem.LoadRootChar:String;
| Note | None documented | 
|---|
function TFileSystem.LoadRootName:String;
| Note | None documented | 
|---|
function TFileSystem.LoadRootPath:String;
| Note | None documented | 
|---|
function TFileSystem.LoadMaxFile:Integer;
| Note | None documented | 
|---|
function TFileSystem.LoadMaxPath:Integer;
| Note | None documented | 
|---|
function TFileSystem.LoadMaxAltFile:Integer;
| Note | None documented | 
|---|
function TFileSystem.LoadMaxAltPath:Integer;
| Note | None documented | 
|---|
function TFileSystem.LoadAttributes:LongWord;
| Note | None documented | 
|---|
function TFileSystem.LoadMaxAttributes:LongWord;
| Note | None documented | 
|---|
function TFileSystem.LoadMaskAttributes:LongWord;
| Note | None documented | 
|---|
function TFileSystem.LoadMountPointTag:LongWord;
| Note | None documented | 
|---|
function TFileSystem.LoadSymbolicLinkTag:LongWord;
| Note | None documented | 
|---|
function TFileSystem.LoadMinFileTime:TFileTime;
| Note | None documented | 
|---|
function TFileSystem.LoadSystemName:String;
| Note | None documented | 
|---|
function TFileSystem.LoadVolumeName:String;
| Note | None documented | 
|---|
function TFileSystem.LoadVolumeGUID:String;
| Note | None documented | 
|---|
function TFileSystem.LoadVolumeSerial:LongWord;
| Note | None documented | 
|---|
function TFileSystem.LoadFileSysType:TFileSysType;
| Note | None documented | 
|---|
function TFileSystem.LoadSectorSize:Word;
| Note | None documented | 
|---|
function TFileSystem.LoadStartSector:Int64;
| Note | None documented | 
|---|
function TFileSystem.LoadSectorCount:LongWord;
| Note | None documented | 
|---|
 
function TFileSystem.GetCurrent:TDiskEntry;
| Note | None documented | 
|---|
function TFileSystem.SetCurrent(ACurrent:TDiskEntry):Boolean;
| Note | None documented | 
|---|
function TFileSystem.FillSectors(ASector,ACount:LongWord; AValue:Byte):Boolean;
| Note | Sector is relative to the StartSector of the FileSystem | 
|---|
function TFileSystem.ReadSectors(ASector,ACount:LongWord; var ABuffer):Boolean;
| Note |  Sector is relative to the StartSector of the FileSystem
 Caller must hold the filesystem lock, cache will serialize access to device.  | 
|---|
function TFileSystem.WriteSectors(ASector,ACount:LongWord; const ABuffer):Boolean;
| Note |  Sector is relative to the StartSector of the FileSystem
 Caller must hold the filesystem lock, cache will serialize access to device.  | 
|---|
function TFileSystem.ReadEntry(AParent,AEntry:TDiskEntry; var ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer;
| Note |  Start, Count and Size have already been checked.
 Offset and Value are private to the filesystem  | 
|---|
function TFileSystem.WriteEntry(AParent,AEntry:TDiskEntry; const ABuffer; const AStart:Int64; ACount:LongWord; var AOffset,AValue:LongWord):Integer;
| Note |  Start, Count and Size have already been checked.
 Offset and Value are private to the filesystem  | 
|---|
function TFileSystem.LoadTables:Boolean;
| Note | Descendant method must use WriterLock on Tables | 
|---|
function TFileSystem.LoadBlocks:Boolean;
| Note | Descendant method must use WriterLock on Blocks | 
|---|
function TFileSystem.LoadEntries(AParent:TDiskEntry):Boolean;
| Note |  Parent must be supplied
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.LoadCatalogs:Boolean;
| Note | Descendant method must use WriterLock on Catalogs | 
|---|
function TFileSystem.LoadTable(ATableNo:LongWord):Boolean;
| Note |  TableNo is zero based
 Descendant method must use WriterLock on Tables  | 
|---|
function TFileSystem.LoadBlock(ABlockNo:LongWord):Boolean;
| Note |  BlockNo is zero based
 Descendant method must use WriterLock on Blocks  | 
|---|
function TFileSystem.UnloadEntries(AParent:TDiskEntry):Boolean;
| Note |  Parent must be supplied
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.AddEntry(AParent:TDiskEntry; const AName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry;
| Reference | Add a reference on the returned entry if True | 
|---|---|
| Note |  Parent must be supplied, Name has already been checked.
 Descendant method must use WriterLock on Entries  | 
function TFileSystem.AddEntryEx(AParent:TDiskEntry; const AName,AAltName:String; AAttributes:LongWord; AReference:Boolean):TDiskEntry;
| AltName | If AltName already exists then a generated one will be provided, will not fail due to AltName. | 
|---|---|
| Reference | Add a reference on the returned entry if True | 
| Note |  Parent must be supplied, Name and AltName have already been checked.
 Descendant method must use WriterLock on Entries  | 
function TFileSystem.RemoveEntry(AParent,AEntry:TDiskEntry):Boolean;
| Note |  Files and Folders have been checked, Handles have been checked.
 Parent must be supplied
  | 
|---|
function TFileSystem.RenameEntry(AParent,AEntry:TDiskEntry; const AName:String):Boolean;
| Note |  Parent must be supplied, Name has already been checked.
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.RenameEntryEx(AParent,AEntry:TDiskEntry; const AAltName:String):Boolean;
| Note |  Parent must be supplied, Name has already been checked.
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.MoveEntry(ASource,ADest,AEntry:TDiskEntry):Boolean;
| Note |  Source and Dest must be supplied, Name has already been checked.
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.AddCatalog(AEntry:TDiskEntry; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):TDiskCatalog;
| Note | Descendant method must use WriterLock on Catalogs | 
|---|
function TFileSystem.RemoveCatalog(ACatalog:TDiskCatalog):Boolean;
| Note | Descendant method must use WriterLock on Catalogs | 
|---|
function TFileSystem.CheckCatalog(ACatalog:TDiskCatalog; ALock:Boolean; AState:LongWord):Boolean;
| Note | None documented | 
|---|
function TFileSystem.GetCatalogByNo(ACatalogNo:LongWord; ALock:Boolean; AState:LongWord):TDiskCatalog;
| Note | CatalogNo is one based | 
|---|
function TFileSystem.GetCatalogByName(const AName:String; ALock:Boolean; AState:LongWord):TDiskCatalog;
| Note | None documented | 
|---|
function TFileSystem.GetCatalogByNext(APrevious:TDiskCatalog; ALock,AUnlock:Boolean; AState:LongWord):TDiskCatalog;
| Note | None documented | 
|---|
function TFileSystem.GetNextCatalogNo:LongWord;
| Note | None documented | 
|---|
function TFileSystem.GetMaxCatalogNo:LongWord;
| Note | None documented | 
|---|
function TFileSystem.AddHardlink(AEntry,AParent:TDiskEntry; const AName:String; AReference:Boolean):TDiskEntry;
| Reference | Add a reference on the returned entry if True | 
|---|---|
| Note |  Entry and Parent must be supplied, Name has already been checked.
 Descendant method must use WriterLock on Entries  | 
function TFileSystem.RemoveHardlink(AParent,AEntry:TDiskEntry):Boolean;
| Note |  Entry and Parent must be supplied, Entry will be deleted.
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.AddMountPoint(AEntry:TDiskEntry; const ATarget:String):Boolean;
| Note |  Entry must be supplied
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.RemoveMountPoint(AEntry:TDiskEntry):Boolean;
| Note |  Entry must be supplied, Entry will not be deleted.
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.AddJunctionPoint(AEntry:TDiskEntry; const ATarget:String):Boolean;
| Note |  Entry must be supplied
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.RemoveJunctionPoint(AEntry:TDiskEntry):Boolean;
| Note |  Entry must be supplied, Entry will not be deleted.
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.AddSymbolicLink(AParent:TDiskEntry; const AName,ATarget:String; AFolder,AReference:Boolean):TDiskEntry;
| Reference | Add a reference on the returned entry if True | 
|---|---|
| Note |  Parent must be supplied, Name has already been checked.
 Descendant method must use WriterLock on Entries  | 
function TFileSystem.AddSymbolicLinkEx(AParent:TDiskEntry; const AName,AAltName,ATarget:String; AFolder,AReference:Boolean):TDiskEntry;
| Reference | Add a reference on the returned entry if True | 
|---|---|
| Note |  Parent must be supplied, Name has already been checked.
 Descendant method must use WriterLock on Entries  | 
function TFileSystem.RemoveSymbolicLink(AParent,AEntry:TDiskEntry):Boolean;
| Note |  Entry and Parent must be supplied, Entry will be deleted.
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.SetTable(ATable:TDiskTable):Boolean;
| Note | Descendant method must use WriterLock on Tables | 
|---|
function TFileSystem.SetBlock(ABlock:TDiskBlock):Boolean;
| Note | Descendant method must use WriterLock on Blocks | 
|---|
function TFileSystem.SetEntry(AParent,AEntry:TDiskEntry):Boolean;
| Note |  Parent must be supplied
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.SetCatalog(ACatalog:TDiskCatalog):Boolean;
| Note | Descendant method must use WriterLock on Catalogs | 
|---|
function TFileSystem.SetReparse(AParent,AEntry:TDiskEntry; AReparse:TDiskReparse):Boolean;
| Note | Descendant method must use WriterLock on Entries | 
|---|
function TFileSystem.SetSecurity(AParent,AEntry:TDiskEntry; ASecurity:TDiskSecurity):Boolean;
| Note | Descendant method must use WriterLock on Entries | 
|---|
function TFileSystem.SizeEntry(AParent,AEntry:TDiskEntry; const ASize:Int64):Boolean;
| Note |  Parent must be supplied
 Descendant method must use WriterLock on Entries  | 
|---|
function TFileSystem.GetTable(ATableNo:LongWord):TDiskTable;
| Note |  TableNo is zero based
 Descendants may override if required  | 
|---|
function TFileSystem.GetTableEx(ATableNo:LongWord; AWrite:Boolean):TDiskTable;
| Write | Use the writer lock on the blocks instead of the reader lock if True | 
|---|---|
| Note |  TableNo is zero based
 Descendants may override if required  | 
function TFileSystem.GetBlock(ABlockNo:LongWord):TDiskBlock;
| Note |  BlockNo is zero based
 Descendants may override if required  | 
|---|
function TFileSystem.GetBlockEx(ABlockNo:LongWord; AWrite:Boolean):TDiskBlock;
| Write | Use the writer lock on the blocks instead of the reader lock if True | 
|---|---|
| Note |  BlockNo is zero based
 Descendants may override if required  | 
function TFileSystem.GetEntry(AParent:TDiskEntry; const AName:String; AAttributes:LongWord):TDiskEntry;
| Attributes | Attributes is the match attributes to be checked | 
|---|---|
| Note | If Parent is not supplied Root is assumed | 
function TFileSystem.GetEntryEx(AParent:TDiskEntry; const AName:String; AAttributes:LongWord; AAdd,ARemove,AWrite:Boolean):TDiskEntry;
| Attributes | Attributes is the match attributes to be checked | 
|---|---|
| Add | Add a reference on the returned entry if True | 
| Remove | Remove a reference from the parent entry if True (If supplied) | 
| Write | Use the writer lock on the entries instead of the reader lock if True | 
| Note | If Parent is not supplied Root is assumed | 
function TFileSystem.GetCatalog(ACatalogNo:LongWord):TDiskCatalog;
| Note | CatalogNo is one based | 
|---|
function TFileSystem.GetCatalogEx(ACatalogNo:LongWord; AWrite:Boolean):TDiskCatalog;
| Note | CatalogNo is one based | 
|---|
function TFileSystem.GetReparse(AEntry:TDiskEntry):TDiskReparse;
| Note | None documented | 
|---|
function TFileSystem.GetSecurity(AEntry:TDiskEntry):TDiskSecurity;
| Note | None documented | 
|---|
function TFileSystem.MatchEntry(AParent,APrevious:TDiskEntry; const AName:String; AAttributes:LongWord; AAny:Boolean):TDiskEntry;
| Attributes | Attributes is the match attributes to be checked | 
|---|---|
| Note | If Parent is not supplied Root is assumed | 
function TFileSystem.MatchEntryEx(AParent,APrevious:TDiskEntry; const AName:String; AAttributes:LongWord; AAny,AAdd,ARemove,AWrite:Boolean):TDiskEntry;
| Attributes | Attributes is the match attributes to be checked | 
|---|---|
| Add | Add a reference on the returned entry if True | 
| Remove | Remove a reference from the previous entry if True (If supplied) | 
| Write | Use the writer lock on the entries instead of the reader lock if True | 
| Note | If Parent is not supplied Root is assumed | 
function TFileSystem.GetEntryPath(AEntry:TDiskEntry; AAltName:Boolean):String;
| Note | Path ends with a trailing slash of PathChar unless Entry is a stream | 
|---|
function TFileSystem.GetEntryName(AEntry:TDiskEntry; AAltName:Boolean):String;
| Note | None documented | 
|---|
function TFileSystem.SplitPath(const APath:String; var ARelative:Boolean; AFolders:TStrings; var AName:String):Boolean;
| Relative | Relative returns True if path is relative to current folder | 
|---|
function TFileSystem.SplitName(const AName:String; var AFile,AStream:String):Boolean;
| Name | Name must not contain drive or path components | 
|---|---|
| Return | Returns False if name does not contain a stream component | 
function TFileSystem.SplitFile(const AFile:String; var AName,AExt:String):Boolean;
| File | File must not contain drive or path components | 
|---|
function TFileSystem.SplitStream(const AStream:String; var AName,AType:String):Boolean;
| Stream | Stream must not contain drive, path or file components. | 
|---|
function TFileSystem.BuildPath(ARelative:Boolean; AFolders:TLinkedStringList; const AName:String):String;
| Relative | If Relative is True then path is relative to current folder | 
|---|
function TFileSystem.BuildName(const AFile,AStream:String):String;
| Note | None documented | 
|---|
function TFileSystem.BuildFile(const AName,AExt:String):String;
| Note | None documented | 
|---|
function TFileSystem.BuildStream(const AName,AType:String):String;
| Note | None documented | 
|---|
function TFileSystem.CheckName(const AName:String):Boolean;
| Note | None documented | 
|---|
function TFileSystem.CompareName(const AName,AMatch:String; AWildcard:Boolean):Boolean;
| Note | Also provides Wildcard matching based on File System rules | 
|---|
function TFileSystem.CheckAltName(const AAltName:String):Boolean;
| Note | None documented | 
|---|
function TFileSystem.CompareAltName(const AAltName,AMatch:String; AWildcard:Boolean):Boolean;
| Note | None documented | 
|---|
function TFileSystem.CheckLinkName(const AName:String):Boolean;
| Note | None documented | 
|---|
function TFileSystem.GetSecurityFromDescriptor(ADescriptor:Pointer):TDiskSecurity;
| Note | None documented | 
|---|
function TFileSystem.GetDescriptorFromSecurity(ASecurity:TDiskSecurity; ADescriptor:Pointer; var ASize:LongWord):Boolean;
| Note | None documented | 
|---|
function TFileSystem.ReaderLock:Boolean;
| Note | None documented | 
|---|
function TFileSystem.ReaderUnlock:Boolean;
| Note | None documented | 
|---|
function TFileSystem.ReaderConvert:Boolean;
| Note | None documented | 
|---|
function TFileSystem.WriterLock:Boolean;
| Note | None documented | 
|---|
function TFileSystem.WriterUnlock:Boolean;
| Note | None documented | 
|---|
function TFileSystem.WriterConvert:Boolean;
| Note | None documented | 
|---|
function TFileSystem.FileSystemInit:Boolean;
| Note | None documented | 
|---|
function TFileSystem.MountFileSystem:Boolean;
| Note | None documented | 
|---|
function TFileSystem.DismountFileSystem:Boolean;
| Note | None documented | 
|---|
function TFileSystem.InitializeFileSystem(ASectorsPerCluster:LongWord; AFileSysType:TFileSysType):Boolean;
| Note | None documented | 
|---|
function TFileSystem.CreateCatalog(const AName:String; AMediaType:TMediaType; AFloppyType:TFloppyType; AAttributes:LongWord; ASectorSize:Word; const ASectorCount:Int64):LongWord;
| Note | None documented | 
|---|
function TFileSystem.DeleteCatalog(ACatalogNo:LongWord):Boolean;
| Note | None documented | 
|---|
function TFileSystem.FindFirstCatalog(var ASearchRec:TCatalogSearchRec):Integer;
| Note | None documented | 
|---|
function TFileSystem.FindNextCatalog(var ASearchRec:TCatalogSearchRec):Integer;
| Note | None documented | 
|---|
procedure TFileSystem.FindCatalogClose(var ASearchRec:TCatalogSearchRec);
| Note | None documented | 
|---|
function TFileSystem.GetDriveLabel:String;
| Note | None documented | 
|---|
function TFileSystem.SetDriveLabel(const ALabel:String):Boolean;
| Note | None documented | 
|---|
function TFileSystem.GetDriveSerial:LongWord;
| Note | None documented | 
|---|
function TFileSystem.SetDriveSerial(ASerial:LongWord):Boolean;
| Note | None documented | 
|---|
function TFileSystem.GetDriveFreeSpace:LongWord;
| Note | None documented | 
|---|
function TFileSystem.GetDriveFreeSpaceEx:Int64;
| Note | None documented | 
|---|
function TFileSystem.GetDriveTotalSpace:LongWord;
| Note | None documented | 
|---|
function TFileSystem.GetDriveTotalSpaceEx:Int64;
| Note | None documented | 
|---|
function TFileSystem.GetDriveInformation(var AClusterSize:LongWord; var ATotalClusterCount,AFreeClusterCount:Int64):Boolean;
| Note | None documented | 
|---|
function TFileSystem.FileOpen(const FileName:String; Mode:Integer):THandle;
| Note |  FileOpen can also open Folders but the handle can only be used for Get/SetFileTime
 Cannot create with FileOpen  | 
|---|
function TFileSystem.FileCreate(const FileName:String; Mode:Integer = fmOpenReadWrite or fmShareExclusive):THandle;
| Note | Cannot create Folders with FileCreate | 
|---|
function TFileSystem.DeleteFile(const FileName:String):Boolean;
| Note | None documented | 
|---|
procedure TFileSystem.FileClose(Handle:THandle);
| Note | None documented | 
|---|
function TFileSystem.RenameFile(const OldName,NewName:String):Boolean;
| Note | If 8.3 then modify entry if Long then create new entry, delete existing. | 
|---|
function TFileSystem.FileSeek(Handle:THandle; Offset,Origin:LongInt):LongInt;
| Note | None documented | 
|---|
function TFileSystem.FileSeekEx(Handle:THandle; const Offset:Int64; Origin:LongInt):Int64;
| Note | File Seeks can extend the size if OpenMode is Write or ReadWrite | 
|---|
function TFileSystem.FileFlush(Handle:THandle):Boolean;
| Note | Currently just flushes the Cache | 
|---|
function TFileSystem.FileTruncate(Handle:THandle):Boolean;
| Note | Can extend a file as well as truncate | 
|---|
function TFileSystem.FilePos(Handle:THandle):LongInt;
| Note | None documented | 
|---|
function TFileSystem.FilePosEx(Handle:THandle):Int64;
| Note | None documented | 
|---|
function TFileSystem.FileGetAttr(const FileName:String):Integer;
| Note | None documented | 
|---|
function TFileSystem.FileGetDate(Handle:THandle):Integer;
| Note | Returned time is converted to Local | 
|---|
function TFileSystem.FileGetSize(Handle:THandle):LongInt;
| Note | None documented | 
|---|
function TFileSystem.FileGetSizeEx(Handle:THandle):Int64;
| Note | None documented | 
|---|
function TFileSystem.FileSetAttr(const FileName:String; Attr:Integer):Integer;
| Note | File attributes can be set regardless of existing Handles | 
|---|
function TFileSystem.FileSetDate(Handle:THandle; Age:Integer):Integer;
| Note | Passed time is assumed to be Local and is converted to UTC | 
|---|
function TFileSystem.FileSetSize(Handle:THandle; Size:LongInt):LongInt;
| Note | None documented | 
|---|
function TFileSystem.FileSetSizeEx(Handle:THandle; const Size:Int64):LongInt;
| Note | None documented | 
|---|
function TFileSystem.FileRead(Handle:THandle; var Buffer;Count:LongInt):LongInt;
| Note |  Position may be beyond the end of the file
 A read from beyond the end of the file will return 0 bytes  | 
|---|
function TFileSystem.FileWrite(Handle:THandle; const Buffer; Count:LongInt):LongInt;
| Note |  Position may be beyond the end of the file
 A write to beyond the end of the file will succeed and Size will be Position plus Count  | 
|---|
function TFileSystem.CreateDir(const DirName:String):Boolean;
| Note | No File or Stream support | 
|---|
function TFileSystem.RemoveDir(const DirName:String):Boolean;
| Note | No File or Stream support | 
|---|
function TFileSystem.GetCurrentDir:String;
| Note | No File or Stream support | 
|---|
function TFileSystem.SetCurrentDir(const DirName:String):Boolean;
| Note | None documented | 
|---|
function TFileSystem.FindFirstEx(const Path:String; var SearchRec:TFileSearchRec):Integer;
| Note | None documented | 
|---|
function TFileSystem.FindNextEx(var SearchRec:TFileSearchRec):Integer;
| Note | None documented | 
|---|
procedure TFileSystem.FindCloseEx(var SearchRec:TFileSearchRec);
| Note | None documented | 
|---|
function TFileSystem.FindFirstStream(const FileName:String; var SearchRec:TStreamSearchRec):Integer;
| Note | This does not return the default data stream for files | 
|---|
function TFileSystem.FindNextStream(var SearchRec:TStreamSearchRec):Integer;
| Note | This does not return the default data stream for files | 
|---|
procedure TFileSystem.FindStreamClose(var SearchRec:TStreamSearchRec);
| Note | None documented | 
|---|
function TFileSystem.FindFirstFileName(const FileName:String; var SearchRec:TLinkSearchRec):Integer;
| Note | None documented | 
|---|
function TFileSystem.FindNextFileName(var SearchRec:TLinkSearchRec):Integer;
| Note | None documented | 
|---|
procedure TFileSystem.FindFileNameClose(var SearchRec:TLinkSearchRec);
| Note | None documented | 
|---|
function TFileSystem.CreateHardLink(const LinkName,FileName:String):Boolean;
| Note | Link must not exist, File must exist and must be a file. Both must be on the same volume. | 
|---|
function TFileSystem.DeleteHardLink(const LinkName:String):Boolean;
| Note | Link must exist and must be a file | 
|---|
function TFileSystem.CreateMountPoint(const PathName,VolumeName:String):Boolean;
| Note | Path must exist and must be a folder, Volume value is not checked. | 
|---|
function TFileSystem.DeleteMountPoint(const PathName:String):Boolean;
| Note | Path must exist and must be a folder | 
|---|
function TFileSystem.CreateJunctionPoint(const PathName,FolderName:String):Boolean;
| Note | Path must exist and must be a folder, Folder value is not checked. | 
|---|
function TFileSystem.DeleteJunctionPoint(const PathName:String):Boolean;
| Note | Path must exist and must be a folder | 
|---|
function TFileSystem.CreateSymbolicLink(const LinkName,TargetName:String; Directory:Boolean):Boolean;
| Note | Link must not exist, Target value is not checked. | 
|---|
function TFileSystem.CreateSymbolicLinkEx(const LinkName,ShortName,TargetName:String; Directory:Boolean):Boolean;
| Note | Link must not exist, Target value is not checked. | 
|---|
function TFileSystem.DeleteSymbolicLink(const LinkName:String):Boolean;
| Note | Link must exist | 
|---|
function TFileSystem.GetMountPointTarget(const PathName:String):String;
| Note | None documented | 
|---|
function TFileSystem.GetJunctionPointTarget(const PathName:String):String;
| Note | None documented | 
|---|
function TFileSystem.GetSymbolicLinkTarget(const LinkName:String):String;
| Note | None documented | 
|---|
function TFileSystem.SetFileShortName(const FileName,ShortName:String):Boolean;
| Note | No Stream Support | 
|---|
function TFileSystem.SetFileShortNameEx(Handle:THandle; const ShortName:String):Boolean;
| Note | No Stream Support | 
|---|
function TFileSystem.GetFileSecurity(const FileName:String; Descriptor:Pointer; var Size:LongWord):Boolean;
| Note | None documented | 
|---|
function TFileSystem.SetFileSecurity(const FileName:String; Descriptor:Pointer):Boolean;
| Note | None documented | 
|---|
function TFileSystem.GetPathName(const FileName:String):String;
| Note | None documented | 
|---|
function TFileSystem.GetShortName(const FileName:String):String;
| Note | None documented | 
|---|
function TFileSystem.GetLongName(const FileName:String):String;
| Note | None documented | 
|---|
function TFileSystem.GetTrueName(const FileName:String):String;
| Note | Almost the same as GetShortName function | 
|---|
function TFileSystem.FileCreateEx(const FileName,ShortName:String; Mode:Integer = fmOpenReadWrite or fmShareExclusive):THandle;
| Note |  Cannot create Folders with FileCreateEx
 ShortName does not apply to Streams  | 
|---|
function TFileSystem.CreateDirEx(const DirName,ShortName:String):Boolean;
| Note | None documented | 
|---|
function TFileSystem.FileGetAttrEx(Handle:THandle):Integer;
| Note | None documented | 
|---|
function TFileSystem.FileGetDateEx(Handle:THandle):TFileTime;
| Note | Returned time is UTC | 
|---|
function TFileSystem.FileSetDateEx(Handle:THandle; Age:TFileTime):Integer;
| Note | Passed time is assumed to be UTC | 
|---|
function TFileSystem.GetFileTime(Handle:THandle; CreateTime,AccessTime,ModifyTime:PFileTime):Boolean;
| Note | Returned time is UTC | 
|---|
function TFileSystem.SetFileTime(Handle:THandle; CreateTime,AccessTime,ModifyTime:PFileTime):Boolean;
| Note | Passed times are assumed to be UTC and are converted to Local | 
|---|
function TFileSystem.CloseFile(Handle:THandle):Boolean;
| Note | Equivalent to Win32 CloseHandle | 
|---|
Return to Unit Reference