|
|
(2 intermediate revisions by the same user not shown) |
Line 5: |
Line 5: |
| ---- | | ---- |
| | | |
− | '''Ultibo NTFS classes unit''' | + | '''Ultibo NTFS Classes unit''' |
− | | + | |
− | ''To be documented''
| + | |
| | | |
| === Constants === | | === Constants === |
Line 32: |
Line 30: |
| | | |
| | | |
− | '''NTFS disk table''' | + | '''NTFS specific classes''' |
| | | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | <code>TNTFSDiskTable = class(TDiskTable)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Respresents the $Mft and $MftMirr | + | | [[TNTFSDiskTable|<code>TNTFSDiskTable = class(TDiskTable)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FStartSector:Int64;</code>
| + | |
− | | Absolute starting sector of this table
| + | |
− | |-
| + | |
− | | <code>FStartCluster:Int64;</code>
| + | |
− | | Absolute starting cluster of this table
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FEntry:TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property StartSector:Int64 read FStartSector write FStartSector;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property StartCluster:Int64 read FStartCluster write FStartCluster;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Entry:TNTFSDiskEntry read FEntry write FEntry;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk block'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskBlock = class(TDiskBlock)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Represents a block of $Bitmap entries | + | | [[TNTFSDiskBlock|<code>TNTFSDiskBlock = class(TDiskBlock)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FBlockCount:LongWord;</code>
| + | |
− | | Number of cluster entries in this block (Bits in the bitmap)
| + | |
− | |-
| + | |
− | | <code>FBlockBuffer:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FBlockCluster:Int64;</code>
| + | |
− | | First cluster represented by this block (BlockNo represents the VCN of the block)
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property BlockCount:LongWord read FBlockCount write FBlockCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property BlockBuffer:Pointer read FBlockBuffer write FBlockBuffer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property BlockCluster:Int64 read FBlockCluster write FBlockCluster;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk entry'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskEntry = class(TDiskEntry)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Represents a file entry. | + | | [[TNTFSDiskEntry|<code>TNTFSDiskEntry = class(TDiskEntry)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AOrigin:TNTFSDiskRecord; AAttribute:TNTFSDiskAttribute);</code>
| + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FPrevEntry:TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FNextEntry:TNTFSDiskEntry;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FUsed:Int64;</code>
| + | |
− | | Used size of the file
| + | |
− | |-
| + | |
− | | <code>FAllocated:Int64;</code>
| + | |
− | | Allocated size of file
| + | |
− | |-
| + | |
− | | <code>FChangeTime:TFileTime;</code>
| + | |
− | | MFT record change time
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FOrigin:TNTFSDiskRecord;</code>
| + | |
− | | Entry origin record
| + | |
− | |-
| + | |
− | | <code>FAttribute:TNTFSDiskAttribute;</code>
| + | |
− | | Entry naming attribute
| + | |
− | |-
| + | |
− | | <code>FAlternate:TNTFSDiskAttribute;</code>
| + | |
− | | Alternate name attribute
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetOrigin(AOrigin:TNTFSDiskRecord);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property LocalLock:TMutexHandle read FLocalLock write FLocalLock;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property PrevEntry:TNTFSDiskEntry read FPrevEntry write FPrevEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property NextEntry:TNTFSDiskEntry read FNextEntry write FNextEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Used:Int64 read FUsed write FUsed;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Allocated:Int64 read FAllocated write FAllocated;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ChangeTime:TFileTime read FChangeTime write FChangeTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Origin:TNTFSDiskRecord read FOrigin write SetOrigin;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Attribute:TNTFSDiskAttribute read FAttribute write FAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Alternate:TNTFSDiskAttribute read FAlternate write FAlternate;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetDot:TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetDotDot:TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateDot:TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CreateDotDot:TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function UpdateDot:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateDotDot(AEntry:TNTFSDiskEntry):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RecordNumber:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function FileReference:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function UpdateEntry:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateRecord:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function FindFirstName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function FindPrevName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function FindNextName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function FindLastName(AHandle:TFindHandle; AReference:Boolean):TDiskEntry; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk access contol list'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskAcl = class(TDiskAcl)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of attribute $SECURITY_DESCRIPTOR | + | | [[TNTFSDiskAcl|<code>TNTFSDiskAcl = class(TDiskAcl)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk access control entry'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskAce = class(TDiskAce)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of attribute $SECURITY_DESCRIPTOR | + | | [[TNTFSDiskAce|<code>TNTFSDiskAce = class(TDiskAce)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS entry list'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSEntryList = class(TObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create;</code> | + | | [[TNTFSEntryList|<code>TNTFSEntryList = class(TObject)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FEntryCount:Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FFirstEntry:TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FLastEntry:TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Link(AEntry:TNTFSDiskEntry):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Unlink(AEntry:TNTFSDiskEntry):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property EntryCount:Integer read FEntryCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property FirstEntry:TNTFSDiskEntry read FFirstEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property LastEntry:TNTFSDiskEntry read FLastEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Add(AEntry:TNTFSDiskEntry):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Remove(AEntry:TNTFSDiskEntry):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure ClearList; virtual;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS record list'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSRecordList = class(TObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create;</code> | + | | [[TNTFSRecordList|<code>TNTFSRecordList = class(TObject)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FRecordCount:Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FFirstRecord:TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FLastRecord:TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Link(ARecord:TNTFSDiskRecord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Unlink(ARecord:TNTFSDiskRecord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property RecordCount:Integer read FRecordCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property FirstRecord:TNTFSDiskRecord read FFirstRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property LastRecord:TNTFSDiskRecord read FLastRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Add(ARecord:TNTFSDiskRecord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function Remove(ARecord:TNTFSDiskRecord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure ClearList; virtual;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS record index'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSRecordIndex = class(TLinkedObjBtree)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Index of FILE records. | + | | [[TNTFSRecordIndex|<code>TNTFSRecordIndex = class(TLinkedObjBtree)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FRecordLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FRunsLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FItemsLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FNodesLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FIndexLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FExtendedsLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FAttributesLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FRunLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FItemLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FKeyLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FNodeLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FExtendedLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FAttributeLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Find(const ARecordNumber:Int64; ACurrent:TNTFSDiskRecord):TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateBlank:TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Compare(AEntry1,AEntry2:TBtreeObject):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateRecord(ABase:TNTFSDiskRecord; const ARecordNumber:Int64; AVersion:Word):TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroyRecord(ARecord:TNTFSDiskRecord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewRecord(ABase:TNTFSDiskRecord; const ARecordNumber:Int64; AVersion:Word):TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function InsertRecord(ARecord:TNTFSDiskRecord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeleteRecord(ARecord:TNTFSDiskRecord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveRecord(ARecord:TNTFSDiskRecord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function FindRecord(const ARecordNumber:Int64):TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReaderLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReaderUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReaderConvert:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriterLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriterUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriterConvert:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RunsReaderLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RunsReaderUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RunsWriterLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RunsWriterUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ItemsReaderLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ItemsReaderUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ItemsWriterLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ItemsWriterUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function NodesReaderLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NodesReaderUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NodesWriterLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NodesWriterUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function IndexReaderLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function IndexReaderUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function IndexWriterLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function IndexWriterUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ExtendedsReaderLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ExtendedsReaderUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ExtendedsWriterLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ExtendedsWriterUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AttributesReaderLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AttributesReaderUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AttributesWriterLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AttributesWriterUnlock:Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk record'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskRecord = class(TBtreeObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Represents a FILE record entry. | + | | [[TNTFSDiskRecord|<code>TNTFSDiskRecord = class(TBtreeObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle; ABase:TNTFSDiskRecord);</code>
| + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLocalLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FRunsLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FItemsLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FNodesLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FIndexLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FExtendedsLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FAttributesLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FRunLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FItemLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FKeyLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FNodeLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FExtendedLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FAttributeLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStatus:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FPrevRecord:TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FNextRecord:TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FRecordFlags:Word;</code>
| + | |
− | | Flags (See Consts)
| + | |
− | |-
| + | |
− | | <code>FHardLinkCount:Word;</code>
| + | |
− | | Hard link count
| + | |
− | |-
| + | |
− | | <code>FSequenceNumber:Word;</code>
| + | |
− | | Sequence number
| + | |
− | |-
| + | |
− | | <code>FNextAttributeId:Word;</code>
| + | |
− | | Next Attribute Id
| + | |
− | |-
| + | |
− | | <code>FRecordNumber:Int64;</code>
| + | |
− | | Number of this MFT Record
| + | |
− | |-
| + | |
− | | <code>FRecordSize:LongWord;</code>
| + | |
− | | Actual size of the FILE record
| + | |
− | |-
| + | |
− | | <code>FRecordAllocated:LongWord;</code>
| + | |
− | | Allocated size of the FILE record
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAttributeOffset:Word;</code>
| + | |
− | | Offset to the first Attribute
| + | |
− | |-
| + | |
− | | <code>FUpdateSequenceOffset:Word;</code>
| + | |
− | | Offset to the Update Sequence Record
| + | |
− | |-
| + | |
− | | <code>FUpdateSequenceLength:Word;</code>
| + | |
− | | Size in words of the Update Sequence Record
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FUpdateSequenceNumber:Word;</code>
| + | |
− | | Update Sequence Number
| + | |
− | |-
| + | |
− | | <code>FLogFileSequenceNumber:Int64;</code>
| + | |
− | | LogFile Sequence Number (LSN)
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FBase:TNTFSDiskRecord;</code>
| + | |
− | | Base file record
| + | |
− | |-
| + | |
− | | <code>FLinks:TNTFSEntryList;</code>
| + | |
− | | List of record links
| + | |
− | |-
| + | |
− | | <code>FStreams:TNTFSEntryList;</code>
| + | |
− | | List of record streams
| + | |
− | |-
| + | |
− | | <code>FRecords:TNTFSRecordList;</code>
| + | |
− | | List of child records
| + | |
− | |-
| + | |
− | | <code>FAttributes:TNTFSDiskAttributes;</code>
| + | |
− | | List of record attributes
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetResizing:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetResizing(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRemoving:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetRemoving(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetMirrored:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetMirrored(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetMetafile:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetMetafile(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetReserved:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetReserved(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetExpansion:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetExpansion(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetOverflow:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetOverflow(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetExtension:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetExtension(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetIsUsed:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsUsed(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsFolder:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsFolder(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsUnknown1:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsUnknown1(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsIndexView:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsIndexView(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetOrigin:TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateLinks(ANew:Boolean):TNTFSEntryList;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CreateStreams(ANew:Boolean):TNTFSEntryList;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CreateRecords(ANew:Boolean):TNTFSRecordList;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CreateAttributes(AVersion:Word; ANew:Boolean):TNTFSDiskAttributes;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Resizing:Boolean read GetResizing write SetResizing;</code>
| + | |
− | | Record is being Resized
| + | |
− | |-
| + | |
− | | <code>property Removing:Boolean read GetRemoving write SetRemoving;</code>
| + | |
− | | Record is being Removed
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Mirrored:Boolean read GetMirrored write SetMirrored;</code>
| + | |
− | | Record is in $MftMirr file
| + | |
− | |-
| + | |
− | | <code>property Metafile:Boolean read GetMetafile write SetMetafile;</code>
| + | |
− | | Record is an NTFS metafile
| + | |
− | |-
| + | |
− | | <code>property Reserved:Boolean read GetReserved write SetReserved;</code>
| + | |
− | | Record is an Mft reserved record
| + | |
− | |-
| + | |
− | | <code>property Expansion:Boolean read GetExpansion write SetExpansion;</code>
| + | |
− | | Record is an Mft expansion record
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Overflow:Boolean read GetOverflow write SetOverflow;</code>
| + | |
− | | Record has an attribute list attribute
| + | |
− | |-
| + | |
− | | <code>property Extension:Boolean read GetExtension write SetExtension;</code>
| + | |
− | | Record is an extension of the base record
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property PrevRecord:TNTFSDiskRecord read FPrevRecord write FPrevRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property NextRecord:TNTFSDiskRecord read FNextRecord write FNextRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property IsUsed:Boolean read GetIsUsed write SetIsUsed;</code>
| + | |
− | | Record is in use
| + | |
− | |-
| + | |
− | | <code>property IsFolder:Boolean read GetIsFolder write SetIsFolder;</code>
| + | |
− | | Record is a folder
| + | |
− | |-
| + | |
− | | <code>property IsUnknown1:Boolean read GetIsUnknown1 write SetIsUnknown1;</code>
| + | |
− | |-
| + | |
− | | <code>property IsIndexView:Boolean read GetIsIndexView write SetIsIndexView;</code>
| + | |
− | | Record is an index view
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property RecordFlags:Word read FRecordFlags write FRecordFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property HardLinkCount:Word read FHardLinkCount write FHardLinkCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SequenceNumber:Word read FSequenceNumber write FSequenceNumber;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property NextAttributeId:Word read FNextAttributeId write FNextAttributeId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property RecordNumber:Int64 read FRecordNumber write FRecordNumber;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property RecordSize:LongWord read FRecordSize write FRecordSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property RecordAllocated:LongWord read FRecordAllocated write FRecordAllocated;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property AttributeOffset:Word read FAttributeOffset write FAttributeOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property UpdateSequenceOffset:Word read FUpdateSequenceOffset write FUpdateSequenceOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property UpdateSequenceLength:Word read FUpdateSequenceLength write FUpdateSequenceLength;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property UpdateSequenceNumber:Word read FUpdateSequenceNumber write FUpdateSequenceNumber;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property LogFileSequenceNumber:Int64 read FLogFileSequenceNumber write FLogFileSequenceNumber;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Base:TNTFSDiskRecord read FBase write FBase;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Links:TNTFSEntryList read FLinks;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Streams:TNTFSEntryList read FStreams;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Records:TNTFSRecordList read FRecords;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Attributes:TNTFSDiskAttributes read FAttributes;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Origin:TNTFSDiskRecord read GetOrigin;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateLink(AAttribute,AAlternate:TNTFSDiskAttribute; ANew:Boolean):TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroyLink(ALink:TNTFSDiskEntry):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewLink(AAttribute,AAlternate:TNTFSDiskAttribute):TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetLink(AAttribute:TNTFSDiskAttribute):TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeleteLink(ALink:TNTFSDiskEntry):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RenameLink(ALink:TNTFSDiskEntry; AAttribute,AAlternate:TNTFSDiskAttribute):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateStream(AAttribute:TNTFSDiskAttribute; ANew:Boolean):TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroyStream(AStream:TNTFSDiskEntry):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewStream(AAttribute:TNTFSDiskAttribute):TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetStream(AAttribute:TNTFSDiskAttribute):TNTFSDiskEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeleteStream(AStream:TNTFSDiskEntry):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetFileNameByKey(AKey:TNTFSAttributeKey):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetFileNameByName(const AName:String; AInstance:Integer):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetFileNameByParent(const AName:String; const AParent:Int64; AInstance:Integer):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetFileNameByNameSpace(const AName:String; const AParent:Int64; ANameSpace:Byte; AInstance:Integer):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetRecord(AInstance:Integer):TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRecordByFree(AFree:LongWord; AExclude:Boolean):TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRecordByReference(const AFileReference:Int64):TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddRecord(ARecord:TNTFSDiskRecord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveRecord(ARecord:TNTFSDiskRecord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetAttributeByItem(AItem:TNTFSDiskItem):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAttributeByStatus(AInclude,AExclude:Word; AInstance:Integer):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAttributeByVCN(AAttribute:TNTFSDiskAttribute; const AVCN:Int64; var AInstance:LongWord):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAttributeByUnit(AAttribute:TNTFSDiskAttribute; const AUnit:Int64; var AInstance:LongWord):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateAttribute(AType:LongWord; AVersion:Word; ANew:Boolean):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroyAttribute(AAttribute:TNTFSDiskAttribute):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewAttribute(APrevious:TNTFSDiskAttribute; AType:LongWord; const AName:String; AVersion:Word):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAttribute(AType:LongWord; const AName:String; AInstance:Integer):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveAttribute(AAttribute:TNTFSDiskAttribute):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MoveAttribute(ADest:TNTFSDiskRecord; AAttribute:TNTFSDiskAttribute):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RenameAttribute(AAttribute:TNTFSDiskAttribute; const AName:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function FileReference:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function BaseReference:Int64;</code>
| + | |
− | | File reference to the base FILE record
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function LinkCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function StreamCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RecordCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AttributeCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RecordFree:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AttributeSize(AVersion:Word; AType:LongWord):LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedOffset(AVersion:Word):Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedSequenceOffset(AVersion:Word):Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedSequenceLength(ASectorSize:Word):Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamUsed(AVersion:Word; AAttribute:TNTFSDiskAttribute):Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadAttributes(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteAttributes(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadRecord(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word; AFree:Boolean):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteRecord(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk index'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskIndex = class(TLinkedObjBtree)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Index of INDX records. | + | | [[TNTFSDiskIndex|<code>TNTFSDiskIndex = class(TLinkedObjBtree)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(AKeyLocal:TMutexHandle; ALock:TSynchronizerHandle; AVolumeVersion,ASectorSize:Word; AIndexType,ACollateRule:LongWord; AAttribute:TNTFSDiskAttribute);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FKeyLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStatus:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FSectorSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FVolumeVersion:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FIndexType:LongWord;</code>
| + | |
− | | Attribute Type (Or None if Data Index)
| + | |
− | |-
| + | |
− | | <code>FCollateRule:LongWord;</code>
| + | |
− | | Collation Rule
| + | |
− | |-
| + | |
− | | <code>FIndexRecordSize:LongWord;</code>
| + | |
− | | Size of Index Allocation Entry (bytes)
| + | |
− | |-
| + | |
− | | <code>FIndexCounterOffset:LongWord;</code>
| + | |
− | | Index Record Number increment
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FClustersPerIndex:LongWord;</code>
| + | |
− | | Clusters per INDX Record or 0 if less than cluster size
| + | |
− | |-
| + | |
− | | <code>FIndexsPerCluster:LongWord;</code>
| + | |
− | | INDX Records per Cluster or 0 if more than cluster size
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FIndexCounterShift:Word;</code>
| + | |
− | | Shift count for Record -> Counter
| + | |
− | |-
| + | |
− | | <code>FIndexRecordShiftCount:Word;</code>
| + | |
− | | Shift count for Record -> VCN
| + | |
− | |-
| + | |
− | | <code>FIndexRecordOffsetMask:Int64;</code>
| + | |
− | | Mask for Record offset calculation
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FTotalIndexRecordCount:Int64;</code>
| + | |
− | | Total number of index records in index
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FLastFreeIndexRecord:Int64;</code>
| + | |
− | | Or ntfsUnknownRecordNumber if not known
| + | |
− | |-
| + | |
− | | <code>FFreeIndexRecordCount:Int64;</code>
| + | |
− | | Or ntfsUnknownRecordNumber if not known
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FCompareSecurityDescriptor:TNTFSCompareSecurityDescriptor;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FUpCase:TNTFSUpCase;</code>
| + | |
− | | Uppercase Conversion Table
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FNodes:TNTFSDiskNodes;</code>
| + | |
− | | List of index nodes
| + | |
− | |-
| + | |
− | | <code>FAttribute:TNTFSDiskAttribute;</code>
| + | |
− | | Attribute owning this index
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetNodesLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetKeyLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetNodeLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetLoaded:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetLoaded(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetChanged:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetUpCase:PNTFSUpCaseData;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRootNode:TNTFSDiskNode;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateNodes(ANew:Boolean):TNTFSDiskNodes;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CompareKey(AEntry1,AEntry2:Pointer; ASize1,ASize2:Word):Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CompareBinary(AEntry1,AEntry2:Pointer; ASize1,ASize2:Word):Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareFileName(AEntry1,AEntry2:PWideChar; ASize1,ASize2:Word):Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareUnicode(AEntry1,AEntry2:PWideChar; ASize1,ASize2:Word):Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareLongWord(AEntry1,AEntry2:LongWord; ASize1,ASize2:Word):Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareSID(AEntry1,AEntry2:PSID; ASize1,ASize2:Word):Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareSecurityHash(AEntry1,AEntry2:PNTFSSecurityHashKeyData; ASize1,ASize2:Word):Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareGUID(AEntry1,AEntry2:PGUID; ASize1,ASize2:Word):Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetEnd(AEntry:TBtreeObject):TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetStart(AEntry:TBtreeObject):TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetBlank(AEntry:TBtreeObject):TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetMedian(AEntry:TBtreeObject):TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetDropTest(AEntry:TBtreeObject; var ALeft:Boolean):TBtreeObject;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetDrop(AEntry:TBtreeObject; var ALeft:Boolean):TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetMerge(AEntry:TBtreeObject):TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetBorrow(AEntry:TBtreeObject):TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetTarget(ADrop:TBtreeObject; ALeft:Boolean):TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function PushNode(AEntry:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function SplitNode(AEntry:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DropNode(AEntry,ADrop,ATarget:TBtreeObject; ALeft:Boolean):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DropNodeOld(AEntry,ADrop:TBtreeObject; ALeft:Boolean):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MergeNode(AEntry,AMerge:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function BorrowEntry(AEntry,ABorrow:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SwapEntry(AEntry,ASwap:TBtreeObject;ALeft:Boolean):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function SetParentEntry(AEntry,AParent:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function DeleteBlank(ABlank:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AttachBlank(ABlank:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DetachBlank(ABlank:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AttachEntry(AEntry:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DetachEntry(AEntry:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RequirePush(AEntry:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RequireSplit(AEntry:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RequireDrop(AEntry:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RequireMerge(AEntry:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RequireBorrow(AEntry:TBtreeObject):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Loaded:Boolean read GetLoaded write SetLoaded;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Changed:Boolean read GetChanged;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property SectorSize:Word read FSectorSize write FSectorSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property VolumeVersion:Word read FVolumeVersion;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property IndexType:LongWord read FIndexType write FIndexType;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property CollateRule:LongWord read FCollateRule write FCollateRule;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IndexRecordSize:LongWord read FIndexRecordSize write FIndexRecordSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IndexCounterOffset:LongWord read FIndexCounterOffset write FIndexCounterOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property ClustersPerIndex:LongWord read FClustersPerIndex write FClustersPerIndex;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IndexsPerCluster:LongWord read FIndexsPerCluster write FIndexsPerCluster;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property IndexCounterShift:Word read FIndexCounterShift write FIndexCounterShift;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IndexRecordShiftCount:Word read FIndexRecordShiftCount write FIndexRecordShiftCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IndexRecordOffsetMask:Int64 read FIndexRecordOffsetMask write FIndexRecordOffsetMask;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property TotalIndexRecordCount:Int64 read FTotalIndexRecordCount write FTotalIndexRecordCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property LastFreeIndexRecord:Int64 read FLastFreeIndexRecord write FLastFreeIndexRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property FreeIndexRecordCount:Int64 read FFreeIndexRecordCount write FFreeIndexRecordCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property CompareSecurityDescriptor:TNTFSCompareSecurityDescriptor read FCompareSecurityDescriptor write FCompareSecurityDescriptor;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property UpCase:TNTFSUpCase read FUpCase write FUpCase;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Nodes:TNTFSDiskNodes read FNodes;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Attribute:TNTFSDiskAttribute read FAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property RootNode:TNTFSDiskNode read GetRootNode;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function NodeCount:Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateKey(ANode:TNTFSDiskNode; ABlank:Boolean):TNTFSDiskKey; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroyKey(AKey:TNTFSDiskKey):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewKey(AKey,AData:Pointer; AKeySize,ADataSize:Word):TNTFSDiskKey; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewKeyEx(AKey,AData,APadding:Pointer; AKeySize,ADataSize,APaddingSize:Word):TNTFSDiskKey; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AddKey(AParent,AKey:TNTFSDiskKey):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function InsertKey(AKey:TNTFSDiskKey):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveKey(AKey:TNTFSDiskKey):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateNode(ANew:Boolean):TNTFSDiskNode;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroyNode(ANode:TNTFSDiskNode):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewNode(const ARecordNumber:Int64):TNTFSDiskNode;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetNode(const ARecordNumber:Int64):TNTFSDiskNode;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeleteNode(ANode:TNTFSDiskNode):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveNode(ANode:TNTFSDiskNode):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function UpdateNodes(AVersion:Word):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function FindKey(AValue:Pointer; ASize:Word):TNTFSDiskKey; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadRoot(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteRoot(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadKeys(AParent:TNTFSDiskKey; ANode:TNTFSDiskNode; ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteKeys(AParent:TNTFSDiskKey; ANode:TNTFSDiskNode; ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReaderLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReaderUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriterLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriterUnlock:Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− |
| + | |
− | '''NTFS data index'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDataIndex = class(TNTFSDiskIndex)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | + | | [[TNTFSDataIndex|<code>TNTFSDataIndex = class(TNTFSDiskIndex)</code>]] |
− | |-
| + | |
− | | <code>function CompareSecurityDescriptor(AHash1,AHash2,ASecurityId:LongWord; ADescriptor:Pointer; ASize:Word):Integer;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Find(AValue:Pointer; ASize:Word; ACurrent:TNTFSDataKey):TNTFSDataKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function FindEx(AValue:Pointer; ASize:Word; AHash:LongWord; ACurrent:TNTFSDataKey):TNTFSDataKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateBlank:TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Compare(AEntry1,AEntry2:TBtreeObject):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateKey(ANode:TNTFSDiskNode; ABlank:Boolean):TNTFSDiskKey; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewKey(AKey,AData:Pointer; AKeySize,ADataSize:Word):TNTFSDiskKey; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetKeyBySID(ASID:PSID):TNTFSDiskKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetKeyByOwner(AOwner:LongWord):TNTFSDiskKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetKeyByObjectId(const AObjectId:TGUID):TNTFSDiskKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetKeyBySecurity(ASecurity:TNTFSSecurity):TNTFSDiskKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetKeyByReparse(AReparseTag:LongWord; const AFileReference:Int64):TNTFSDiskKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function FindKey(AValue:Pointer;ASize:Word):TNTFSDiskKey; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS padded index'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSPaddedIndex = class(TNTFSDataIndex)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: A DataIndex that allows a block of Padding to be specified. | + | | [[TNTFSPaddedIndex|<code>TNTFSPaddedIndex = class(TNTFSDataIndex)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateBlank:TBtreeObject; override;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateBlank:TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateKey(ANode:TNTFSDiskNode; ABlank:Boolean):TNTFSDiskKey; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewKey(AKey,AData:Pointer; AKeySize,ADataSize:Word):TNTFSDiskKey; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewKeyEx(AKey,AData,APadding:Pointer; AKeySize,ADataSize,APaddingSize:Word):TNTFSDiskKey; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS attribute index'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSAttributeIndex = class(TNTFSDiskIndex)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | + | | [[TNTFSAttributeIndex|<code>TNTFSAttributeIndex = class(TNTFSDiskIndex)</code>]] |
− | |-
| + | |
− | | <code>function Find(AValue:Pointer; ASize:Word; ACurrent:TNTFSAttributeKey):TNTFSAttributeKey;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateBlank:TBtreeObject; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Compare(AEntry1,AEntry2:TBtreeObject):Integer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateKey(ANode:TNTFSDiskNode; ABlank:Boolean):TNTFSDiskKey; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewKey(AKey,AData:Pointer; AKeySize,ADataSize:Word):TNTFSDiskKey; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetKeyByFileName(const AFileName:String):TNTFSDiskKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function NewKeyByAttribute(AAttribute:TNTFSDiskAttribute):TNTFSDiskKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetKeyByAttribute(AAttribute:TNTFSDiskAttribute):TNTFSDiskKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function FindKey(AValue:Pointer; ASize:Word):TNTFSDiskKey; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk nodes'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskNodes = class(TFileSysListEx)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ANodeLocal:TMutexHandle; ALock:TSynchronizerHandle);</code> | + | | [[TNTFSDiskNodes|<code>TNTFSDiskNodes = class(TFileSysListEx)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FNodeLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetModified:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetModified(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Modified:Boolean read GetModified write SetModified;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function TotalSize:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function NodeCount:LongWord;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk node'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskNode = class(TListObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Represents an INDX record header. | + | | [[TNTFSDiskNode|<code>TNTFSDiskNode = class(TListObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AIndex:TNTFSDiskIndex);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLocalLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStatus:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FIndexFlags:Word;</code>
| + | |
− | | Flags (See Consts)
| + | |
− | |-
| + | |
− | | <code>FIndexSize:LongWord;</code>
| + | |
− | | Total size of the Index Entries
| + | |
− | |-
| + | |
− | | <code>FIndexAllocated:LongWord;</code>
| + | |
− | | Allocated size of the Index Entries
| + | |
− | |-
| + | |
− | | <code>FEntryOffset:LongWord;</code>
| + | |
− | | Offset to first Index Entry
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FRecordNumber:Int64;</code>
| + | |
− | | Number of this INDX record in the Index Allocation
| + | |
− | |-
| + | |
− | | <code>FUpdateSequenceOffset:Word;</code>
| + | |
− | | Offset to the Update Sequence Record
| + | |
− | |-
| + | |
− | | <code>FUpdateSequenceLength:Word;</code>
| + | |
− | | Size in words of the Update Sequence Record
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FUpdateSequenceNumber:Word;</code>
| + | |
− | | Update Sequence Number
| + | |
− | |-
| + | |
− | | <code>FLogFileSequenceNumber:Int64;</code>
| + | |
− | | LogFile sequence number
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FIndex:TNTFSDiskIndex;</code>
| + | |
− | | Index owning this node
| + | |
− | |-
| + | |
− | | <code>FBlank:TNTFSDiskKey;</code>
| + | |
− | | Blank key of this node (Blank keys do not move)
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetAdded:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetAdded(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetDeleted:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetDeleted(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetChanged:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetChanged(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetModified:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetModified(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetIsRoot:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetHasSubNodes:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetHasSubNodes(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetStart:TNTFSDiskKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Added:Boolean read GetAdded write SetAdded;</code>
| + | |
− | | Index record to be allocated
| + | |
− | |-
| + | |
− | | <code>property Deleted:Boolean read GetDeleted write SetDeleted;</code>
| + | |
− | | Index record to be deallocated
| + | |
− | |-
| + | |
− | | <code>property Changed:Boolean read GetChanged write SetChanged;</code>
| + | |
− | | Index record to be updated
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Modified:Boolean read GetModified write SetModified;</code>
| + | |
− | | Index record has been added, deleted or changed
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property IsRoot:Boolean read GetIsRoot;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property HasSubNodes:Boolean read GetHasSubNodes write SetHasSubNodes;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property IndexFlags:Word read FIndexFlags write FIndexFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IndexSize:LongWord read FIndexSize write FIndexSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IndexAllocated:LongWord read FIndexAllocated write FIndexAllocated;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property EntryOffset:LongWord read FEntryOffset write FEntryOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property RecordNumber:Int64 read FRecordNumber write FRecordNumber;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property UpdateSequenceOffset:Word read FUpdateSequenceOffset write FUpdateSequenceOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property UpdateSequenceLength:Word read FUpdateSequenceLength write FUpdateSequenceLength;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property UpdateSequenceNumber:Word read FUpdateSequenceNumber write FUpdateSequenceNumber;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property LogFileSequenceNumber:Int64 read FLogFileSequenceNumber write FLogFileSequenceNumber;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Index:TNTFSDiskIndex read FIndex;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Blank:TNTFSDiskKey read FBlank write FBlank;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Start:TNTFSDiskKey read GetStart;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function KeyCount:Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function IndexFree:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function UpdateKeys(AVersion:Word):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedOffset(AVersion:Word):LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedAllocated(AVersion:Word):LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedSequenceOffset(AVersion:Word):Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedSequenceLength(ASectorSize:Word):Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function WriteEmpty(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word; var AUpdateSequenceOffset,AUpdateSequenceLength:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadRecord(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteRecord(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadHeader(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteHeader(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk key'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskKey = class(TBtreeObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Represents an INDX record entry. | + | | [[TNTFSDiskKey|<code>TNTFSDiskKey = class(TBtreeObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLocalLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStatus:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FKey:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FEntryFlags:Word;</code>
| + | |
− | | Flags (See Consts)
| + | |
− | |-
| + | |
− | | <code>FEntrySize:Word;</code>
| + | |
− | | Length of the index entry
| + | |
− | |-
| + | |
− | | <code>FKeySize:Word;</code>
| + | |
− | | Length of the key entry
| + | |
− | |-
| + | |
− | | <code>FSubNodeNumber:Int64;</code>
| + | |
− | | Number of the sub-node in the index allocation attribute
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FNode:TNTFSDiskNode;</code>
| + | |
− | | Index node of this key
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetChanged:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetChanged(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetHasSubNode:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetHasSubNode(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsLastNode:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsLastNode(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetKeySize(ASize:Word); virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetSubNodeNumber(const ANodeNumber:Int64);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetNode(ANode:TNTFSDiskNode);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Changed:Boolean read GetChanged write SetChanged;</code>
| + | |
− | | Index record to be updated
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property HasSubNode:Boolean read GetHasSubNode write SetHasSubNode;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsLastNode:Boolean read GetIsLastNode write SetIsLastNode;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Key:Pointer read FKey;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property EntryFlags:Word read FEntryFlags write FEntryFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property EntrySize:Word read FEntrySize write FEntrySize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property KeySize:Word read FKeySize write SetKeySize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SubNodeNumber:Int64 read FSubNodeNumber write SetSubNodeNumber;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Node:TNTFSDiskNode read FNode write SetNode;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):Word; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadKey(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteKey(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; virtual;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS data key'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDataKey = class(TNTFSDiskKey)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | + | | [[TNTFSDataKey|<code>TNTFSDataKey = class(TNTFSDiskKey)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FData:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FDataSize:Word;</code>
| + | |
− | | Size of the data (Only valid when the last entry flag is not set)
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetKeySize(ASize:Word); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetData(AData:Pointer);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(ASize:Word);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Data:Pointer read FData write SetData;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property DataSize:Word read FDataSize write SetDataSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function DataOffset:Word;</code>
| + | |
− | | Offset to the data (Only valid when the last entry flag is not set)
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadKey(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteKey(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− |
| + | |
− | '''NTFS padded key'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSPaddedKey = class(TNTFSDataKey)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | + | | [[TNTFSPaddedKey|<code>TNTFSPaddedKey = class(TNTFSDataKey)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FPadding:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FPaddingSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetPadding(APadding:Pointer);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetPaddingSize(ASize:Word);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Padding:Pointer read FPadding write SetPadding;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property PaddingSize:Word read FPaddingSize write SetPaddingSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadKey(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteKey(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS attribute key'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSAttributeKey = class(TNTFSDiskKey)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;" | + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code>
| + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FFileReference:Int64;</code>
| + | |
− | | File reference (Only valid when the last entry flag is not set)
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAttribute:TNTFSDiskAttribute;</code>
| + | |
− | | Indexed attribute of this key
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetInvalid:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetInvalid(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetKeySize(ASize:Word); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetAttribute(AAttribute:TNTFSDiskAttribute);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Invalid:Boolean read GetInvalid write SetInvalid;</code>
| + | |
− | | Key points to invalid file record or attribute
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property FileReference:Int64 read FFileReference write FFileReference;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Attribute:TNTFSDiskAttribute read FAttribute write SetAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function UpdateKey:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RecordNumber:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadKey(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
− | | <code>function WriteKey(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code> | + | | [[TNTFSAttributeKey|<code>TNTFSAttributeKey = class(TNTFSDiskKey)</code>]] |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk runs'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskRuns = class(TFileSysListEx)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ARunLocal:TMutexHandle; ALock:TSynchronizerHandle);</code> | + | | [[TNTFSDiskRuns|<code>TNTFSDiskRuns = class(TFileSysListEx)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FRunLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FRecent:TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FRecentVCN:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetStart:TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetFinal:TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Recent:TNTFSDiskRun read FRecent write FRecent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property RecentVCN:Int64 read FRecentVCN write FRecentVCN;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SparseCount:Int64;</code>
| + | |
− | | Count of sparse runs in list
| + | |
− | |-
| + | |
− | | <code>function ClusterCount:Int64;</code>
| + | |
− | | Count of normal runs in list
| + | |
− | |-
| + | |
− | | <code>function AllocatedCount:Int64;</code>
| + | |
− | | Count of allocated runs in list
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function TotalSize:LongWord;</code>
| + | |
− | | Total size of the encoded data runs
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RunCount:LongWord;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk run'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskRun = class(TListObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AAttribute:TNTFSDiskAttribute);</code> | + | | [[TNTFSDiskRun|<code>TNTFSDiskRun = class(TListObject)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLocalLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStart:Int64;</code>
| + | |
− | | Run start logical cluster
| + | |
− | |-
| + | |
− | | <code>FOffset:Int64;</code>
| + | |
− | | Run start cluster offset
| + | |
− | |-
| + | |
− | | <code>FLength:Int64;</code>
| + | |
− | | Run length in clusters
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAttribute:TNTFSDiskAttribute;</code>
| + | |
− | | Attribute owning this run
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetIsLast:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsSparse:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetOffsetSize:Byte;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetLengthSize:Byte;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetStart(const AStart:Int64);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetOffset(const AOffset:Int64);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetSuccessor:TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetPredecessor:TNTFSDiskRun;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property IsLast:Boolean read GetIsLast;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsSparse:Boolean read GetIsSparse;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Start:Int64 read FStart write SetStart;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Offset:Int64 read FOffset write SetOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Length:Int64 read FLength write FLength;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Attribute:TNTFSDiskAttribute read FAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RunSize:LongWord; </code>
| + | |
− | | Size of the encoded data run
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function UpdateRun:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadRun(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteRun(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk items'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskItems = class(TFileSysListEx)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(AItemLocal:TMutexHandle; ALock:TSynchronizerHandle);</code> | + | | [[TNTFSDiskItems|<code>TNTFSDiskItems = class(TFileSysListEx)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FItemLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStatus:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetLoaded:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetLoaded(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetPrevious(AItem:TNTFSDiskItem):TNTFSDiskItem;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Loaded:Boolean read GetLoaded write SetLoaded;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function TotalSize:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ItemCount:LongWord;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk item'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskItem = class(TListObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of attribute $ATTRIBUTE_LIST | + | | [[TNTFSDiskItem|<code>TNTFSDiskItem = class(TListObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskAttribute);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLocalLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStatus:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FItemSize:Word;</code>
| + | |
− | | Record length
| + | |
− | |-
| + | |
− | | <code>FStartVCN:Int64;</code>
| + | |
− | | Starting VCN if non resident
| + | |
− | |-
| + | |
− | | <code>FFileReference:Int64;</code>
| + | |
− | | File Reference of the attribute
| + | |
− | |-
| + | |
− | | <code>FAttributeType:LongWord;</code>
| + | |
− | | Attribute Type
| + | |
− | |-
| + | |
− | | <code>FAttributeId:Word;</code>
| + | |
− | | Attribute Id
| + | |
− | |-
| + | |
− | | <code>FAttributeName:String;</code>
| + | |
− | | Name in Unicode (if NameLength > 0)
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FParent:TNTFSDiskAttribute;</code>
| + | |
− | | Attribute list owning this item
| + | |
− | |-
| + | |
− | | <code>FAttribute:TNTFSDiskAttribute;</code>
| + | |
− | | Attribute pointed to by this item
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAttributeHash:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetInvalid:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetInvalid(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetAttributeName:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetAttributeName(const AAttributeName:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetAttribute(AAttribute:TNTFSDiskAttribute);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Compare(AItem:TNTFSDiskItem):Integer; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Invalid:Boolean read GetInvalid write SetInvalid;</code>
| + | |
− | | Item points to invalid file record or attribute
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property ItemSize:Word read FItemSize write FItemSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property StartVCN:Int64 read FStartVCN write FStartVCN;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property FileReference:Int64 read FFileReference write FFileReference;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AttributeType:LongWord read FAttributeType write FAttributeType;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AttributeId:Word read FAttributeId write FAttributeId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AttributeName:String read GetAttributeName write SetAttributeName;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Parent:TNTFSDiskAttribute read FParent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Attribute:TNTFSDiskAttribute read FAttribute write SetAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property AttributeHash:LongWord read FAttributeHash;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RecordNumber:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AttributeNameSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AttributeNameLength:Byte;</code>
| + | |
− | | Name length
| + | |
− | |-
| + | |
− | | <code>function AttributeNameOffset:Byte;</code>
| + | |
− | | Offset to Name
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function UpdateItem:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadItem(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteItem(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS disk attributes'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskAttributes = class(TFileSysListEx)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(AAttributeLocal:TMutexHandle; ALock:TSynchronizerHandle);</code> | + | | [[TNTFSDiskAttributes|<code>TNTFSDiskAttributes = class(TFileSysListEx)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FAttributeLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetPrevious(AAttribute:TNTFSDiskAttribute):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function TotalSize:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AttributeCount:LongWord;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− |
| + | |
− | '''NTFS disk attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDiskAttribute = class(TListObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSDiskAttribute|<code>TNTFSDiskAttribute = class(TListObject)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLocalLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FStatus:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FData:Pointer;</code>
| + | |
− | | Only applicable if attribute is resident
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAttributeType:LongWord;</code>
| + | |
− | | Attribute Type (e.g. 0x80, 0xA0)
| + | |
− | |-
| + | |
− | | <code>FAttributeSize:LongWord;</code>
| + | |
− | | Length of the Attribute (including header)
| + | |
− | |-
| + | |
− | | <code>FAttributeFlags:Word;</code>
| + | |
− | | Attribute Flags
| + | |
− | |-
| + | |
− | | <code>FAttributeId:Word;</code>
| + | |
− | | Attribute Id
| + | |
− | |-
| + | |
− | | <code>FAttributeName:String;</code>
| + | |
− | | Attribute Name
| + | |
− | |-
| + | |
− | | <code>FNonResident:Byte;</code>
| + | |
− | | Non-resident flag
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FIndexed:Byte;</code>
| + | |
− | | Indexed flag
| + | |
− | |-
| + | |
− | | <code>FDataSize:LongWord;</code>
| + | |
− | | Length of the Attribute Data
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FStartVCN:Int64;</code>
| + | |
− | | Starting VCN
| + | |
− | |-
| + | |
− | | <code>FLastVCN:Int64;</code>
| + | |
− | | Last VCN
| + | |
− | |-
| + | |
− | | <code>FStreamSize:Int64;</code>
| + | |
− | | Real size of the attribute
| + | |
− | |-
| + | |
− | | <code>FStreamUsed:Int64;</code>
| + | |
− | | The actual Allocated size of the attribute (Only present when compressed and only in the first instance)
| + | |
− | |-
| + | |
− | | <code>FStreamAllocated:Int64;</code>
| + | |
− | | Allocated size of the attribute
| + | |
− | |-
| + | |
− | | <code>FInitializedSize:Int64;</code>
| + | |
− | | Initialized data size of the stream (Portion which has been Written)
| + | |
− | |-
| + | |
− | | <code>FCompressionUnit:Word;</code>
| + | |
− | | Compression Unit Size
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FRuns:TNTFSDiskRuns;</code>
| + | |
− | | List of runs of this attribute
| + | |
− | |-
| + | |
− | | <code>FItems:TNTFSDiskItems;</code>
| + | |
− | | List of items of this attribute
| + | |
− | |-
| + | |
− | | <code>FIndex:TNTFSDiskIndex;</code>
| + | |
− | | Index of this attribute if applicable
| + | |
− | |-
| + | |
− | | <code>FParent:TNTFSDiskRecord;</code>
| + | |
− | | Record owning this attribute
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAttributeHash:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetRunsLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetItemsLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIndexLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetExtendedsLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetRunLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetItemLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetKeyLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetExtendedLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetUpdating:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetUpdating(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetIsFixed:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsSingle:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsUnlisted:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsUnmovable:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsManaged:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetIsSparse:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsSparse(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsEncrypted:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsEncrypted(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsCompressed:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsCompressed(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetAttributeName:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetAttributeName(const AAttributeName:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetDataSize:LongWord; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(AValue:LongWord); virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Compare(AAttribute:TNTFSDiskAttribute):Integer; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateRuns(ANew:Boolean):TNTFSDiskRuns;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CreateItems(ANew:Boolean):TNTFSDiskItems;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetRecord(AInstance:Integer):TNTFSDiskRecord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAttribute(AType:LongWord; const AName:String; AInstance:Integer):TNTFSDiskAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Updating:Boolean read GetUpdating write SetUpdating;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property IsFixed:Boolean read GetIsFixed;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsSingle:Boolean read GetIsSingle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsUnlisted:Boolean read GetIsUnlisted;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsUnmovable:Boolean read GetIsUnmovable;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsManaged:Boolean read GetIsManaged;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property IsSparse:Boolean read GetIsSparse write SetIsSparse;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsEncrypted:Boolean read GetIsEncrypted write SetIsEncrypted;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsCompressed:Boolean read GetIsCompressed write SetIsCompressed;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Data:Pointer read FData;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property AttributeType:LongWord read FAttributeType;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AttributeSize:LongWord read FAttributeSize write FAttributeSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AttributeFlags:Word read FAttributeFlags write FAttributeFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AttributeId:Word read FAttributeId write FAttributeId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AttributeName:String read GetAttributeName write SetAttributeName;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property NonResident:Byte read FNonResident write FNonResident;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Indexed:Byte read FIndexed write FIndexed;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property DataSize:LongWord read GetDataSize write SetDataSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property StartVCN:Int64 read FStartVCN write FStartVCN;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property LastVCN:Int64 read FLastVCN write FLastVCN;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property StreamSize:Int64 read FStreamSize write FStreamSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property StreamUsed:Int64 read FStreamUsed write FStreamUsed;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property StreamAllocated:Int64 read FStreamAllocated write FStreamAllocated;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property InitializedSize:Int64 read FInitializedSize write FInitializedSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property CompressionUnit:Word read FCompressionUnit write FCompressionUnit;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Runs:TNTFSDiskRuns read FRuns;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Items:TNTFSDiskItems read FItems;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Index:TNTFSDiskIndex read FIndex;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Parent:TNTFSDiskRecord read FParent write FParent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property AttributeHash:LongWord read FAttributeHash;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetRunCount(const AVCN:Int64; var AStartVCN,ACount:Int64):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRunLength(const AVCN:Int64; var AStartVCN,ALength:Int64):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRunByUnit(const AUnit:Int64; var AStartVCN:Int64):TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRunByCluster(const ACluster:Int64; var AStartVCN:Int64):TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateRun(ANew:Boolean):TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroyRun(ARun:TNTFSDiskRun):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewRun(const AStart,ALength:Int64):TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function InsertRun(APrev:TNTFSDiskRun; const AStart,ALength:Int64):TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRun(const AVCN:Int64; var AStartVCN:Int64):TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRunOld(const AVCN:Int64; var AStartVCN:Int64):TNTFSDiskRun;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MergeRun(ARun:TNTFSDiskRun):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function SplitRun(ARun:TNTFSDiskRun; const ALength:Int64):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveRun(ARun:TNTFSDiskRun):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MoveRun(ADest:TNTFSDiskAttribute; ARun:TNTFSDiskRun):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetItemByAttribute(AAttribute:TNTFSDiskAttribute):TNTFSDiskItem;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateItem(ANew:Boolean):TNTFSDiskItem;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroyItem(AItem:TNTFSDiskItem):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewItem(AAttribute:TNTFSDiskAttribute):TNTFSDiskItem;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetItem(AType:LongWord; const AName:String; AInstance:Integer):TNTFSDiskItem;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveItem(AItem:TNTFSDiskItem):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MoveItem(AItem:TNTFSDiskItem; AAttribute:TNTFSDiskAttribute):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RenameItem(AItem:TNTFSDiskItem; AAttribute:TNTFSDiskAttribute):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateIndex(AVersion,ASector:Word):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewIndex(AVersion,ASector:Word; AType,ARule,ASize,AOffset:LongWord):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RecordNumber:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function FileReference:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function BaseReference:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RunOffset:Word;</code>
| + | |
− | | Offset to the Data Run
| + | |
− | |-
| + | |
− | | <code>function DataOffset:Word;</code>
| + | |
− | | Offset to the Attribute Data
| + | |
− | |-
| + | |
− | | <code>function AttributeNameSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AttributeNameLength:Byte;</code>
| + | |
− | | Name length
| + | |
− | |-
| + | |
− | | <code>function AttributeNameOffset:Word;</code>
| + | |
− | | Offset to the Name
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function RunCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ItemCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):LongWord; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedDataSize(AVersion:Word):LongWord; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamUsed(AVersion:Word):Int64; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CoalesceRun(ARun:TNTFSDiskRun):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function UpdateRun(ARun:TNTFSDiskRun):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateKey(AKey:TNTFSDiskKey):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateItem(AItem:TNTFSDiskItem):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateEntry(AEntry:TNTFSDiskEntry):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateAttribute(AEntry:TNTFSDiskEntry):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadRuns(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteRuns(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadItems(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteItems(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadAttribute(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteAttribute(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; virtual;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− |
| + | |
− | '''NTFS standard information attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSStandardInformationAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSStandardInformationAttribute|<code>TNTFSStandardInformationAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FCreateTime:TFileTime;</code>
| + | |
− | | File Creation
| + | |
− | |-
| + | |
− | | <code>FWriteTime:TFileTime;</code>
| + | |
− | | File Altered
| + | |
− | |-
| + | |
− | | <code>FChangeTime:TFileTime;</code>
| + | |
− | | MFT Changed
| + | |
− | |-
| + | |
− | | <code>FAccessTime:TFileTime;</code>
| + | |
− | | File Read
| + | |
− | |-
| + | |
− | | <code>FAttributes:LongWord;</code>
| + | |
− | | DOS File Permissions
| + | |
− | |-
| + | |
− | | <code>FMaxVersions:LongWord;</code>
| + | |
− | | Maximum Number of Versions
| + | |
− | |-
| + | |
− | | <code>FVersionNo:LongWord;</code>
| + | |
− | | Version Number
| + | |
− | |-
| + | |
− | | <code>FClassId:LongWord;</code>
| + | |
− | | Class Id
| + | |
− | |-
| + | |
− | | <code>FOwnerId:LongWord;</code>
| + | |
− | | Owner Id
| + | |
− | |-
| + | |
− | | <code>FSecurityId:LongWord;</code>
| + | |
− | | Security Id
| + | |
− | |-
| + | |
− | | <code>FQuotaCharge:Int64;</code>
| + | |
− | | Quota Charged
| + | |
− | |-
| + | |
− | | <code>FUpdateSequenceNumber:Int64;</code>
| + | |
− | | Update Sequence Number
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property CreateTime:TFileTime read FCreateTime write FCreateTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property WriteTime:TFileTime read FWriteTime write FWriteTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ChangeTime:TFileTime read FChangeTime write FChangeTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AccessTime:TFileTime read FAccessTime write FAccessTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Attributes:LongWord read FAttributes write FAttributes;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property MaxVersions:LongWord read FMaxVersions write FMaxVersions;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property VersionNo:LongWord read FVersionNo write FVersionNo;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ClassId:LongWord read FClassId write FClassId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OwnerId:LongWord read FOwnerId write FOwnerId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SecurityId:LongWord read FSecurityId write FSecurityId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property QuotaCharge:Int64 read FQuotaCharge write FQuotaCharge;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property UpdateSequenceNumber:Int64 read FUpdateSequenceNumber write FUpdateSequenceNumber;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function UpdateEntry(AEntry:TNTFSDiskEntry):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateAttribute(AEntry:TNTFSDiskEntry):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS attribute list'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSAttributeListAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSAttributeListAttribute|<code>TNTFSAttributeListAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS file name attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSFileNameAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSFileNameAttribute|<code>TNTFSFileNameAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FParentReference:Int64;</code>
| + | |
− | | File reference to the parent directory
| + | |
− | |-
| + | |
− | | <code>FCreateTime:TFileTime;</code>
| + | |
− | | C Time - File Creation
| + | |
− | Note: These fields are only updated when the filename is changed (See Standard Information instead)
| + | |
− | |-
| + | |
− | | <code>FWriteTime:TFileTime;</code>
| + | |
− | | A Time - File Altered
| + | |
− | Note: These fields are only updated when the filename is changed (See Standard Information instead)
| + | |
− | |-
| + | |
− | | <code>FChangeTime:TFileTime;</code>
| + | |
− | | M Time - MFT Changed
| + | |
− | Note: These fields are only updated when the filename is changed (See Standard Information instead)
| + | |
− | |-
| + | |
− | | <code>FAccessTime:TFileTime;</code>
| + | |
− | | R Time - File Read
| + | |
− | Note: These fields are only updated when the filename is changed (See Standard Information instead)
| + | |
− | |-
| + | |
− | | <code>FFileAllocated:Int64;</code>
| + | |
− | | Allocated size of the file (As for CreateTime/WriteTime/ChangeTime etc)
| + | |
− | |-
| + | |
− | | <code>FFileSize:Int64;</code>
| + | |
− | | Real size of the file (As for CreateTime/WriteTime/ChangeTime etc)
| + | |
− | |-
| + | |
− | | <code>FFileFlags:LongWord;</code>
| + | |
− | | Flags, e.g. Directory, compressed, hidden (As for CreateTime/WriteTime/ChangeTime etc)
| + | |
− | |-
| + | |
− | | <code>FReparseTag:LongWord;</code>
| + | |
− | | Used by EAs and Reparse
| + | |
− | |-
| + | |
− | | <code>FNameSpace:Byte;</code>
| + | |
− | | Filename namespace
| + | |
− | |-
| + | |
− | | <code>FFileName:String;</code>
| + | |
− | | File name
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FFileHash:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetFileName:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetFileName(const AFileName:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property ParentReference:Int64 read FParentReference write FParentReference;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property CreateTime:TFileTime read FCreateTime write FCreateTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property WriteTime:TFileTime read FWriteTime write FWriteTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ChangeTime:TFileTime read FChangeTime write FChangeTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AccessTime:TFileTime read FAccessTime write FAccessTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property FileAllocated:Int64 read FFileAllocated write FFileAllocated;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property FileSize:Int64 read FFileSize write FFileSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property FileFlags:LongWord read FFileFlags write FFileFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ReparseTag:LongWord read FReparseTag write FReparseTag;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property NameSpace:Byte read FNameSpace write FNameSpace;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property FileName:String read GetFileName write SetFileName;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property FileHash:LongWord read FFileHash;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function FileNameSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function FileNameLength:Byte;</code>
| + | |
− | | Filename length in characters
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ParentRecord:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function UpdateEntry(AEntry:TNTFSDiskEntry):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateAttribute(AEntry:TNTFSDiskEntry):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS object Id attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSObjectIdAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSObjectIdAttribute|<code>TNTFSObjectIdAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FObjectId:TGUID;</code>
| + | |
− | | GUID Object Id Unique Id assigned to file
| + | |
− | |-
| + | |
− | | <code>FBirthVolumeId:TGUID;</code>
| + | |
− | | GUID Birth Volume Id Volume where file was created
| + | |
− | |-
| + | |
− | | <code>FBirthObjectId:TGUID;</code>
| + | |
− | | GUID Birth Object Id Original Object Id of file
| + | |
− | |-
| + | |
− | | <code>FDomainId:TGUID;</code>
| + | |
− | | GUID Domain Id Domain in which object was created
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property ObjectId:TGUID read FObjectId write FObjectId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property BirthVolumeId:TGUID read FBirthVolumeId write FBirthVolumeId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property BirthObjectId:TGUID read FBirthObjectId write FBirthObjectId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property DomainId:TGUID read FDomainId write FDomainId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− |
| + | |
− | '''NTFS volume version attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSVolumeVersionAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSVolumeVersionAttribute|<code>TNTFSVolumeVersionAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(AValue:LongWord); override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS security descriptor attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSSecurityDescriptorAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: This is the same structure that is used for all security in Windows (File/Kernel/Registry etc). See TSecurityDescriptor and associated values in Security unit for more information. | + | | [[TNTFSSecurityDescriptorAttribute|<code>TNTFSSecurityDescriptorAttribute = class(TNTFSDiskAttribute)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FSecurity:TNTFSSecurity;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Security:TNTFSSecurity read FSecurity;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateSecurity:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewSecurity(ASecurity:TNTFSSecurity):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadSecurity(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteSecurity(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS volume name attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSVolumeNameAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSVolumeNameAttribute|<code>TNTFSVolumeNameAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FVolumeName:String;</code>
| + | |
− | | Volume name
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetVolumeName:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetVolumeName(const AVolumeName:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property VolumeName:String read GetVolumeName write SetVolumeName;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS volume information attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSVolumeInformationAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSVolumeInformationAttribute|<code>TNTFSVolumeInformationAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FMajorVersion:Byte;</code>
| + | |
− | | Major version number
| + | |
− | |-
| + | |
− | | <code>FMinorVersion:Byte;</code>
| + | |
− | | Minor version number
| + | |
− | |-
| + | |
− | | <code>FVolumeFlags:Word;</code>
| + | |
− | | Flags
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property MajorVersion:Byte read FMajorVersion write FMajorVersion;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property MinorVersion:Byte read FMinorVersion write FMinorVersion;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property VolumeFlags:Word read FVolumeFlags write FVolumeFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS data attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSDataAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSDataAttribute|<code>TNTFSDataAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(AValue:LongWord); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function UpdateEntry(AEntry:TNTFSDiskEntry):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateAttribute(AEntry:TNTFSDiskEntry):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS index root attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSIndexRootAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSIndexRootAttribute|<code>TNTFSIndexRootAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FIndexType:LongWord;</code>
| + | |
− | | Attribute Type
| + | |
− | |-
| + | |
− | | <code>FCollateRule:LongWord;</code>
| + | |
− | | Collation Rule
| + | |
− | |-
| + | |
− | | <code>FIndexRecordSize:LongWord;</code>
| + | |
− | | Size of Index Allocation Entry (bytes)
| + | |
− | |-
| + | |
− | | <code>FIndexCounterOffset:LongWord;</code>
| + | |
− | | Index Record Number increment
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property IndexType:LongWord read FIndexType write FIndexType;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property CollateRule:LongWord read FCollateRule write FCollateRule;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IndexRecordSize:LongWord read FIndexRecordSize write FIndexRecordSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IndexCounterOffset:LongWord read FIndexCounterOffset write FIndexCounterOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateIndex(AVersion,ASector:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewIndex(AVersion,ASector:Word; AType,ARule,ASize,AOffset:LongWord):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS index allocation attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSIndexAllocationAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSIndexAllocationAttribute|<code>TNTFSIndexAllocationAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(AValue:LongWord); override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS bitmap attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSBitmapAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSBitmapAttribute|<code>TNTFSBitmapAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FBitmap:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FBitmapSize:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(AValue:LongWord); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetBitmapSize(AValue:LongWord);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Bitmap:Pointer read FBitmap;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property BitmapSize:LongWord read FBitmapSize write SetBitmapSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− |
| + | |
− | '''NTFS reparse point attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSReparsePointAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSReparsePointAttribute|<code>TNTFSReparsePointAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FReparseTag:LongWord;</code>
| + | |
− | | Reparse Type (and Flags)
| + | |
− | |-
| + | |
− | | <code>FReparseSize:Word;</code>
| + | |
− | | Reparse Data Length
| + | |
− | |-
| + | |
− | | <code>FReparseGUID:TGUID;</code>
| + | |
− | | Reparse GUID
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FReparse:TNTFSReparse;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetIsAlias:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsAlias(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsHighLatency:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsHighLatency(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsMicrosoft:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetIsMicrosoft(AValue:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property IsAlias:Boolean read GetIsAlias write SetIsAlias;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsHighLatency:Boolean read GetIsHighLatency write SetIsHighLatency;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsMicrosoft:Boolean read GetIsMicrosoft write SetIsMicrosoft;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property ReparseTag:LongWord read FReparseTag write FReparseTag;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ReparseSize:Word read FReparseSize write FReparseSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ReparseGUID:TGUID read FReparseGUID write FReparseGUID;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Reparse:TNTFSReparse read FReparse;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateReparse:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewReparse(AReparseTag:LongWord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadReparse(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteReparse(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS symbolic link attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSSymbolicLinkAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSSymbolicLinkAttribute|<code>TNTFSSymbolicLinkAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(AValue:LongWord); override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS extended attribute information'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSExtendedAttrInformationAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSExtendedAttrInformationAttribute|<code>TNTFSExtendedAttrInformationAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FPackedSize:Word;</code>
| + | |
− | | Size of the packed Extended Attributes
| + | |
− | |-
| + | |
− | | <code>FFlagCount:Word;</code>
| + | |
− | | Number of Extended Attributes with NEED_EA
| + | |
− | |-
| + | |
− | | <code>FUnpackedSize:LongWord;</code>
| + | |
− | | Size of the unpacked Extended Attributes
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property PackedSize:Word read FPackedSize write FPackedSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property FlagCount:Word read FFlagCount write FFlagCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property UnpackedSize:LongWord read FUnpackedSize write FUnpackedSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS extended attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSExtendedAttrAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSExtendedAttrAttribute|<code>TNTFSExtendedAttrAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FExtendeds:TNTFSExtendeds;</code>
| + | |
− | | List of attributes of this attribute
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Extendeds:TNTFSExtendeds read FExtendeds;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateExtended:TNTFSExtended;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroyExtended(AExtended:TNTFSExtended):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewExtended(const AName:String):TNTFSExtended;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetExtended(const AName:String):TNTFSExtended;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveExtended(AExtended:TNTFSExtended):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ExtendedCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadExtendeds(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteExtendeds(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(ABuffer:Pointer; var AOffset:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS property set attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSPropertySetAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSPropertySetAttribute|<code>TNTFSPropertySetAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(AValue:LongWord); override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS logged utility stream attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSLoggedUtilityStreamAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSLoggedUtilityStreamAttribute|<code>TNTFSLoggedUtilityStreamAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(AValue:LongWord); override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS end attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSEndAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSEndAttribute|<code>TNTFSEndAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedDataSize(AVersion:Word):LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CalculatedStreamSize(AVersion:Word):Int64; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadAttribute(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteAttribute(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS unknown attribute'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSUnknownAttribute = class(TNTFSDiskAttribute)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AParent:TNTFSDiskRecord);</code> | + | | [[TNTFSUnknownAttribute|<code>TNTFSUnknownAttribute = class(TNTFSDiskAttribute)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(AValue:LongWord); override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS object Id'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSObjId = class(TObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of index $O in file $ObjId (Not Used) | + | | [[TNTFSObjId|<code>TNTFSObjId = class(TObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS quota'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSQuota = class(TObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of index $Q in file $Quota (Not Used) | + | | [[TNTFSQuota|<code>TNTFSQuota = class(TObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS owner'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSOwner = class(TObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of index $O in file $Quota (Not Used) | + | | [[TNTFSOwner|<code>TNTFSOwner = class(TObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS upper case'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSUpCase = class(TObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of file $UpCase | + | | [[TNTFSUpCase|<code>TNTFSUpCase = class(TObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLock:TSynchronizerHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FData:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReaderLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReaderUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriterLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriterUnlock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Data:Pointer read FData;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Init(AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Convert(ASource,ADest:Pointer; ASize:LongWord):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadUpCase(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteUpCase(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS attribute definitions'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSAttrDefs = class(TFileSysList)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create;</code> | + | | [[TNTFSAttrDefs|<code>TNTFSAttrDefs = class(TFileSysList)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FAttrDefLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetPrevious(AAttrDef:TNTFSAttrDef):TNTFSAttrDef;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateAttrDef(AType:LongWord; AVersion:Word; ANew:Boolean):TNTFSAttrDef;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroyAttrDef(AAttrDef:TNTFSAttrDef):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewAttrDef(AType:LongWord; const AName:String; AVersion:Word):TNTFSAttrDef;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAttrDef(AType:LongWord; const AName:String):TNTFSAttrDef;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAttrDefByIndex(AIndex:Integer; AVersion:Word):TNTFSAttrDef;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAttrDefByIndexEx(AIndex:Integer; AVersion:Word; AWrite:Boolean):TNTFSAttrDef;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAttrDefByAttribute(AAttribute:TNTFSDiskAttribute):TNTFSAttrDef;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveAttrDef(AAttrDef:TNTFSAttrDef):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CheckSize(AAttribute:TNTFSDiskAttribute;const ASize:Int64):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CheckIndexed(AAttribute:TNTFSDiskAttribute):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CheckResident(AAttribute:TNTFSDiskAttribute):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CheckUncompressed(AAttribute:TNTFSDiskAttribute):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function TotalSize:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AttrDefCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Init(AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadAttrDefs(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteAttrDefs(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS attribute definition'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSAttrDef = class(TListObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of file $AttrDef | + | | [[TNTFSAttrDef|<code>TNTFSAttrDef = class(TListObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLocalLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAttributeName:String;</code>
| + | |
− | | Label in Unicode
| + | |
− | |-
| + | |
− | | <code>FAttributeType:LongWord;</code>
| + | |
− | | Type
| + | |
− | |-
| + | |
− | | <code>FDisplayRule:LongWord;</code>
| + | |
− | | Display rule
| + | |
− | |-
| + | |
− | | <code>FCollateRule:LongWord;</code>
| + | |
− | | Collation rule
| + | |
− | |-
| + | |
− | | <code>FAttrDefFlags:LongWord;</code>
| + | |
− | | Flags (See Consts)
| + | |
− | |-
| + | |
− | | <code>FMinimumSize:Int64;</code>
| + | |
− | | Minimum size
| + | |
− | |-
| + | |
− | | <code>FMaximumSize:Int64;</code>
| + | |
− | | Maximum size
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAttributeHash:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetAttributeName:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetAttributeName(const AAttributeName:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetIsIndexed:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsResident:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetIsUncompressed:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Compare(AAttrDef:TNTFSAttrDef):Integer; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property AttributeName:String read GetAttributeName write SetAttributeName;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AttributeType:LongWord read FAttributeType write FAttributeType;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property DisplayRule:LongWord read FDisplayRule write FDisplayRule;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property CollateRule:LongWord read FCollateRule write FCollateRule;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property AttrDefFlags:LongWord read FAttrDefFlags write FAttrDefFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property MinimumSize:Int64 read FMinimumSize write FMinimumSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property MaximumSize:Int64 read FMaximumSize write FMaximumSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property IsIndexed:Boolean read GetIsIndexed;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsResident:Boolean read GetIsResident;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property IsUncompressed:Boolean read GetIsUncompressed;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Init(AIndex:Integer;AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property AttributeHash:LongWord read FAttributeHash;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadAttrDef(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteAttrDef(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS reparse'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSReparse = class(TDiskReparse)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;" | + | |
− | |-
| + | |
− | |colspan="2"|Note: Data of attribute $REPARSE_POINT
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AAttribute:TNTFSDiskAttribute);</code>
| + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FData:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FDataSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAttribute:TNTFSDiskAttribute;</code>
| + | |
− | | Attribute owning this index
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetData(AData:Pointer); virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetDataSize:Word; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(ASize:Word); virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Data:Pointer read FData write SetData;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property DataSize:Word read GetDataSize write SetDataSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Attribute:TNTFSDiskAttribute read FAttribute;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):Word; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadReparse(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; virtual;</code>
| + | |
− | |
| + | |
| |- | | |- |
− | | <code>function WriteReparse(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; virtual;</code> | + | | [[TNTFSReparse|<code>TNTFSReparse = class(TDiskReparse)</code>]] |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS reparse symbolic link'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSReparseSymLink = class(TNTFSReparse)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of attribute $REPARSE_POINT (Tag 0xA000000C) | + | | [[TNTFSReparseSymLink|<code>TNTFSReparseSymLink = class(TNTFSReparse)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AAttribute:TNTFSDiskAttribute);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>procedure SetData(AData:Pointer); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetDataSize(ASize:Word); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>FPrintName:String;</code>
| + | |
− | | Path Buffer
| + | |
− | |-
| + | |
− | | <code>FSubstituteName:String;</code>
| + | |
− | | Path Buffer
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FPrintHash:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FSubstituteHash:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetTarget:String; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetPrintName:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetPrintName(const APrintName:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSubstituteName:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetSubstituteName(const ASubstituteName:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property PrintName:String read GetPrintName write SetPrintName;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SubstituteName:String read GetSubstituteName write SetSubstituteName;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property PrintHash:LongWord read FPrintHash;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SubstituteHash:LongWord read FSubstituteHash;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function PrintNameSize:Word; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function PrintNameOffset:Word; virtual;</code>
| + | |
− | | Print Name Offset
| + | |
− | |-
| + | |
− | | <code>function PrintNameLength:Word; virtual;</code>
| + | |
− | | Print Name Length
| + | |
− | |-
| + | |
− | | <code>function SubstituteNameSize:Word; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function SubstituteNameOffset:Word; virtual;</code>
| + | |
− | | Substitute Name Offset
| + | |
− | |-
| + | |
− | | <code>function SubstituteNameLength:Word; virtual;</code>
| + | |
− | | Substitute Name Length
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadReparse(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteReparse(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS reparse mount point'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSReparseMountPoint = class(TNTFSReparseSymLink)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of attribute $REPARSE_POINT (Tag 0xA0000003) | + | | [[TNTFSReparseMountPoint|<code>TNTFSReparseMountPoint = class(TNTFSReparseSymLink)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle; AAttribute:TNTFSDiskAttribute);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function PrintNameSize:Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function PrintNameOffset:Word; override;</code>
| + | |
− | | Print Name Offset
| + | |
− | |-
| + | |
− | | <code>function PrintNameLength:Word; override;</code>
| + | |
− | | Print Name Length
| + | |
− | |-
| + | |
− | | <code>function SubstituteNameSize:Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function SubstituteNameOffset:Word; override;</code>
| + | |
− | | Substitute Name Offset
| + | |
− | |-
| + | |
− | | <code>function SubstituteNameLength:Word; override;</code>
| + | |
− | | Substitute Name Length
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CalculatedSize(AVersion:Word):Word; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadReparse(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteReparse(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean; override;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS extendeds'''
| + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSExtendeds = class(TFileSysListEx)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create(AExtendedLocal:TMutexHandle; ALock:TSynchronizerHandle);</code> | + | | [[TNTFSExtendeds|<code>TNTFSExtendeds = class(TFileSysListEx)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FExtendedLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function TotalSize:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ExtendedCount:LongWord;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS extended'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSExtended = class(TListObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of attribute $EA | + | | [[TNTFSExtended|<code>TNTFSExtended = class(TListObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLocalLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FExtendedOffset:LongWord;</code>
| + | |
− | | Offset to next Extended Attribute (Offset to next EA is the size of this EA)
| + | |
− | |-
| + | |
− | | <code>FExtendedFlags:Byte;</code>
| + | |
− | | Flags
| + | |
− | |-
| + | |
− | | <code>FExtendedName:String;</code>
| + | |
− | | Name Note: No offset so always in the same location (Not Unicode)
| + | |
− | |-
| + | |
− | | <code>FExtendedData:Pointer;</code>
| + | |
− | | Value
| + | |
− | |-
| + | |
− | | <code>FExtendedDataSize:Word;</code>
| + | |
− | | Value Length
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FExtendedHash:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetExtendedName:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetExtendedName(const AExtendedName:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetExtendedDataSize(ASize:Word);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property ExtendedOffset:LongWord read FExtendedOffset write FExtendedOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ExtendedFlags:Byte read FExtendedFlags write FExtendedFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ExtendedName:String read GetExtendedName write SetExtendedName;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ExtendedData:Pointer read FExtendedData;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ExtendedDataSize:Word read FExtendedDataSize write SetExtendedDataSize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property ExtendedHash:LongWord read FExtendedHash;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ExtendedSize:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ExtendedNameSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ExtendedNameLength:Byte;</code>
| + | |
− | | Name Length
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadExtended(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteExtended(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS security items'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSSecurityItems = class(TFileSysList)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | | <code>constructor Create;</code> | + | | [[TNTFSSecurityItems|<code>TNTFSSecurityItems = class(TFileSysList)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FSecurityLocal:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetPrevious(ASecurityItem:TNTFSSecurityItem):TNTFSSecurityItem;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function CreateSecurityItem(ANew:Boolean):TNTFSSecurityItem;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DestroySecurityItem(ASecurityItem:TNTFSSecurityItem):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewSecurityItem(ASecurityId:LongWord; const ASecurityOffset:Int64; ASecurity:TNTFSSecurity):TNTFSSecurityItem;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSecurityItem(ASecurityId:LongWord):TNTFSSecurityItem;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetSecurityItemEx(ASecurityId:LongWord; AWrite:Boolean):TNTFSSecurityItem;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateSecurityItem(ASecurityItem:TNTFSSecurityItem; ASecurityId:LongWord; ASecurity:TNTFSSecurity):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeleteSecurityItem(ASecurityItem:TNTFSSecurityItem):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveSecurityItem(ASecurityItem:TNTFSSecurityItem; AFree:Boolean):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function TotalSize:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SecurityItemCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Init(AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadSecurityItems(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteSecurityItems(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS security item'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSSecurityItem = class(TListObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of stream $SDS in file $Secure | + | | [[TNTFSSecurityItem|<code>TNTFSSecurityItem = class(TListObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code>
| + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLocalLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FSecurityHash:LongWord;</code>
| + | |
− | | Hash of Security Descriptor
| + | |
− | |-
| + | |
− | | <code>FSecurityId:LongWord;</code>
| + | |
− | | Security Id
| + | |
− | |-
| + | |
− | | <code>FSecurityOffset:Int64;</code>
| + | |
− | | Offset of this entry in $SDS
| + | |
− | |-
| + | |
− | | <code>FSecuritySize:LongWord;</code>
| + | |
− | | Size of this entry in $SDS
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FSecurity:TNTFSSecurity;</code>
| + | |
− | | Self-relative Security Descriptor
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Compare(ASecurityItem:TNTFSSecurityItem):Integer; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareOld(ASecurityItem:TNTFSSecurityItem):Integer; virtual; </code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property SecurityHash:LongWord read FSecurityHash write FSecurityHash;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SecurityId:LongWord read FSecurityId write FSecurityId;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SecurityOffset:Int64 read FSecurityOffset write FSecurityOffset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property SecuritySize:LongWord read FSecuritySize write FSecuritySize;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Security:TNTFSSecurity read FSecurity;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CreateSecurity:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function NewSecurity(ASecurity:TNTFSSecurity):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UpdateSecurity(ASecurity:TNTFSSecurity):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DeleteSecurity:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveSecurity(AFree:Boolean):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function MirrorOffset:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function Init(ASecurityId:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadSecurityItem(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteSecurityItem(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS security'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSSecurity = class(TDiskSecurity)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of attribute $SECURITY_DESCRIPTOR and stream $SDS in file $Secure | + | | [[TNTFSSecurity|<code>TNTFSSecurity = class(TDiskSecurity)</code>]] |
− | |-
| + | |
− | |colspan="2"|Note: This is the same structure that is used for all security in Windows (File/Kernel/Registry etc). See TSecurityDescriptor and associated values in Security unit for more information.
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create(ALocalLock:TMutexHandle);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>constructor CreateFromSecurity(ALocalLock:TMutexHandle; ASecurity:TDiskSecurity); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>constructor CreateFromDescriptor(ALocalLock:TMutexHandle; ADescriptor:Pointer); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FVolumeVersion:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FRevision:Byte;</code>
| + | |
− | | Revision
| + | |
− | |-
| + | |
− | | <code>FControl:Word;</code>
| + | |
− | | Control Flags
| + | |
− | |-
| + | |
− | | <code>FSacl:PACL;</code>
| + | |
− | | SACL
| + | |
− | |-
| + | |
− | | <code>FDacl:PACL;</code>
| + | |
− | | DACL
| + | |
− | |-
| + | |
− | | <code>FOwner:PSID;</code>
| + | |
− | | Owner SID
| + | |
− | |-
| + | |
− | | <code>FGroup:PSID;</code>
| + | |
− | | Group SID
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetSacl(ASacl:PACL);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetDacl(ADacl:PACL);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetOwner(AOwner:PSID);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetGroup(AGroup:PSID);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetSaclSize(ASize:Word);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetDaclSize(ASize:Word);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetOwnerSize(ASize:Word);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetGroupSize(ASize:Word);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property VolumeVersion:Word read FVolumeVersion;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Revision:Byte read FRevision write FRevision;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Control:Word read FControl write FControl;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Sacl:PACL read FSacl write SetSacl;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Dacl:PACL read FDacl write SetDacl;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Owner:PSID read FOwner write SetOwner;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Group:PSID read FGroup write SetGroup;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SaclSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DaclSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function OwnerSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GroupSize:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function SaclOffset:LongWord;</code>
| + | |
− | | Offset to SACL
| + | |
− | |-
| + | |
− | | <code>function DaclOffset:LongWord;</code>
| + | |
− | | Offset to DACL
| + | |
− | |-
| + | |
− | | <code>function OwnerOffset:LongWord;</code>
| + | |
− | | Offset to Owner SID
| + | |
− | |-
| + | |
− | | <code>function GroupOffset:LongWord;</code>
| + | |
− | | Offset to Group SID
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SaclOffsetEx(ALocal:Boolean):LongWord;</code>
| + | |
− | | Offset to SACL
| + | |
− | |-
| + | |
− | | <code>function DaclOffsetEx(ALocal:Boolean):LongWord;</code>
| + | |
− | | Offset to DACL
| + | |
− | |-
| + | |
− | | <code>function OwnerOffsetEx(ALocal:Boolean):LongWord;</code>
| + | |
− | | Offset to Owner SID
| + | |
− | |-
| + | |
− | | <code>function GroupOffsetEx(ALocal:Boolean):LongWord;</code>
| + | |
− | | Offset to Group SID
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SecuritySize:LongWord; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function SecurityHash:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function SecurityDescriptor:Pointer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function SecurityDescriptorEx(ALocal:Boolean):Pointer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function InheritedDescriptor:Pointer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function MergedDescriptor(AChild:Pointer):Pointer; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseDescriptor(ADescriptor:Pointer; AInherited,AMerged:Boolean):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CopyToSecurity(ASecurity:TDiskSecurity):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CopyToDescriptor(ADescriptor:Pointer; ASize:LongWord):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CopyToDescriptorEx(ADescriptor:Pointer; ASize:LongWord; ALocal:Boolean):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CopyFromDescriptor(ADescriptor:Pointer; ASize:LongWord):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadSecurity(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteSecurity(ABuffer:Pointer; var AOffset,ASize:LongWord; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteSecurityEx(ABuffer:Pointer; var AOffset,ASize:LongWord; ALocal:Boolean; AVersion:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS security Id'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSSecurityId = class(TObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: Data of index $SII in file $Secure (Not Used) | + | | [[TNTFSSecurityId|<code>TNTFSSecurityId = class(TObject)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''NTFS security hash'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TNTFSSecurityHash = class(TObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;" | + | |
− | |-
| + | |
− | |colspan="2"|Note: Data of index $SDH in file $Secure (Not Used)
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
| |- | | |- |
− | |colspan="2"| | + | | [[TNTFSSecurityHash|<code>TNTFSSecurityHash = class(TObject)</code>]] |
| |- | | |- |
| |} | | |} |
− | </div></div>
| |
| <br /> | | <br /> |
| | | |