Go to the documentation of this file.
16#ifndef LIEF_PE_LOAD_CONFIGURATION_VOLATILE_METADATA_H
17#define LIEF_PE_LOAD_CONFIGURATION_VOLATILE_METADATA_H
39 uint32_t
end()
const {
44 using access_table_t = std::vector<uint32_t>;
46 using info_ranges_t = std::vector<range_t>;
47 using it_info_ranges_t = ref_iterator<info_ranges_t&>;
48 using it_const_info_ranges_t = const_ref_iterator<const info_ranges_t&>;
52 VolatileMetadata&
operator=(
const VolatileMetadata&) =
default;
55 VolatileMetadata&
operator=(VolatileMetadata&&) =
default;
57 std::unique_ptr<VolatileMetadata>
clone()
const {
58 return std::unique_ptr<VolatileMetadata>(
new VolatileMetadata(*
this));
60 uint32_t
size()
const {
75 return access_table_rva_;
83 return access_table_.size() *
sizeof(uint32_t);
87 return info_range_rva_;
91 static_assert(
sizeof(range_t) == 8,
"Can't be used for computing the raw size");
92 return info_ranges_.size() *
sizeof(range_t);
103 VolatileMetadata&
size(uint32_t value) {
119 access_table_rva_ = value;
124 info_range_rva_ = value;
131 std::ostream&
operator<<(std::ostream& os,
const VolatileMetadata& meta)
136 LIEF_LOCAL static std::unique_ptr<VolatileMetadata>
139 parse(Parser& ctx, BinaryStream& stream);
143 uint16_t min_version_ = 0;
144 uint16_t max_version_ = 0;
145 uint32_t access_table_rva_ = 0;
147 uint32_t info_range_rva_ = 0;
149 access_table_t access_table_;
150 info_ranges_t info_ranges_;
Class that is used to a read stream of data from different sources.
Definition BinaryStream.hpp:33
Main interface to parse PE binaries. In particular the static functions: Parser::parse should be used...
Definition PE/Parser.hpp:52
Namespace related to the LIEF's PE module.
Definition Abstract/Header.hpp:32
LIEF namespace.
Definition Abstract/Binary.hpp:36
#define LIEF_API
Definition visibility.h:41
#define LIEF_LOCAL
Definition visibility.h:42