1. Overview
The lost_partition_finder.cpp file searches raw media for filesystems whose partition-table entries are missing or damaged.
This is an implementation file. It contains executable logic for the subsystem, including parsing, I/O, validation, recovery flow, or graphical behavior declared by the corresponding interface.
Its paired source or interface file is lost_partition_finder.hpp.
Primary responsibilities:
- Scan strategic offsets and alignment boundaries
- Run filesystem probes
- De-duplicate overlapping candidates
- Return confidence-ranked lost-partition results
2. File Identity and Scope
- Source path:
src/lost_partition_finder.cpp - Language: C++
- File role: implementation file
- Physical lines: 300
- Non-empty lines: 271
- SHA-256:
92dbb4bb9ff9c7abfb2011ab91e71ccc77b078218cdb0103a31ac4d7dace85a7
The declarations in this file use the global namespace.
3. Dependencies
3.1 Project Headers
lost_partition_finder.hppi18n.hppxfs_format.hpphfs_format.hpp
3.2 Standard and External Headers
algorithmarraystringvector
These dependencies define the file’s compile-time integration with the recovery engine, GTK interface, on-disk format decoders, operating-system services, or C++ standard library.
4. Declared Types
- struct
Range.
5. Constants and Configuration Values
constexpr uint64_t MiB=1024ull*1024ullconstexpr uint64_t GiB=1024ull*1024ull*1024ullconstexpr uint64_t SECTOR_SIZE=512ullconstexpr uint64_t SCAN_STRIDE=1ull*MiBconstexpr uint64_t DEFAULT_MAX_SCAN=4ull*1024ull*GiBconstexpr uint64_t HARD_MAX_SCAN=64ull*1024ull*GiB
5.1 Operational Strings, Paths, Formats, or Commands
The following code literals are operationally relevant and may identify filesystem paths, helper commands, formats, signatures, or subsystem labels:
xfs_format.hpphfs_format.hppNTFSLost NTFS partition candidateUnallocated NTFS boot sector candidateLost ext4 partition candidateUnallocated ext4 superblock candidateLost Btrfs partition candidateUnallocated Btrfs superblock candidateLost XFS partition candidateUnallocated XFS superblock candidateLost HFS+ partition candidateUnallocated HFS+/HFSX volume header candidate
6. Data Members and Persistent State
No class data members are declared directly in this file, or the file primarily implements methods declared elsewhere.
7. API and Function Inventory
The following callable interfaces or definitions were detected:
bool overlaps(const std::vector<Range>&ranges,uint64_t start,uint64_t end)– Implements the operation identified by this API and updates or returns the associated state.bool is_ntfs(const std::array<unsigned char,512>&b)– Evaluates the stated condition and returns the corresponding Boolean result.bool is_fat32(const std::array<unsigned char,512>&b)– Evaluates the stated condition and returns the corresponding Boolean result.bool is_exfat(const std::array<unsigned char,512>&b)– Evaluates the stated condition and returns the corresponding Boolean result.bool looks_ext4(DiskReader&reader,uint64_t offset)– Implements the operation identified by this API and updates or returns the associated state.bool looks_btrfs(DiskReader&reader,uint64_t offset)– Implements the operation identified by this API and updates or returns the associated state.bool looks_xfs(DiskReader&reader,uint64_t offset)– Implements the operation identified by this API and updates or returns the associated state.uint64_t xfs_size_bytes(DiskReader&reader,uint64_t offset)– Implements the operation identified by this API and updates or returns the associated state.bool looks_hfs(DiskReader&reader,uint64_t offset)– Implements the operation identified by this API and updates or returns the associated state.uint64_t hfs_size_bytes(DiskReader&reader,uint64_t offset)– Implements the operation identified by this API and updates or returns the associated state.uint64_t le64(const unsigned char*p)– Implements the operation identified by this API and updates or returns the associated state.uint32_t le32(const unsigned char*p)– Implements the operation identified by this API and updates or returns the associated state.uint64_t ntfs_size_bytes(const std::array<unsigned char,512>&b)– Implements the operation identified by this API and updates or returns the associated state.uint64_t fat32_size_bytes(const std::array<unsigned char,512>&b)– Implements the operation identified by this API and updates or returns the associated state.uint64_t exfat_size_bytes(const std::array<unsigned char,512>&b)– Implements the operation identified by this API and updates or returns the associated state.uint64_t ext4_size_bytes(DiskReader&reader,uint64_t offset)– Implements the operation identified by this API and updates or returns the associated state.uint64_t btrfs_size_bytes(DiskReader&reader,uint64_t offset)– Implements the operation identified by this API and updates or returns the associated state.std::vector<ScanResult> LostPartitionFinder::find(DiskReader&reader,const std::vector<ScanResult>&known_results,std::vector<std::string>&logs)– Inspects the source and reports matching candidates or detected metadata.
8. Operational Flow
The subsystem represented by this file normally participates in the following flow:
- Scan strategic offsets and alignment boundaries.
- Run filesystem probes.
- De-duplicate overlapping candidates.
- Return confidence-ranked lost-partition results.
- Expose or execute the detected APIs:
overlaps, is_ntfs, is_fat32, is_exfat, looks_ext4, looks_btrfs, looks_xfs, xfs_size_bytes, looks_hfs, hfs_size_bytes, le64, le32, ntfs_size_bytes, fat32_size_bytes, exfat_size_bytes, ext4_size_bytes, btrfs_size_bytes, find. - Return explicit results, progress data, recovered records, or diagnostics to the calling layer.
9. Validation and Error Handling
- Byte offsets, sizes and lengths must be validated before arithmetic and before every read to avoid overflow and out-of-bounds access.
- On-disk structures are accepted only after validating signatures, magic values and structural constraints.
10. Runtime, Concurrency, and Resource Management
- Deterministic behavior: callers depend on explicit return values and stable data structures to distinguish successful recovery from partial or invalid results.
11. Security and Data-Recovery Considerations
- Recovery code should prefer read-only source access and avoid writing to the original damaged medium.
- Raw devices and image files are treated as untrusted binary input; every offset and length must remain bounded by the source size.
12. Implementation Considerations
- The implementation should remain aligned with declarations in the paired header and preserve documented return-value semantics.
- Binary decoding uses low-level memory operations or casts; alignment, endianness and packed-structure assumptions require careful review.
- Large-device arithmetic uses 64-bit values; additions and multiplications should be checked before use as offsets or allocation sizes.
13. Integration with the Recovery Pipeline
- The file belongs to the source-discovery, parsing or support layer.
- Its results feed scanner, recovery or reporting modules through shared models.
- The API should remain deterministic so higher layers can combine results safely.
14. Licensing and Provenance
No explicit copyright or software-license statement was detected in the opening section of this individual file. Distribution terms should therefore be verified against the project-level license and repository metadata.
The SHA-256 value in this document can be used to associate the generated documentation with the exact source version analyzed.
