Public Member Functions | |
| Fat32Recovery (DiskReader &reader) | |
| bool | recover (uint64_t volume_offset, const fs::path &out_root, std::vector< RecoveredFileRecord > &recovered, std::vector< std::string > &logs, std::string &error) |
Private Member Functions | |
| bool | load_bpb (uint64_t volume_offset) |
| uint64_t | cluster_to_offset (uint32_t cluster) const |
| bool | read_cluster (uint32_t cluster, std::vector< unsigned char > &out) |
| bool | next_cluster (uint32_t current, uint32_t &next) |
| std::vector< uint32_t > | cluster_chain (uint32_t start, size_t hard_limit=1<< 20) |
| bool | export_file (const std::string &name, uint32_t start_cluster, uint32_t size_bytes, const fs::path &out_dir, std::vector< RecoveredFileRecord > &recovered, std::vector< std::string > &logs, std::string &error) |
| bool | recover_directory (uint32_t dir_cluster, const fs::path &out_dir, std::vector< RecoveredFileRecord > &recovered, std::vector< std::string > &logs, std::string &error, std::set< uint32_t > &dir_guard, int depth) |
| bool | export_file_to_dir (const std::string &name, uint32_t start_cluster, uint32_t size_bytes, const fs::path &out_dir, std::vector< RecoveredFileRecord > &recovered, std::vector< std::string > &logs, std::string &, bool is_deleted) |
Static Private Member Functions | |
| static std::string | decode_lfn_part (const unsigned char *entry) |
| static std::string | short_name (const unsigned char *entry) |
Private Attributes | |
| DiskReader & | reader_ |
| uint64_t | volume_offset_ {0} |
| uint16_t | bytes_per_sector_ {0} |
| uint8_t | sectors_per_cluster_ {0} |
| uint16_t | reserved_sectors_ {0} |
| uint8_t | fat_count_ {0} |
| uint32_t | sectors_per_fat_ {0} |
| uint32_t | root_cluster_ {2} |
| uint64_t | fat_offset_bytes_ {0} |
| uint64_t | data_region_offset_ {0} |
| uint64_t | cluster_size_ {0} |
Definition at line 93 of file filesystem_recovery.cpp.
|
inlineexplicit |
Definition at line 95 of file filesystem_recovery.cpp.
References reader_.
|
inlineprivate |
Definition at line 161 of file filesystem_recovery.cpp.
References next_cluster().
Referenced by export_file(), export_file_to_dir(), and recover_directory().
|
inlineprivate |
Definition at line 144 of file filesystem_recovery.cpp.
References cluster_size_, and data_region_offset_.
Referenced by export_file(), and read_cluster().
|
inlinestaticprivate |
Definition at line 176 of file filesystem_recovery.cpp.
References anonymous_namespace{filesystem_recovery.cpp}::le16(), and text_utils::utf16le_to_utf8().
Referenced by recover_directory().
|
inlineprivate |
Definition at line 217 of file filesystem_recovery.cpp.
References cluster_chain(), cluster_size_, cluster_to_offset(), reader_, anonymous_namespace{filesystem_recovery.cpp}::sanitize_path_component(), trs(), and anonymous_namespace{filesystem_recovery.cpp}::write_data_to_file().
Referenced by recover_directory().
|
inlineprivate |
Definition at line 402 of file filesystem_recovery.cpp.
References cluster_chain(), cluster_size_, read_cluster(), anonymous_namespace{filesystem_recovery.cpp}::sanitize_path_component(), and trs().
Referenced by recover_directory().
|
inlineprivate |
Definition at line 126 of file filesystem_recovery.cpp.
References bytes_per_sector_, cluster_size_, data_region_offset_, fat_count_, fat_offset_bytes_, anonymous_namespace{filesystem_recovery.cpp}::le16(), anonymous_namespace{filesystem_recovery.cpp}::le32(), DiskReader::read_at(), reader_, reserved_sectors_, root_cluster_, sectors_per_cluster_, sectors_per_fat_, and volume_offset_.
Referenced by recover().
|
inlineprivate |
Definition at line 153 of file filesystem_recovery.cpp.
References fat_offset_bytes_, anonymous_namespace{filesystem_recovery.cpp}::le32(), DiskReader::read_at(), and reader_.
Referenced by cluster_chain().
|
inlineprivate |
Definition at line 148 of file filesystem_recovery.cpp.
References cluster_size_, cluster_to_offset(), DiskReader::read_at(), and reader_.
Referenced by export_file_to_dir(), and recover_directory().
|
inline |
Definition at line 97 of file filesystem_recovery.cpp.
References load_bpb(), recover_directory(), root_cluster_, and trs().
|
inlineprivate |
Definition at line 252 of file filesystem_recovery.cpp.
References cluster_chain(), decode_lfn_part(), export_file(), export_file_to_dir(), anonymous_namespace{filesystem_recovery.cpp}::le16(), anonymous_namespace{filesystem_recovery.cpp}::le32(), read_cluster(), recover_directory(), anonymous_namespace{filesystem_recovery.cpp}::sanitize_path_component(), and short_name().
Referenced by recover(), and recover_directory().
|
inlinestaticprivate |
Definition at line 200 of file filesystem_recovery.cpp.
Referenced by recover_directory().
|
private |
Definition at line 116 of file filesystem_recovery.cpp.
Referenced by load_bpb().
|
private |
Definition at line 124 of file filesystem_recovery.cpp.
Referenced by cluster_to_offset(), export_file(), export_file_to_dir(), load_bpb(), and read_cluster().
|
private |
Definition at line 123 of file filesystem_recovery.cpp.
Referenced by cluster_to_offset(), and load_bpb().
|
private |
Definition at line 119 of file filesystem_recovery.cpp.
Referenced by load_bpb().
|
private |
Definition at line 122 of file filesystem_recovery.cpp.
Referenced by load_bpb(), and next_cluster().
|
private |
Definition at line 114 of file filesystem_recovery.cpp.
Referenced by export_file(), Fat32Recovery(), load_bpb(), next_cluster(), and read_cluster().
|
private |
Definition at line 118 of file filesystem_recovery.cpp.
Referenced by load_bpb().
|
private |
Definition at line 121 of file filesystem_recovery.cpp.
Referenced by load_bpb(), and recover().
|
private |
Definition at line 117 of file filesystem_recovery.cpp.
Referenced by load_bpb().
|
private |
Definition at line 120 of file filesystem_recovery.cpp.
Referenced by load_bpb().
|
private |
Definition at line 115 of file filesystem_recovery.cpp.
Referenced by load_bpb().