Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Exploring the CFB File Format 8
Range Lock Sectors
A range lock sector is a part of a CFB file that is used for concurrency and transactions. The range sector will only appear in files greater than 2 GB. As we have seen
in previous posts, there are files with 512-byte sectors, and others with 4096-byte sectors. A 512-byte sector CFB file is limited to 2 GB and *MUST* never be larger
than this size. Conversely, a 4096-byte file can grow as large as 16 terabytes. Therefore, only a 4096-byte CFB file
contains a range lock sector and it will ALWAYS appear at file offsets 0x7FFFFF00-0x7FFFFFFF (inclusive).Therefore, is merely only a small feat to consume the
bytes in question:
# ff bytes are found in the range: 0x7FFFFF00-0x7FFFFFFF (inclusive)
for i in range(0, 255):
cur_byte = disk[i]
It is merely a good idea just to skip this sector as it will not contain any user-defined data. No other data structure contained in a CFB file points to this sector.The
information found in this segment will be subject to the producer, and *not* the consumer. The producer will use this for various transactions when it comes to the
process of obtaining objects. The way this sector is *actually* used is considered an implementation detail and is constructed differently from app to app as each
one will use this space in a different manner.
Please note this sector is *not* important when parsing a cfb file, it is only important for the producer that created the
file. Thus, you could always jump to the offset past the sector in question:
file.seek(0x7FFFFFFF)
Subsequently, the producer can continue consuming sectors immediately following the range lock sector per the FAT.
Comments
- Anonymous
June 17, 2011
The comment has been removed