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
40 uint32_t
end()
const {
45 using access_table_t = std::vector<uint32_t>;
47 using info_ranges_t = std::vector<range_t>;
48 using it_info_ranges_t = ref_iterator<info_ranges_t&>;
49 using it_const_info_ranges_t = const_ref_iterator<const info_ranges_t&>;
53 VolatileMetadata&
operator=(
const VolatileMetadata&) =
default;
56 VolatileMetadata&
operator=(VolatileMetadata&&) =
default;
58 std::unique_ptr<VolatileMetadata>
clone()
const {
59 return std::unique_ptr<VolatileMetadata>(
new VolatileMetadata(*
this));
61 uint32_t
size()
const {
76 return access_table_rva_;
84 return access_table_.size() *
sizeof(uint32_t);
88 return info_range_rva_;
92 static_assert(
sizeof(range_t) == 8,
"Can't be used for computing the raw size");
93 return info_ranges_.size() *
sizeof(range_t);
104 VolatileMetadata&
size(uint32_t value) {
120 access_table_rva_ = value;
125 info_range_rva_ = value;
132 std::ostream&
operator<<(std::ostream& os,
const VolatileMetadata& meta)
137 LIEF_LOCAL static std::unique_ptr<VolatileMetadata>
140 parse(Parser& ctx, BinaryStream& stream);
144 uint16_t min_version_ = 0;
145 uint16_t max_version_ = 0;
146 uint32_t access_table_rva_ = 0;
148 uint32_t info_range_rva_ = 0;
150 access_table_t access_table_;
151 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