ExFAT: Difference between revisions

88 bytes added ,  29 days ago
m
Bot: Replace deprecated source tag with syntaxhighlight
[unchecked revision][unchecked revision]
(Fixed error in OEM Parameters table)
m (Bot: Replace deprecated source tag with syntaxhighlight)
 
(2 intermediate revisions by 2 users not shown)
Line 79:
| 0x060 || 4 || FirstClusterOfRootDirectory || The starting cluster of the root directory's cluster chain.
|-
| 0x064 || 4 || VolumeSerialNumber || A serial number for this partition, usually comprised by calculating the date and time of format into a single 64-bit value. There is no standard for this claculationcalculation; each FAT driver is free to use its own technique.
|-
| 0x068 || 2 || FileSystemRevision || Specifies the version of exFAT specification to which the structures in this partition adhere. For now, there is only a single exFAT specification; version 1.00. However in the future there may be more than this, and a driver should not attempt to parse exFAT structures of an exFAT specification version with which it is not familiar.
Line 124:
|-
|}
 
 
 
=== Extended Boot Sectors Structure ===
Line 254 ⟶ 252:
=== Filesystem Header ===
 
<sourcesyntaxhighlight lang="C">
struct bootsector {
char jump[3];
Line 273 ⟶ 271:
char bootsign[2];
};
</syntaxhighlight>
</source>
Block bitmap is cluster 2, upcase tbl is cluster 3.
 
 
=== Boot Checksum Calculation ===
<sourcesyntaxhighlight lang="C">
UInt32 BootChecksum (UCHAR * Sectors, USHORT BytesPerSector)
{
Line 300 ⟶ 298:
return Checksum;
}
</syntaxhighlight>
</source>
 
 
Line 308 ⟶ 306:
32-byte entries. Entries contain one of a few possible entry types, first byte identifies which type it is. The second byte identifies how many subsequent entries are part of this entry. All bytes after are dependent on the type of entry. Any entry with the highest bit of entrytype set is not used.
 
<sourcesyntaxhighlight lang="C">
struct {
uint8_t entrytype = 0x85;
Line 317 ⟶ 315:
char pad[12];
} fileEntry;
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="C">
struct {
uint8_t entryType = 0xC0;
Line 330 ⟶ 328:
uint64_t filesize2;
} fileInfoEntry;
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="C">
struct {
uint8_t entrytype = 0xC1, entrycount = 0x00;
uint16_t name[15];
} filenameEntry;
</syntaxhighlight>
</source>