---
documentID: "022ea70514310c02b0dca00aca48908628e5f3ae01f867a7242d83eb9fa9953e"
docname: "formats/pe/cpp"
title: "PE C++ API - LIEF Documentation"
description: "PE C++ API reference documentation for LIEF, including APIs and examples for parsing, inspecting, modifying, and writing executable formats."
canonical: "https://lief.re/doc/latest/formats/pe/cpp.html"
markdownURL: "https://lief.re/doc/latest/formats/pe/cpp.md"
documentationVersion: "2.0.0"
documentationChannel: "latest"
language: "en"
contentHash: "58de60546f782310df4050f4f47b0d0aba0f5b04a1b01949e50ab60a72b82757"
---

# [C++](<https://lief.re/doc/latest/formats/pe/cpp.html#c>)

## [Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#parser>)

### [` Parser `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE>)

class Parser : public LIEF::[Parser](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6ParserE> "LIEF::Parser")

Main interface to parse PE binaries. In particular, the **static** [Parser::parse](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Parser_1ac1ea87da09d3f2fe23fadb22f22f008f>) functions should be used to get a [LIEF::PE::Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary>) instance.

Public Functions

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParseraSERK6Parser>)

[Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;operator=(const [Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;copy) = delete

#### [` Parser `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser6ParserERK6Parser>)

Parser(const [Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser6ParserERK6Parser> "LIEF::PE::Parser::Parser") &amp;copy) = delete

#### [` find_coff_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Parser16find_coff_stringE8uint32_t>)

COFF::[String](<https://lief.re/doc/latest/formats/coff/cpp.html#_CPPv4N4LIEF4COFF6StringE> "LIEF::COFF::String") \*find\_coff\_string(uint32\_t offset) const

#### [` find_exception_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Parser19find_exception_infoE8uint32_t>)

inline [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") \*find\_exception\_info(uint32\_t rva) const

#### [` bin `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Parser3binEv>)

inline const [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary") &amp;bin() const

#### [` bin `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser3binEv>)

inline [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary") &amp;bin()

#### [` stream `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser6streamEv>)

inline [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream()

#### [` config `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Parser6configEv>)

inline const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;config() const

#### [` memoize `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser7memoizeER13ExceptionInfo>)

void memoize([ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") &amp;info)

#### [` memoize `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser7memoizeEN4COFF6StringE>)

void memoize(COFF::[String](<https://lief.re/doc/latest/formats/coff/cpp.html#_CPPv4N4LIEF4COFF6StringE> "LIEF::COFF::String") str)

#### [` add_non_resolved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser16add_non_resolvedER13ExceptionInfo8uint32_t>)

inline void add\_non\_resolved([ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") &amp;info, uint32\_t target)

#### [` stream_from_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser15stream_from_rvaE8uint32_t6size_t>)

std::unique\_ptr&lt;[SpanStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF10SpanStreamE> "LIEF::SpanStream")&gt; stream\_from\_rva(uint32\_t rva, size\_t size = 0)

#### [` record_relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser17record_relocationE8uint32_t4spanIK7uint8_tE>)

void record\_relocation(uint32\_t rva, span&lt;const uint8\_t&gt; data)

#### [` record_delta_relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser23record_delta_relocationE8uint32_t7int64_t6size_t>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") record\_delta\_relocation(uint32\_t rva, int64\_t delta, size\_t size)

Public Static Functions

#### [` is_valid_import_name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser20is_valid_import_nameENSt11string_viewE>)

static bool is\_valid\_import\_name(std::string\_view name)

Check if the given name is a valid import.

This check verifies that:

1. The name is not too large or empty (cf. [https://stackoverflow.com/a/23340781](<https://stackoverflow.com/a/23340781>))
2. All the characters are printable

#### [` is_valid_dll_name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser17is_valid_dll_nameENSt11string_viewE>)

static bool is\_valid\_dll\_name(std::string\_view name)

Check if the given name is a valid DLL name.

This check verifies that:

1. The name of the DLL is at least 4 characters long
2. All the characters are printable

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser5parseENSt11string_viewERK12ParserConfig>)

static std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse(std::string\_view filename, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;conf = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

Parse a PE binary from the given filename.

#### [` PathTparse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0_16enable_if_path_tI5PathTEEN4LIEF2PE6Parser5parseENSt10unique_ptrI6BinaryEERK5PathTRK12ParserConfig>)

template&lt;class PathT, enable\_if\_path\_t&lt;[PathT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0_16enable_if_path_tI5PathTEEN4LIEF2PE6Parser5parseENSt10unique_ptrI6BinaryEERK5PathTRK12ParserConfig> "LIEF::PE::Parser::parse::PathT")&gt; = 0&gt;  
static inline std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse(const [PathT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0_16enable_if_path_tI5PathTEEN4LIEF2PE6Parser5parseENSt10unique_ptrI6BinaryEERK5PathTRK12ParserConfig> "LIEF::PE::Parser::parse::PathT") &amp;filename, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;conf = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

Same as [parse(std::string\_view, const ParserConfig&amp;)](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Parser_1ac1ea87da09d3f2fe23fadb22f22f008f>) but the file is given as a `std::filesystem::path`.

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser5parseENSt6vectorI7uint8_tEERK12ParserConfig>)

static std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse(std::vector&lt;uint8\_t&gt; data, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;conf = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

Parse a PE binary from a data buffer.

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser5parseEPK7uint8_t6size_tRK12ParserConfig>)

static std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse(const uint8\_t \*buffer, size\_t size, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;conf = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser5parseENSt10unique_ptrI12BinaryStreamEERK12ParserConfig>)

static std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse(std::unique\_ptr&lt;[BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream")&gt; stream, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;conf = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

Parse a PE binary from the given [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#classLIEF_1_1BinaryStream>).

#### [` parse_from_memory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser17parse_from_memoryE9uintptr_tRK12ParserConfig>)

static std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse\_from\_memory(uintptr\_t address, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;config = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

Parse the PE binary at the given memory address.

#### [` parse_from_memory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser17parse_from_memoryE9uintptr_t6size_tRK12ParserConfig>)

static std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse\_from\_memory(uintptr\_t address, size\_t size, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;config = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

Parse the PE binary at the given memory address and with the given size.

#### [` parse_from_dump `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser15parse_from_dumpENSt11string_viewE8uint64_tRK12ParserConfig>)

static std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse\_from\_dump(std::string\_view filepath, uint64\_t addr, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;config = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

Parse a PE binary from a memory dump located on disk.

A dump is a raw capture of the process memory that was mapped starting at the virtual address `addr`. This is typically used to parse a PE image that has been dumped from memory (e.g. from a debugger or a runtime hook).

**Parameters:**

- **filepath** – **[in]** Path to the file that contains the memory dump
- **addr** – **[in]** Virtual address at which the dump was mapped
- **config** – **[in]** Optional configuration for the parser

#### [` PathTparse_from_dump `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0_16enable_if_path_tI5PathTEEN4LIEF2PE6Parser15parse_from_dumpENSt10unique_ptrI6BinaryEERK5PathT8uint64_tRK12ParserConfig>)

template&lt;class PathT, enable\_if\_path\_t&lt;[PathT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0_16enable_if_path_tI5PathTEEN4LIEF2PE6Parser15parse_from_dumpENSt10unique_ptrI6BinaryEERK5PathT8uint64_tRK12ParserConfig> "LIEF::PE::Parser::parse_from_dump::PathT")&gt; = 0&gt;  
static inline std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse\_from\_dump(const [PathT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0_16enable_if_path_tI5PathTEEN4LIEF2PE6Parser15parse_from_dumpENSt10unique_ptrI6BinaryEERK5PathT8uint64_tRK12ParserConfig> "LIEF::PE::Parser::parse_from_dump::PathT") &amp;filepath, uint64\_t addr, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;config = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

Same as [parse\_from\_dump(std::string\_view, uint64\_t, const ParserConfig&amp;)](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Parser_1a31fe26169705196375633b6e164d21ea>) but the dump file is given as a `std::filesystem::path`.

#### [` parse_from_dump `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser15parse_from_dumpER12BinaryStream8uint64_tRK12ParserConfig>)

static std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse\_from\_dump([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream, uint64\_t addr, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;config = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

Same as [parse\_from\_dump(std::string\_view, uint64\_t, const ParserConfig&amp;)](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Parser_1a31fe26169705196375633b6e164d21ea>) but the dump is wrapped in the given **non-owned** stream.

#### [` parse_from_dump `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser15parse_from_dumpENSt10unique_ptrI12BinaryStreamEE8uint64_tRK12ParserConfig>)

static std::unique\_ptr&lt;[Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")&gt; parse\_from\_dump(std::unique\_ptr&lt;[BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream")&gt; stream, uint64\_t addr, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;config = [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig")::[default\_conf](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv> "LIEF::PE::ParserConfig::default_conf")())

Same as [parse\_from\_dump(std::string\_view, uint64\_t, const ParserConfig&amp;)](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Parser_1a31fe26169705196375633b6e164d21ea>) but the dump is wrapped in the given **owned** stream.

Public Static Attributes

#### [` MAX_DATA_SIZE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser13MAX_DATA_SIZEE>)

static size\_t MAX\_DATA\_SIZE = 3\_GB

Maximum size of the data read.

#### [` MAX_TLS_CALLBACKS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser17MAX_TLS_CALLBACKSE>)

static size\_t MAX\_TLS\_CALLBACKS = 3000

#### [` MAX_IMPORT_ENTRIES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser18MAX_IMPORT_ENTRIESE>)

static size\_t MAX\_IMPORT\_ENTRIES = 0x10000

#### [` MAX_IMPORT_NAME_SIZE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser20MAX_IMPORT_NAME_SIZEE>)

static size\_t MAX\_IMPORT\_NAME\_SIZE = 0x1000

#### [` MAX_DLL_NAME_SIZE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser17MAX_DLL_NAME_SIZEE>)

static size\_t MAX\_DLL\_NAME\_SIZE = 255

#### [` MAX_PADDING_SIZE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Parser16MAX_PADDING_SIZEE>)

static size\_t MAX\_PADDING\_SIZE = 1\_GB

Max size of the padding section.

### [` ParserConfig `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE>)

struct ParserConfig

This structure is used to configure the behavior of the PE [Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Parser>) ([PE::Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Parser>)).

Public Functions

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ParserConfig9to_stringEv>)

std::string to\_string() const

Public Members

#### [` parse_signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig15parse_signatureE>)

bool parse\_signature = true

Whether to parse the PE Authenticode signature.

#### [` parse_exports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig13parse_exportsE>)

bool parse\_exports = true

Whether to parse the PE [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Export>) Directory.

#### [` parse_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig13parse_importsE>)

bool parse\_imports = true

Whether to parse the PE [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>) Directory.

#### [` parse_rsrc `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig10parse_rsrcE>)

bool parse\_rsrc = true

Whether to parse the PE resources tree.

#### [` parse_reloc `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig11parse_relocE>)

bool parse\_reloc = true

Whether to parse PE relocations.

#### [` parse_exceptions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig16parse_exceptionsE>)

bool parse\_exceptions = false

Whether to parse in-depth exception metadata.

This option is disabled by default because it can introduce significant parsing overhead.

#### [` parse_arm64x_binary `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig19parse_arm64x_binaryE>)

bool parse\_arm64x\_binary = false

Whether to parse nested ARM64X binaries.

This option is disabled by default because it can introduce significant parsing overhead.

#### [` rebase `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig6rebaseE>)

std::optional&lt;uint64\_t&gt; rebase

If set, this value holds the original image base from which the binary should be rebased. This is used to *undo* relocations and IAT bindings when parsing a PE loaded in memory.

Public Static Functions

#### [` default_conf `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig12default_confEv>)

static inline const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;default\_conf()

Returns the default configuration for the PE [Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Parser>).

#### [` all `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfig3allEv>)

static inline [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") all()

Returns a configuration that enables all optional parsing features.

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfiglsERNSt7ostreamERK12ParserConfig>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ParserConfig](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ParserConfigE> "LIEF::PE::ParserConfig") &amp;config)

---

## [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#binary>)

### [` Binary `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE>)

class Binary : public LIEF::[Binary](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6BinaryE> "LIEF::Binary")

Class which represents a PE binary This is the main interface to manage and modify a PE executable.

Public Types

#### [` sections_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10sections_tE>)

using sections\_t = std::vector&lt;std::unique\_ptr&lt;[Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section")&gt;&gt;

Internal container for storing PE’s [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>).

#### [` it_sections `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary11it_sectionsE>)

using it\_sections = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[sections\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10sections_tE> "LIEF::PE::Binary::sections_t")&amp;, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section")\*&gt;

Iterator that outputs [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>)&amp; object.

#### [` it_const_sections `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary17it_const_sectionsE>)

using it\_const\_sections = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [sections\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10sections_tE> "LIEF::PE::Binary::sections_t")&amp;, const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section")\*&gt;

Iterator that outputs const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>)&amp; object.

#### [` data_directories_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary18data_directories_tE>)

using data\_directories\_t = std::vector&lt;std::unique\_ptr&lt;[DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory")&gt;&gt;

Internal container for storing PE’s [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory>).

#### [` it_data_directories `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary19it_data_directoriesE>)

using it\_data\_directories = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[data\_directories\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary18data_directories_tE> "LIEF::PE::Binary::data_directories_t")&amp;, [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory")\*&gt;

Iterator that outputs [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory>)&amp;.

#### [` it_const_data_directories `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary25it_const_data_directoriesE>)

using it\_const\_data\_directories = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [data\_directories\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary18data_directories_tE> "LIEF::PE::Binary::data_directories_t")&amp;, const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory")\*&gt;

Iterator that outputs const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory>)&amp;.

#### [` relocations_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13relocations_tE>)

using relocations\_t = std::vector&lt;std::unique\_ptr&lt;[Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation")&gt;&gt;

Internal container for storing PE’s [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation>).

#### [` it_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary14it_relocationsE>)

using it\_relocations = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13relocations_tE> "LIEF::PE::Binary::relocations_t")&amp;, [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation")\*&gt;

Iterator that outputs [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation>)&amp;.

#### [` it_const_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary20it_const_relocationsE>)

using it\_const\_relocations = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13relocations_tE> "LIEF::PE::Binary::relocations_t")&amp;, const [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation")\*&gt;

Iterator that outputs const [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation>)&amp;.

#### [` imports_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary9imports_tE>)

using imports\_t = std::vector&lt;std::unique\_ptr&lt;[Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import")&gt;&gt;

Internal container for storing PE’s [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>).

#### [` it_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10it_importsE>)

using it\_imports = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[imports\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary9imports_tE> "LIEF::PE::Binary::imports_t")&amp;, [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import")\*&gt;

Iterator that outputs [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>)&amp;.

#### [` it_const_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16it_const_importsE>)

using it\_const\_imports = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [imports\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary9imports_tE> "LIEF::PE::Binary::imports_t")&amp;, const [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import")\*&gt;

Iterator that outputs const [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>)&amp;.

#### [` delay_imports_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15delay_imports_tE>)

using delay\_imports\_t = std::vector&lt;std::unique\_ptr&lt;[DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport")&gt;&gt;

Internal container for storing PE’s [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DelayImport>).

#### [` it_delay_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16it_delay_importsE>)

using it\_delay\_imports = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[delay\_imports\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15delay_imports_tE> "LIEF::PE::Binary::delay_imports_t")&amp;, [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport")\*&gt;

Iterator that outputs [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DelayImport>)&amp;.

#### [` it_const_delay_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary22it_const_delay_importsE>)

using it\_const\_delay\_imports = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [delay\_imports\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15delay_imports_tE> "LIEF::PE::Binary::delay_imports_t")&amp;, const [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport")\*&gt;

Iterator that outputs const [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DelayImport>)&amp;.

#### [` debug_entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15debug_entries_tE>)

using debug\_entries\_t = std::vector&lt;std::unique\_ptr&lt;[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&gt;&gt;

Internal container for storing [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Debug>) information.

#### [` it_debug_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16it_debug_entriesE>)

using it\_debug\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[debug\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15debug_entries_tE> "LIEF::PE::Binary::debug_entries_t")&amp;, [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")\*&gt;

Iterator that outputs [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Debug>)&amp;.

#### [` it_const_debug_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary22it_const_debug_entriesE>)

using it\_const\_debug\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [debug\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15debug_entries_tE> "LIEF::PE::Binary::debug_entries_t")&amp;, const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")\*&gt;

Iterator that outputs const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Debug>)&amp;.

#### [` symbols_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary9symbols_tE>)

using symbols\_t = std::vector&lt;std::unique\_ptr&lt;COFF::[Symbol](<https://lief.re/doc/latest/formats/coff/cpp.html#_CPPv4N4LIEF4COFF6SymbolE> "LIEF::COFF::Symbol")&gt;&gt;

Internal container for storing COFF Symbols.

#### [` it_symbols `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10it_symbolsE>)

using it\_symbols = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[symbols\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary9symbols_tE> "LIEF::PE::Binary::symbols_t")&amp;, COFF::[Symbol](<https://lief.re/doc/latest/formats/coff/cpp.html#_CPPv4N4LIEF4COFF6SymbolE> "LIEF::COFF::Symbol")\*&gt;

Iterator that outputs [Symbol](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol>)&amp;.

#### [` it_const_symbols `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16it_const_symbolsE>)

using it\_const\_symbols = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [symbols\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary9symbols_tE> "LIEF::PE::Binary::symbols_t")&amp;, const COFF::[Symbol](<https://lief.re/doc/latest/formats/coff/cpp.html#_CPPv4N4LIEF4COFF6SymbolE> "LIEF::COFF::Symbol")\*&gt;

Iterator that outputs const [Symbol](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol>)&amp;.

#### [` strings_table_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15strings_table_tE>)

using strings\_table\_t = std::vector&lt;COFF::[String](<https://lief.re/doc/latest/formats/coff/cpp.html#_CPPv4N4LIEF4COFF6StringE> "LIEF::COFF::String")&gt;

Internal container for storing strings.

#### [` it_strings_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16it_strings_tableE>)

using it\_strings\_table = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[strings\_table\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15strings_table_tE> "LIEF::PE::Binary::strings_table_t")&amp;&gt;

Iterator that outputs [COFF::String](<https://lief.re/doc/latest/formats/coff/cpp.html#classLIEF_1_1COFF_1_1String>)&amp;.

#### [` it_const_strings_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary22it_const_strings_tableE>)

using it\_const\_strings\_table = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [strings\_table\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15strings_table_tE> "LIEF::PE::Binary::strings_table_t")&amp;&gt;

Iterator that outputs const [COFF::String](<https://lief.re/doc/latest/formats/coff/cpp.html#classLIEF_1_1COFF_1_1String>)&amp;.

#### [` signatures_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary12signatures_tE>)

using signatures\_t = std::vector&lt;[Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature")&gt;

Internal container for storing PE’s authenticode [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>).

#### [` it_signatures `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13it_signaturesE>)

using it\_signatures = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[signatures\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary12signatures_tE> "LIEF::PE::Binary::signatures_t")&amp;&gt;

Iterator that outputs [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>)&amp;.

#### [` it_const_signatures `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary19it_const_signaturesE>)

using it\_const\_signatures = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [signatures\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary12signatures_tE> "LIEF::PE::Binary::signatures_t")&amp;&gt;

Iterator that outputs const [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>)&amp;.

#### [` exceptions_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary12exceptions_tE>)

using exceptions\_t = std::vector&lt;std::unique\_ptr&lt;[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")&gt;&gt;

Internal container for storing runtime function associated with exceptions.

#### [` it_exceptions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13it_exceptionsE>)

using it\_exceptions = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[exceptions\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary12exceptions_tE> "LIEF::PE::Binary::exceptions_t")&amp;, [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")\*&gt;

Iterator that outputs [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ExceptionInfo>)&amp;.

#### [` it_const_exceptions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary19it_const_exceptionsE>)

using it\_const\_exceptions = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [exceptions\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary12exceptions_tE> "LIEF::PE::Binary::exceptions_t")&amp;, const [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")\*&gt;

Iterator that outputs const [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ExceptionInfo>)&amp;.

Public Functions

#### [` Binary `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary6BinaryEv>)

Binary()

#### [` ~Binary `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryD0Ev>)

~Binary() override

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary4typeEv>)

inline [PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE") type() const

Return `PE32` or `PE32+`.

#### [` rva_to_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary13rva_to_offsetE8uint64_t>)

uint64\_t rva\_to\_offset(uint64\_t RVA) const

Convert a Relative Virtual Address into an offset.

The conversion is performed by looking for the section that encompasses the provided RVA.

#### [` va_to_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary12va_to_offsetE8uint64_t>)

inline uint64\_t va\_to\_offset(uint64\_t VA) const

Convert the **absolute** virtual address into an offset.

> **See also**
> 
> [rva\_to\_offset](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary_1a3e380bf8967c5fc218e6e8bfa3342c3f>)

#### [` offset_to_virtual_address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary25offset_to_virtual_addressE8uint64_t8uint64_t>)

virtual [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;uint64\_t&gt; offset\_to\_virtual\_address(uint64\_t offset, uint64\_t slide = 0) const override

Convert the given offset into an absolute virtual address.

**Parameters:**

- **offset** – **[in]** The offset to convert.
- **slide** – **[in]** If not 0, it will replace the default base address (if any)

#### [` offset_to_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary13offset_to_rvaE8uint64_t>)

uint64\_t offset\_to\_rva(uint64\_t offset) const

Convert the given offset into a relative virtual address (RVA).

#### [` imagebase `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary9imagebaseEv>)

inline virtual uint64\_t imagebase() const override

Return binary’s imagebase. `0` if not relevant.

The value is the same as those returned by [OptionalHeader::imagebase](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader_1a919cf16ff89a1a8b6e1434ee947f1212>)

#### [` section_from_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary19section_from_offsetE8uint64_t>)

inline [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section\_from\_offset(uint64\_t offset)

Find the section that encompasses the given offset.

If no section can be found, return a nullptr

#### [` section_from_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary19section_from_offsetE8uint64_t>)

const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section\_from\_offset(uint64\_t offset) const

#### [` section_from_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16section_from_rvaE8uint64_t>)

inline [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section\_from\_rva(uint64\_t virtual\_address)

Find the section that encompasses the given RVA.

If no section can be found, return a nullptr

#### [` section_from_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary16section_from_rvaE8uint64_t>)

const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section\_from\_rva(uint64\_t virtual\_address) const

#### [` sections `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary8sectionsEv>)

inline [it\_sections](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary11it_sectionsE> "LIEF::PE::Binary::it_sections") sections()

Return an iterator over the PE’s [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>).

#### [` sections `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary8sectionsEv>)

inline [it\_const\_sections](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary17it_const_sectionsE> "LIEF::PE::Binary::it_const_sections") sections() const

#### [` dos_header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10dos_headerEv>)

inline [DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderE> "LIEF::PE::DosHeader") &amp;dos\_header()

Return a reference to the [PE::DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DosHeader>) object.

#### [` dos_header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary10dos_headerEv>)

inline const [DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderE> "LIEF::PE::DosHeader") &amp;dos\_header() const

#### [` header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary6headerEv>)

inline [Header](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderE> "LIEF::PE::Header") &amp;header()

Return a reference to the [PE::Header](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Header>) object.

#### [` header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary6headerEv>)

inline const [Header](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderE> "LIEF::PE::Header") &amp;header() const

#### [` optional_header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15optional_headerEv>)

inline [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderE> "LIEF::PE::OptionalHeader") &amp;optional\_header()

[Header](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Header>) that follows the [header()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary_1ac0b916157ca43a923ff5fc8bdb2f408f>). It is named optional from the COFF specification but it is mandatory in a PE file.

#### [` optional_header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary15optional_headerEv>)

inline const [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderE> "LIEF::PE::OptionalHeader") &amp;optional\_header() const

#### [` compute_checksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary16compute_checksumEv>)

uint32\_t compute\_checksum() const

Re-compute the value of [OptionalHeader::checksum](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader_1ad2dab86e48d9cbe5f31828f9775d8b84>). If both values do not match, it could mean that the binary has been modified after the compilation.

This value is computed by LIEF for the current binary object.

#### [` virtual_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary12virtual_sizeEv>)

virtual uint64\_t virtual\_size() const override

Compute the binary’s virtual size. It should match [OptionalHeader::sizeof\_image](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader_1a8b3f7070437c27af11602a8733890049>).

#### [` sizeof_headers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary14sizeof_headersEv>)

uint32\_t sizeof\_headers() const

Compute the size of all the headers.

#### [` tls `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary3tlsEv>)

inline [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE> "LIEF::PE::TLS") \*tls()

Return a reference to the [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) object.

#### [` tls `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary3tlsEv>)

inline const [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE> "LIEF::PE::TLS") \*tls() const

#### [` tls `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary3tlsERK3TLS>)

[TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE> "LIEF::PE::TLS") &amp;tls(const [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE> "LIEF::PE::TLS") &amp;tls)

Set a [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) object in the current [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary>).

#### [` has_tls `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary7has_tlsEv>)

inline bool has\_tls() const

Check if the current binary has a [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) object.

#### [` remove_tls `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10remove_tlsEv>)

void remove\_tls()

Remove the [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) from the binary.

#### [` has_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary11has_importsEv>)

inline bool has\_imports() const

Check if the current binary contains imports.

> **See also**
> 
> [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>)

#### [` has_signatures `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary14has_signaturesEv>)

inline bool has\_signatures() const

Check if the current binary contains signatures.

> **See also**
> 
> [signatures](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary_1adee290afad67bc288c7a25289ab8b1b8>)

#### [` has_exports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary11has_exportsEv>)

inline bool has\_exports() const

Check if the current binary has exports.

> **See also**
> 
> [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Export>)

#### [` has_resources `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary13has_resourcesEv>)

inline bool has\_resources() const

Check if the current binary has resources.

#### [` has_exceptions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary14has_exceptionsEv>)

inline bool has\_exceptions() const

Check if the current binary has exceptions.

#### [` has_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary15has_relocationsEv>)

inline bool has\_relocations() const

Check if the current binary has relocations.

> **See also**
> 
> [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation>)

#### [` has_debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary9has_debugEv>)

inline bool has\_debug() const

Check if the current binary contains debug information.

#### [` has_configuration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary17has_configurationEv>)

inline bool has\_configuration() const

Check if the current binary has a load configuration.

#### [` is_reproducible_build `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary21is_reproducible_buildEv>)

bool is\_reproducible\_build() const

Check if the current binary is *reproducible build*, replacing timestamps by a compile hash.

> **See also**
> 
> [Repro](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Repro>)

#### [` signatures `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary10signaturesEv>)

inline [it\_const\_signatures](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary19it_const_signaturesE> "LIEF::PE::Binary::it_const_signatures") signatures() const

Return an iterator over the [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>) object(s) if the binary is signed.

#### [` signatures `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10signaturesEv>)

inline [it\_signatures](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13it_signaturesE> "LIEF::PE::Binary::it_signatures") signatures()

#### [` verify_signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary16verify_signatureEN9Signature19VERIFICATION_CHECKSE>)

[Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature")::[VERIFICATION\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGSE> "LIEF::PE::Signature::VERIFICATION_FLAGS") verify\_signature([Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature")::[VERIFICATION\_CHECKS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKSE> "LIEF::PE::Signature::VERIFICATION_CHECKS") checks = [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature")::[VERIFICATION\_CHECKS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKSE> "LIEF::PE::Signature::VERIFICATION_CHECKS")::[DEFAULT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKS7DEFAULTE> "LIEF::PE::Signature::VERIFICATION_CHECKS::DEFAULT")) const

Verify the binary against the embedded signature(s) (if any) First, it checks that the embedded signatures are correct (c.f. [Signature::check](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1a36c6c94366004eac8bac371eb0aa6ca2>)) and then, it checks that the authentihash matches [ContentInfo::digest](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ContentInfo_1a00aca4ec4bedb00a04a9585134daa2cc>).

One can tweak the verification process with the [Signature::VERIFICATION\_CHECKS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1abf70940910955c531f8d11e2fd374bdb>) flags

> **See also**
> 
> [LIEF::PE::Signature::check](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1a36c6c94366004eac8bac371eb0aa6ca2>)

#### [` verify_signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary16verify_signatureERK9SignatureN9Signature19VERIFICATION_CHECKSE>)

[Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature")::[VERIFICATION\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGSE> "LIEF::PE::Signature::VERIFICATION_FLAGS") verify\_signature(const [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature") &amp;sig, [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature")::[VERIFICATION\_CHECKS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKSE> "LIEF::PE::Signature::VERIFICATION_CHECKS") checks = [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature")::[VERIFICATION\_CHECKS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKSE> "LIEF::PE::Signature::VERIFICATION_CHECKS")::[DEFAULT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKS7DEFAULTE> "LIEF::PE::Signature::VERIFICATION_CHECKS::DEFAULT")) const

Verify the binary with the [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>) object provided in the first parameter. It can be used to verify a detached signature:

```cpp
result<Signature> detached = LIEF::PE::SignatureParser::parse("sig.pkcs7")
if (detached) {
  binary->verify_signature(detached.value());
}
```

#### [` authentihash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary12authentihashE10ALGORITHMS>)

std::vector&lt;uint8\_t&gt; authentihash([ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") algo) const

Compute the authentihash according to the algorithm provided in the first parameter.

#### [` get_export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10get_exportEv>)

inline [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportE> "LIEF::PE::Export") \*get\_export()

Return the [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Export>) object.

#### [` get_export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary10get_exportEv>)

inline const [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportE> "LIEF::PE::Export") \*get\_export() const

#### [` set_export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10set_exportERK6Export>)

[Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportE> "LIEF::PE::Export") &amp;set\_export(const [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportE> "LIEF::PE::Export") &amp;export\_table)

#### [` symbols `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary7symbolsEv>)

inline [it\_symbols](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10it_symbolsE> "LIEF::PE::Binary::it_symbols") symbols()

Return binary Symbols.

#### [` symbols `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary7symbolsEv>)

inline [it\_const\_symbols](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16it_const_symbolsE> "LIEF::PE::Binary::it_const_symbols") symbols() const

#### [` coff_string_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary17coff_string_tableEv>)

inline [it\_const\_strings\_table](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary22it_const_strings_tableE> "LIEF::PE::Binary::it_const_strings_table") coff\_string\_table() const

Iterator over the strings located in the COFF string table.

#### [` coff_string_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary17coff_string_tableEv>)

inline [it\_strings\_table](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16it_strings_tableE> "LIEF::PE::Binary::it_strings_table") coff\_string\_table()

#### [` find_coff_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16find_coff_stringE8uint32_t>)

inline COFF::[String](<https://lief.re/doc/latest/formats/coff/cpp.html#_CPPv4N4LIEF4COFF6StringE> "LIEF::COFF::String") \*find\_coff\_string(uint32\_t offset)

Try to find the COFF string at the given offset in the COFF string table.

> **Warning**
> 
> This offset must include the first 4 bytes holding the size of the table. Hence, the first string starts at the offset 4.

#### [` find_coff_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary16find_coff_stringE8uint32_t>)

inline const COFF::[String](<https://lief.re/doc/latest/formats/coff/cpp.html#_CPPv4N4LIEF4COFF6StringE> "LIEF::COFF::String") \*find\_coff\_string(uint32\_t offset) const

#### [` resources `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary9resourcesEv>)

inline [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") \*resources()

Return resources as a tree or a nullptr if there is no resources.

#### [` resources `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary9resourcesEv>)

inline const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") \*resources() const

#### [` set_resources `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13set_resourcesERK12ResourceNode>)

[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") \*set\_resources(const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;root)

Change or set the current resource tree with the new one provided in parameter.

#### [` set_resources `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13set_resourcesENSt10unique_ptrI12ResourceNodeEE>)

[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") \*set\_resources(std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; root)

#### [` resources_manager `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary17resources_managerEv>)

[result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourcesManager](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManagerE> "LIEF::PE::ResourcesManager")&gt; resources\_manager() const

Return the [ResourcesManager](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourcesManager>) (class to manage resources more easily than the tree one).

#### [` get_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary11get_sectionERKNSt6stringE>)

inline [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*get\_section(const std::string &amp;name)

Return binary’s section from its name. If the section can’t be found, return a nullptr.

**Parameters:**

**name** – **[in]** Name of the [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>)

#### [` get_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary11get_sectionERKNSt6stringE>)

const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*get\_section(const std::string &amp;name) const

#### [` import_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary14import_sectionEv>)

const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*import\_section() const

Return the section associated with import table or a nullptr if the binary does not have an import table.

#### [` import_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary14import_sectionEv>)

inline [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*import\_section()

#### [` remove_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary14remove_sectionERKNSt6stringEb>)

virtual void remove\_section(const std::string &amp;name, bool clear = false) override

Delete the section with the given name.

**Parameters:**

- **name** – **[in]** Name of section to delete
- **clear** – **[in]** if `true` clear the section’s content with 0 before removing (default: `false`)

#### [` remove `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary6removeERK7Sectionb>)

void remove(const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") &amp;section, bool clear = false)

Remove the given section.

> **See also**
> 
> [remove\_section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary_1a1db8d93579bd9471c897b32292f4c43f>)

#### [` add_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary11add_sectionERK7Section>)

[Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*add\_section(const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") &amp;section)

Add a section to the binary and return the section added.

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary11relocationsEv>)

inline [it\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary14it_relocationsE> "LIEF::PE::Binary::it_relocations") relocations()

Return an iterator over the PE’s [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation>).

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary11relocationsEv>)

inline [it\_const\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary20it_const_relocationsE> "LIEF::PE::Binary::it_const_relocations") relocations() const

#### [` add_relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary14add_relocationERK10Relocation>)

[Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation") &amp;add\_relocation(const [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation") &amp;relocation)

Add a new PE [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation>).

#### [` remove_all_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary22remove_all_relocationsEv>)

void remove\_all\_relocations()

Remove all the relocations.

#### [` data_directories `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16data_directoriesEv>)

inline [it\_data\_directories](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary19it_data_directoriesE> "LIEF::PE::Binary::it_data_directories") data\_directories()

Return an iterator over the [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory>) present in the [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary>).

#### [` data_directories `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary16data_directoriesEv>)

inline [it\_const\_data\_directories](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary25it_const_data_directoriesE> "LIEF::PE::Binary::it_const_data_directories") data\_directories() const

#### [` data_directory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary14data_directoryEN13DataDirectory5TYPESE>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*data\_directory([DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory")::[TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPESE> "LIEF::PE::DataDirectory::TYPES") type)

Return the [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory>) with the given type (or index).

#### [` data_directory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary14data_directoryEN13DataDirectory5TYPESE>)

const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*data\_directory([DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory")::[TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPESE> "LIEF::PE::DataDirectory::TYPES") type) const

#### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary3hasEN13DataDirectory5TYPESE>)

inline bool has([DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory")::[TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPESE> "LIEF::PE::DataDirectory::TYPES") type) const

Check if the current binary has the given [DataDirectory::TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory_1abc50978a5afaff445650cf12221fe879>).

#### [` debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary5debugEv>)

inline [it\_debug\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16it_debug_entriesE> "LIEF::PE::Binary::it_debug_entries") debug()

Return an iterator over the [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Debug>) entries.

#### [` debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary5debugEv>)

inline [it\_const\_debug\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary22it_const_debug_entriesE> "LIEF::PE::Binary::it_const_debug_entries") debug() const

#### [` add_debug_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary14add_debug_infoERK5Debug>)

[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") \*add\_debug\_info(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") &amp;entry)

Add a new debug entry.

#### [` remove_debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary12remove_debugERK5Debug>)

bool remove\_debug(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") &amp;entry)

Remove a specific debug entry.

#### [` clear_debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary11clear_debugEv>)

bool clear\_debug()

Remove all debug info from the binary.

#### [` codeview_pdb `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary12codeview_pdbEv>)

const [CodeViewPDB](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDBE> "LIEF::PE::CodeViewPDB") \*codeview\_pdb() const

Return the [CodeViewPDB](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1CodeViewPDB>) object if present.

#### [` codeview_pdb `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary12codeview_pdbEv>)

inline [CodeViewPDB](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDBE> "LIEF::PE::CodeViewPDB") \*codeview\_pdb()

#### [` load_configuration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary18load_configurationEv>)

inline const [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") \*load\_configuration() const

Return the [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1LoadConfiguration>) object or a nullptr if the binary does not use the [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1LoadConfiguration>).

#### [` load_configuration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary18load_configurationEv>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") \*load\_configuration()

#### [` overlay `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary7overlayEv>)

inline span&lt;const uint8\_t&gt; overlay() const

Return the overlay content.

#### [` overlay `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary7overlayEv>)

inline span&lt;uint8\_t&gt; overlay()

#### [` overlay_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary14overlay_offsetEv>)

inline uint64\_t overlay\_offset() const

Return the original overlay offset.

#### [` dos_stub `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary8dos_stubEv>)

inline span&lt;const uint8\_t&gt; dos\_stub() const

Return the DOS stub content.

#### [` dos_stub `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary8dos_stubEv>)

inline span&lt;uint8\_t&gt; dos\_stub()

#### [` dos_stub `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary8dos_stubENSt6vectorI7uint8_tEE>)

inline void dos\_stub(std::vector&lt;uint8\_t&gt; content)

Update the DOS stub content.

#### [` rich_header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary11rich_headerEv>)

inline [RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeaderE> "LIEF::PE::RichHeader") \*rich\_header()

Return a reference to the [RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RichHeader>) object.

#### [` rich_header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary11rich_headerEv>)

inline const [RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeaderE> "LIEF::PE::RichHeader") \*rich\_header() const

#### [` rich_header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary11rich_headerERK10RichHeader>)

void rich\_header(const [RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeaderE> "LIEF::PE::RichHeader") &amp;rich\_header)

Set a [RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RichHeader>) object in the current [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary>).

#### [` has_rich_header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary15has_rich_headerEv>)

inline bool has\_rich\_header() const

Check if the current binary has a [RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RichHeader>) object.

#### [` imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary7importsEv>)

inline [it\_imports](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10it_importsE> "LIEF::PE::Binary::it_imports") imports()

Return an iterator over the binary imports.

#### [` imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary7importsEv>)

inline [it\_const\_imports](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16it_const_importsE> "LIEF::PE::Binary::it_const_imports") imports() const

#### [` get_import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10get_importERKNSt6stringE>)

inline [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import") \*get\_import(const std::string &amp;import\_name)

Return the [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>) matching the provided name (case-sensitive).

If the import can’t be found, it returns a nullptr

#### [` get_import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary10get_importERKNSt6stringE>)

const [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import") \*get\_import(const std::string &amp;import\_name) const

#### [` has_import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary10has_importERKNSt6stringE>)

inline bool has\_import(const std::string &amp;import\_name) const

`True` if the binary imports the given library name

#### [` has_delay_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary17has_delay_importsEv>)

inline bool has\_delay\_imports() const

Check if the current binary contains delay imports.

#### [` delay_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13delay_importsEv>)

inline [it\_delay\_imports](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16it_delay_importsE> "LIEF::PE::Binary::it_delay_imports") delay\_imports()

Return an iterator over the binary’s delay imports.

#### [` delay_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary13delay_importsEv>)

inline [it\_const\_delay\_imports](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary22it_const_delay_importsE> "LIEF::PE::Binary::it_const_delay_imports") delay\_imports() const

#### [` get_delay_import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16get_delay_importERKNSt6stringE>)

inline [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport") \*get\_delay\_import(const std::string &amp;import\_name)

Returns the [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DelayImport>) matching the given name. If it can’t be found, it returns a nullptr.

#### [` get_delay_import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary16get_delay_importERKNSt6stringE>)

const [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport") \*get\_delay\_import(const std::string &amp;import\_name) const

#### [` has_delay_import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary16has_delay_importERKNSt6stringE>)

inline bool has\_delay\_import(const std::string &amp;import\_name) const

`True` if the binary delay-imports the given library name

#### [` add_import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10add_importERKNSt6stringE7int32_t>)

inline [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import") &amp;add\_import(const std::string &amp;name, int32\_t pos = -1)

Add an imported library (i.e. `DLL`) to the binary.

The second parameter `pos` defines where to insert the import. If negative (default), the import is appended to the end of the list.

#### [` remove_import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13remove_importERKNSt6stringE>)

bool remove\_import(const std::string &amp;name)

Remove the imported library with the given `name`.

Return true if the deletion succeeded, false otherwise.

#### [` remove_all_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary18remove_all_importsEv>)

inline void remove\_all\_imports()

Remove all libraries in the binary.

#### [` write `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary5writeERKNSt6stringE>)

inline std::unique\_ptr&lt;[Builder](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7BuilderE> "LIEF::PE::Builder")&gt; write(const std::string &amp;filename)

Reconstruct the binary object and write the raw PE in `filename`.

#### [` write `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary5writeERKNSt6stringERKN7Builder8config_tE>)

std::unique\_ptr&lt;[Builder](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7BuilderE> "LIEF::PE::Builder")&gt; write(const std::string &amp;filename, const [Builder](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7BuilderE> "LIEF::PE::Builder")::[config\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_tE> "LIEF::PE::Builder::config_t") &amp;config)

Reconstruct the binary object with the given configuration and write it in `filename`.

#### [` write `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary5writeERNSt7ostreamE>)

inline std::unique\_ptr&lt;[Builder](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7BuilderE> "LIEF::PE::Builder")&gt; write(std::ostream &amp;os)

Reconstruct the binary object and write the raw PE in `os` stream.

Rebuild a PE binary from the current [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary>) object. When rebuilding, import table and relocations are not rebuilt.

#### [` write `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary5writeERNSt7ostreamERKN7Builder8config_tE>)

std::unique\_ptr&lt;[Builder](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7BuilderE> "LIEF::PE::Builder")&gt; write(std::ostream &amp;os, const [Builder](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7BuilderE> "LIEF::PE::Builder")::[config\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_tE> "LIEF::PE::Builder::config_t") &amp;config)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Method so that a `visitor` can visit us.

#### [` patch_address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13patch_addressE8uint64_tRKNSt6vectorI7uint8_tEE8VA_TYPES>)

virtual void patch\_address(uint64\_t address, const std::vector&lt;uint8\_t&gt; &amp;patch\_value, VA\_TYPES addr\_type = VA\_TYPES::AUTO) override

Patch the content at virtual address `address` with `patch_value`.

**Parameters:**

- **address** – **[in]** Address to patch
- **patch\_value** – **[in]** Patch to apply
- **addr\_type** – **[in]** Type of the Virtual address: VA or RVA. Default: Auto

#### [` patch_address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13patch_addressE8uint64_t8uint64_t6size_t8VA_TYPES>)

virtual void patch\_address(uint64\_t address, uint64\_t patch\_value, size\_t size = sizeof(uint64\_t), VA\_TYPES addr\_type = VA\_TYPES::AUTO) override

Patch the address with the given value.

**Parameters:**

- **address** – **[in]** Address to patch
- **patch\_value** – **[in]** Patch to apply
- **size** – **[in]** Size of the value in **bytes** (1, 2, … 8)
- **addr\_type** – **[in]** Type of the Virtual address: VA or RVA. Default: Auto

#### [` fill_address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary12fill_addressE8uint64_t6size_t7uint8_t8VA_TYPES>)

void fill\_address(uint64\_t address, size\_t size, uint8\_t value = 0, VA\_TYPES addr\_type = VA\_TYPES::AUTO)

Fill the content at the provided address with a fixed value.

#### [` get_content_from_virtual_address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary32get_content_from_virtual_addressE8uint64_t8uint64_tN6Binary8VA_TYPESE>)

virtual span&lt;const uint8\_t&gt; get\_content\_from\_virtual\_address(uint64\_t virtual\_address, uint64\_t size, [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")::VA\_TYPES addr\_type = [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")::VA\_TYPES::AUTO) const override

Return the content located at the provided virtual address.

**Parameters:**

- **virtual\_address** – **[in]** Virtual address of the data to retrieve
- **size** – **[in]** Size in bytes of the data to retrieve
- **addr\_type** – **[in]** Type of the Virtual address: VA or RVA. Default: Auto

#### [` entrypoint `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary10entrypointEv>)

inline virtual uint64\_t entrypoint() const override

Return the binary’s entrypoint (it is the same value as [OptionalHeader::addressof\_entrypoint](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader_1ae4df5b4f4e1dea7a2ccdbc9d9c98ec42>)).

#### [` is_pie `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary6is_pieEv>)

inline virtual bool is\_pie() const override

Check if the binary is position independent.

#### [` has_nx `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary6has_nxEv>)

inline virtual bool has\_nx() const override

Check if the binary uses `NX` protection.

#### [` last_section_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary19last_section_offsetEv>)

uint64\_t last\_section\_offset() const

#### [` export_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10export_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*export\_dir()

Return the data directory associated with the export table.

#### [` export_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary10export_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*export\_dir() const

#### [` import_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10import_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*import\_dir()

Return the data directory associated with the import table.

#### [` import_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary10import_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*import\_dir() const

#### [` rsrc_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary8rsrc_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*rsrc\_dir()

Return the data directory associated with the resources tree.

#### [` rsrc_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary8rsrc_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*rsrc\_dir() const

#### [` exceptions_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary14exceptions_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*exceptions\_dir()

Return the data directory associated with the exceptions.

#### [` exceptions_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary14exceptions_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*exceptions\_dir() const

#### [` cert_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary8cert_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*cert\_dir()

Return the data directory associated with the certificate table (authenticode).

#### [` cert_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary8cert_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*cert\_dir() const

#### [` relocation_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary14relocation_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*relocation\_dir()

Return the data directory associated with the relocation table.

#### [` relocation_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary14relocation_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*relocation\_dir() const

#### [` debug_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary9debug_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*debug\_dir()

Return the data directory associated with the debug table.

#### [` debug_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary9debug_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*debug\_dir() const

#### [` tls_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary7tls_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*tls\_dir()

Return the data directory associated with [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>).

#### [` tls_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary7tls_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*tls\_dir() const

#### [` load_config_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary15load_config_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*load\_config\_dir()

Return the data directory associated with the load config.

#### [` load_config_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary15load_config_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*load\_config\_dir() const

#### [` iat_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary7iat_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*iat\_dir()

Return the data directory associated with the IAT.

#### [` iat_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary7iat_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*iat\_dir() const

#### [` delay_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary9delay_dirEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*delay\_dir()

Return the data directory associated with delayed imports.

#### [` delay_dir `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary9delay_dirEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*delay\_dir() const

#### [` ctor_functions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary14ctor_functionsEv>)

virtual LIEF::[Binary](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6BinaryE> "LIEF::Binary")::[functions\_t](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6Binary11functions_tE> "LIEF::Binary::functions_t") ctor\_functions() const override

Return the list of the binary constructors.

In a PE file, we consider a constructors as a callback in the [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) object

#### [` functions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary9functionsEv>)

LIEF::[Binary](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6BinaryE> "LIEF::Binary")::[functions\_t](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6Binary11functions_tE> "LIEF::Binary::functions_t") functions() const

**All** functions found in the binary

#### [` exception_functions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary19exception_functionsEv>)

LIEF::[Binary](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6BinaryE> "LIEF::Binary")::[functions\_t](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6Binary11functions_tE> "LIEF::Binary::functions_t") exception\_functions() const

Functions found in the Exception table directory.

#### [` exceptions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary10exceptionsEv>)

inline [it\_exceptions](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary13it_exceptionsE> "LIEF::PE::Binary::it_exceptions") exceptions()

Iterator over the exception (`_RUNTIME_FUNCTION`) functions.

> **Warning**
> 
> This function requires that the option [LIEF::PE::ParserConfig::parse\_exceptions](<https://lief.re/doc/latest/formats/pe/cpp.html#structLIEF_1_1PE_1_1ParserConfig_1a3ec51312c78db3ae9b94eea7a8fbce2b>) was turned on (default is false) when parsing the binary

#### [` exceptions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary10exceptionsEv>)

inline [it\_const\_exceptions](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary19it_const_exceptionsE> "LIEF::PE::Binary::it_const_exceptions") exceptions() const

#### [` find_exception_at `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary17find_exception_atE8uint32_t>)

[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") \*find\_exception\_at(uint32\_t rva)

Try to find the exception info at the given RVA.

> **Warning**
> 
> This function requires that the option [LIEF::PE::ParserConfig::parse\_exceptions](<https://lief.re/doc/latest/formats/pe/cpp.html#structLIEF_1_1PE_1_1ParserConfig_1a3ec51312c78db3ae9b94eea7a8fbce2b>) was turned on (default is false) when parsing the binary

#### [` find_exception_at `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary17find_exception_atE8uint32_t>)

inline const [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") \*find\_exception\_at(uint32\_t rva) const

#### [` is_arm64ec `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary10is_arm64ecEv>)

bool is\_arm64ec() const

True if this binary is compiled in ARM64EC mode (emulation compatible).

#### [` is_arm64x `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary9is_arm64xEv>)

bool is\_arm64x() const

True if this binary is compiled in ARM64X mode (contains both ARM64 and ARM64EC code).

#### [` nested_pe_binary `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary16nested_pe_binaryEv>)

inline const [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary") \*nested\_pe\_binary() const

If the current binary contains dynamic relocations (e.g. [LIEF::PE::DynamicFixupARM64X](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicFixupARM64X>)), this function returns the **relocated** view of the current PE.

This can be used to get the alternative PE binary, targeting a different architectures.

> **Warning**
> 
> This function requires that the option [LIEF::PE::ParserConfig::parse\_arm64x\_binary](<https://lief.re/doc/latest/formats/pe/cpp.html#structLIEF_1_1PE_1_1ParserConfig_1ae9b7f182b54b91ff5c154aada8a865c2>) was turned on (default is false) when parsing the binary

#### [` nested_pe_binary `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary16nested_pe_binaryEv>)

inline [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary") \*nested\_pe\_binary()

#### [` get_function_address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary20get_function_addressERKNSt6stringE>)

virtual [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;uint64\_t&gt; get\_function\_address(const std::string &amp;name) const override

Attempt to resolve the address of the function specified by `name`.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Binary5printERNSt7ostreamE>)

virtual std::ostream &amp;print(std::ostream &amp;os) const override

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Binary7classofEPKN4LIEF6BinaryE>)

static inline bool classof(const LIEF::[Binary](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6BinaryE> "LIEF::Binary") \*bin)

---

## [Dos Header](<https://lief.re/doc/latest/formats/pe/cpp.html#dos-header>)

### [` DosHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderE>)

class DosHeader : public LIEF::Object

Class which represents the [DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DosHeader>), the **first** structure present at the beginning of a PE file.

Most of the attributes of this structures are no longer relevant.

Public Types

#### [` reserved_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader10reserved_tE>)

using reserved\_t = std::array&lt;uint16\_t, 4&gt;

#### [` reserved2_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader11reserved2_tE>)

using reserved2\_t = std::array&lt;uint16\_t, 10&gt;

Public Functions

#### [` DosHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader9DosHeaderERKN7details13pe_dos_headerE>)

DosHeader(const details::pe\_dos\_header &amp;header)

#### [` DosHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader9DosHeaderERK9DosHeader>)

DosHeader(const [DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader9DosHeaderERK9DosHeader> "LIEF::PE::DosHeader::DosHeader")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderaSERK9DosHeader>)

[DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderE> "LIEF::PE::DosHeader") &amp;operator=(const [DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderE> "LIEF::PE::DosHeader")&amp;) = default

#### [` DosHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader9DosHeaderERR9DosHeader>)

DosHeader([DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader9DosHeaderERR9DosHeader> "LIEF::PE::DosHeader::DosHeader")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderaSERR9DosHeader>)

[DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderE> "LIEF::PE::DosHeader") &amp;operator=([DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderE> "LIEF::PE::DosHeader")&amp;&amp;) = default

#### [` ~DosHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderD0Ev>)

~DosHeader() override = default

#### [` magic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader5magicEv>)

inline uint16\_t magic() const

Magic bytes identifying a DOS/PE binary.

#### [` used_bytes_in_last_page `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader23used_bytes_in_last_pageEv>)

inline uint16\_t used\_bytes\_in\_last\_page() const

#### [` file_size_in_pages `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader18file_size_in_pagesEv>)

inline uint16\_t file\_size\_in\_pages() const

#### [` numberof_relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader19numberof_relocationEv>)

inline uint16\_t numberof\_relocation() const

#### [` header_size_in_paragraphs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader25header_size_in_paragraphsEv>)

inline uint16\_t header\_size\_in\_paragraphs() const

#### [` minimum_extra_paragraphs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader24minimum_extra_paragraphsEv>)

inline uint16\_t minimum\_extra\_paragraphs() const

#### [` maximum_extra_paragraphs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader24maximum_extra_paragraphsEv>)

inline uint16\_t maximum\_extra\_paragraphs() const

#### [` initial_relative_ss `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader19initial_relative_ssEv>)

inline uint16\_t initial\_relative\_ss() const

#### [` initial_sp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader10initial_spEv>)

inline uint16\_t initial\_sp() const

#### [` checksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader8checksumEv>)

inline uint16\_t checksum() const

#### [` initial_ip `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader10initial_ipEv>)

inline uint16\_t initial\_ip() const

#### [` initial_relative_cs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader19initial_relative_csEv>)

inline uint16\_t initial\_relative\_cs() const

#### [` addressof_relocation_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader26addressof_relocation_tableEv>)

inline uint16\_t addressof\_relocation\_table() const

#### [` overlay_number `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader14overlay_numberEv>)

inline uint16\_t overlay\_number() const

#### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader8reservedEv>)

inline const [reserved\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader10reserved_tE> "LIEF::PE::DosHeader::reserved_t") &amp;reserved() const

#### [` oem_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader6oem_idEv>)

inline uint16\_t oem\_id() const

#### [` oem_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader8oem_infoEv>)

inline uint16\_t oem\_info() const

#### [` reserved2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader9reserved2Ev>)

inline const [reserved2\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader11reserved2_tE> "LIEF::PE::DosHeader::reserved2_t") &amp;reserved2() const

#### [` addressof_new_exeheader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader23addressof_new_exeheaderEv>)

inline uint32\_t addressof\_new\_exeheader() const

Return the offset to the [PE::Header](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Header>) structure.

#### [` magic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader5magicE8uint16_t>)

inline void magic(uint16\_t magic)

#### [` used_bytes_in_last_page `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader23used_bytes_in_last_pageE8uint16_t>)

inline void used\_bytes\_in\_last\_page(uint16\_t value)

#### [` file_size_in_pages `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader18file_size_in_pagesE8uint16_t>)

inline void file\_size\_in\_pages(uint16\_t value)

#### [` numberof_relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader19numberof_relocationE8uint16_t>)

inline void numberof\_relocation(uint16\_t value)

#### [` header_size_in_paragraphs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader25header_size_in_paragraphsE8uint16_t>)

inline void header\_size\_in\_paragraphs(uint16\_t value)

#### [` minimum_extra_paragraphs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader24minimum_extra_paragraphsE8uint16_t>)

inline void minimum\_extra\_paragraphs(uint16\_t value)

#### [` maximum_extra_paragraphs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader24maximum_extra_paragraphsE8uint16_t>)

inline void maximum\_extra\_paragraphs(uint16\_t value)

#### [` initial_relative_ss `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader19initial_relative_ssE8uint16_t>)

inline void initial\_relative\_ss(uint16\_t value)

#### [` initial_sp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader10initial_spE8uint16_t>)

inline void initial\_sp(uint16\_t value)

#### [` checksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader8checksumE8uint16_t>)

inline void checksum(uint16\_t value)

#### [` initial_ip `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader10initial_ipE8uint16_t>)

inline void initial\_ip(uint16\_t value)

#### [` initial_relative_cs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader19initial_relative_csE8uint16_t>)

inline void initial\_relative\_cs(uint16\_t value)

#### [` addressof_relocation_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader26addressof_relocation_tableE8uint16_t>)

inline void addressof\_relocation\_table(uint16\_t value)

#### [` overlay_number `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader14overlay_numberE8uint16_t>)

inline void overlay\_number(uint16\_t value)

#### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader8reservedERK10reserved_t>)

inline void reserved(const [reserved\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader10reserved_tE> "LIEF::PE::DosHeader::reserved_t") &amp;reserved)

#### [` oem_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader6oem_idE8uint16_t>)

inline void oem\_id(uint16\_t value)

#### [` oem_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader8oem_infoE8uint16_t>)

inline void oem\_info(uint16\_t value)

#### [` reserved2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader9reserved2ERK11reserved2_t>)

inline void reserved2(const [reserved2\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader11reserved2_tE> "LIEF::PE::DosHeader::reserved2_t") &amp;reserved2)

#### [` addressof_new_exeheader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader23addressof_new_exeheaderE8uint32_t>)

inline void addressof\_new\_exeheader(uint32\_t value)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9DosHeader6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` create `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader6createE7PE_TYPE>)

static [DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderE> "LIEF::PE::DosHeader") create([PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE") type)

Public Static Attributes

#### [` MAGIC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeader5MAGICE>)

static uint16\_t MAGIC = 0x5a4d

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderlsERNSt7ostreamERK9DosHeader>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderE> "LIEF::PE::DosHeader") &amp;entry)

---

## [Header](<https://lief.re/doc/latest/formats/pe/cpp.html#header>)

### [` Header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderE>)

class Header : public LIEF::Object

Class that represents the PE header (which follows the [DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DosHeader>)).

Public Types

#### [` MACHINE_TYPES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE>)

enum class MACHINE\_TYPES

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES7UNKNOWNE>)

enumerator UNKNOWN = 0x0

##### [` ALPHA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES5ALPHAE>)

enumerator ALPHA = 0x184

Alpha AXP, 32-bit address space

##### [` ALPHA64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES7ALPHA64E>)

enumerator ALPHA64 = 0x284

Alpha AXP, 64-bit address space

##### [` AM33 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES4AM33E>)

enumerator AM33 = 0x1D3

Matsushita AM33

##### [` AMD64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES5AMD64E>)

enumerator AMD64 = 0x8664

AMD x64

##### [` ARM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES3ARME>)

enumerator ARM = 0x1C0

ARM little endian

##### [` ARMNT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES5ARMNTE>)

enumerator ARMNT = 0x1C4

ARMv7 Thumb mode only

##### [` ARM64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES5ARM64E>)

enumerator ARM64 = 0xAA64

ARMv8 in 64-bits mode

##### [` EBC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES3EBCE>)

enumerator EBC = 0xEBC

EFI byte code

##### [` I386 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES4I386E>)

enumerator I386 = 0x14C

Intel 386 or later

##### [` IA64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES4IA64E>)

enumerator IA64 = 0x200

Intel Itanium processor family

##### [` LOONGARCH32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES11LOONGARCH32E>)

enumerator LOONGARCH32 = 0x6232

LoongArch 32-bit processor family

##### [` LOONGARCH64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES11LOONGARCH64E>)

enumerator LOONGARCH64 = 0x6264

LoongArch 64-bit processor family

##### [` M32R `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES4M32RE>)

enumerator M32R = 0x9041

Mitsubishi M32R little endian

##### [` MIPS16 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES6MIPS16E>)

enumerator MIPS16 = 0x266

MIPS16

##### [` MIPSFPU `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES7MIPSFPUE>)

enumerator MIPSFPU = 0x366

MIPS with FPU

##### [` MIPSFPU16 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES9MIPSFPU16E>)

enumerator MIPSFPU16 = 0x466

MIPS16 with FPU

##### [` POWERPC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES7POWERPCE>)

enumerator POWERPC = 0x1F0

Power PC little endian

##### [` POWERPCFP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES9POWERPCFPE>)

enumerator POWERPCFP = 0x1F1

Power PC with floating point

##### [` POWERPCBE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES9POWERPCBEE>)

enumerator POWERPCBE = 0x1F2

Power PC big endian

##### [` R4000 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES5R4000E>)

enumerator R4000 = 0x166

MIPS with little endian

##### [` RISCV32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES7RISCV32E>)

enumerator RISCV32 = 0x5032

RISC-V 32-bit address space

##### [` RISCV64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES7RISCV64E>)

enumerator RISCV64 = 0x5064

RISC-V 64-bit address space

##### [` RISCV128 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES8RISCV128E>)

enumerator RISCV128 = 0x5128

RISC-V 128-bit address space

##### [` SH3 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES3SH3E>)

enumerator SH3 = 0x1A2

Hitachi SH3

##### [` SH3DSP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES6SH3DSPE>)

enumerator SH3DSP = 0x1A3

Hitachi SH3 DSP

##### [` SH4 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES3SH4E>)

enumerator SH4 = 0x1A6

Hitachi SH4

##### [` SH5 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES3SH5E>)

enumerator SH5 = 0x1A8

Hitachi SH5

##### [` THUMB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES5THUMBE>)

enumerator THUMB = 0x1C2

ARM or Thumb

##### [` WCEMIPSV2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES9WCEMIPSV2E>)

enumerator WCEMIPSV2 = 0x169

MIPS little-endian WCE v2

##### [` ARM64EC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES7ARM64ECE>)

enumerator ARM64EC = 0xa641

##### [` ARM64X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES6ARM64XE>)

enumerator ARM64X = 0xa64e

##### [` CHPE_X86 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPES8CHPE_X86E>)

enumerator CHPE\_X86 = 0x3a64

#### [` CHARACTERISTICS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICSE>)

enum class CHARACTERISTICS

*Values:*

##### [` NONE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS4NONEE>)

enumerator NONE = 0x0000

##### [` RELOCS_STRIPPED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS15RELOCS_STRIPPEDE>)

enumerator RELOCS\_STRIPPED = 0x0001

The file does not contain base relocations and must be loaded at its preferred base. If this cannot be done, the loader will error.

##### [` EXECUTABLE_IMAGE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS16EXECUTABLE_IMAGEE>)

enumerator EXECUTABLE\_IMAGE = 0x0002

File is executable (i.e. no unresolved external references).

##### [` LINE_NUMS_STRIPPED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS18LINE_NUMS_STRIPPEDE>)

enumerator LINE\_NUMS\_STRIPPED = 0x0004

COFF line numbers have been stripped. This is deprecated and should be 0.

##### [` LOCAL_SYMS_STRIPPED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS19LOCAL_SYMS_STRIPPEDE>)

enumerator LOCAL\_SYMS\_STRIPPED = 0x0008

COFF symbol table entries for local symbols have been removed. This is deprecated and should be 0.

##### [` AGGRESSIVE_WS_TRIM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS18AGGRESSIVE_WS_TRIME>)

enumerator AGGRESSIVE\_WS\_TRIM = 0x0010

Aggressively trim working set. This is deprecated and must be 0.

##### [` LARGE_ADDRESS_AWARE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS19LARGE_ADDRESS_AWAREE>)

enumerator LARGE\_ADDRESS\_AWARE = 0x0020

Image can handle &gt; 2GiB addresses.

##### [` BYTES_REVERSED_LO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS17BYTES_REVERSED_LOE>)

enumerator BYTES\_REVERSED\_LO = 0x0080

Little endian: the LSB precedes the MSB in memory. This is deprecated and should be 0.

##### [` NEED_32BIT_MACHINE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS18NEED_32BIT_MACHINEE>)

enumerator NEED\_32BIT\_MACHINE = 0x0100

Machine is based on a 32bit word architecture.

##### [` DEBUG_STRIPPED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS14DEBUG_STRIPPEDE>)

enumerator DEBUG\_STRIPPED = 0x0200

Debugging info has been removed.

##### [` REMOVABLE_RUN_FROM_SWAP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS23REMOVABLE_RUN_FROM_SWAPE>)

enumerator REMOVABLE\_RUN\_FROM\_SWAP = 0x0400

If the image is on removable media, fully load it and copy it to swap.

##### [` NET_RUN_FROM_SWAP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS17NET_RUN_FROM_SWAPE>)

enumerator NET\_RUN\_FROM\_SWAP = 0x0800

If the image is on network media, fully load it and copy it to swap.

##### [` SYSTEM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS6SYSTEME>)

enumerator SYSTEM = 0x1000

The image file is a system file, not a user program.

##### [` DLL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS3DLLE>)

enumerator DLL = 0x2000

The image file is a DLL.

##### [` UP_SYSTEM_ONLY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS14UP_SYSTEM_ONLYE>)

enumerator UP\_SYSTEM\_ONLY = 0x4000

This file should only be run on a uniprocessor machine.

##### [` BYTES_REVERSED_HI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICS17BYTES_REVERSED_HIE>)

enumerator BYTES\_REVERSED\_HI = 0x8000

Big endian: the MSB precedes the LSB in memory. This is deprecated.

#### [` signature_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header11signature_tE>)

using signature\_t = std::array&lt;uint8\_t, 4&gt;

Public Functions

#### [` Header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header6HeaderERKN7details9pe_headerE>)

Header(const details::pe\_header &amp;header)

#### [` ~Header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderD0Ev>)

~Header() override = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderaSERK6Header>)

[Header](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderE> "LIEF::PE::Header") &amp;operator=(const [Header](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderE> "LIEF::PE::Header")&amp;) = default

#### [` Header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header6HeaderERK6Header>)

Header(const [Header](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header6HeaderERK6Header> "LIEF::PE::Header::Header")&amp;) = default

#### [` signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header9signatureEv>)

inline const [signature\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header11signature_tE> "LIEF::PE::Header::signature_t") &amp;signature() const

[Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>) (or magic byte) of the header. It must be: `PE\0\0`.

#### [` machine `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header7machineEv>)

inline [MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") machine() const

The targeted machine architecture like ARM, x86, AMD64, …

#### [` numberof_sections `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header17numberof_sectionsEv>)

inline uint16\_t numberof\_sections() const

The number of sections in the binary.

#### [` time_date_stamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header15time_date_stampEv>)

inline uint32\_t time\_date\_stamp() const

The low 32 bits of the number of seconds since January 1, 1970. It **indicates** when the file was created.

#### [` pointerto_symbol_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header22pointerto_symbol_tableEv>)

inline uint32\_t pointerto\_symbol\_table() const

The offset of the **COFF** symbol table.

This value should be zero for an image because COFF debugging information is deprecated.

#### [` numberof_symbols `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header16numberof_symbolsEv>)

inline uint32\_t numberof\_symbols() const

The number of entries in the symbol table. This data can be used to locate the string table which immediately follows the symbol table.

This value should be zero for an image because COFF debugging information is deprecated.

#### [` sizeof_optional_header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header22sizeof_optional_headerEv>)

inline uint16\_t sizeof\_optional\_header() const

Size of the [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader>) **AND** the data directories which follows this header.

This value is equivalent to: `sizeof(pe_optional_header) + NB_DATA_DIR * sizeof(data_directory)`

This size **should** be either:

- 0xE0 (224) for a PE32 (32 bits)
- 0xF0 (240) for a PE32+ (64 bits)

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header15characteristicsEv>)

inline uint32\_t characteristics() const

Characteristics of the binary like whether it is a DLL or an executable.

#### [` has_characteristic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header18has_characteristicE15CHARACTERISTICS>)

inline bool has\_characteristic([CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICSE> "LIEF::PE::Header::CHARACTERISTICS") c) const

Check if the given [CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Header_1a08d38528d74f0baf71291de383c447fd>) is present.

#### [` characteristics_list `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header20characteristics_listEv>)

std::vector&lt;[CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICSE> "LIEF::PE::Header::CHARACTERISTICS")&gt; characteristics\_list() const

The list of the [CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Header_1a08d38528d74f0baf71291de383c447fd>).

#### [` machine `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header7machineE13MACHINE_TYPES>)

inline void machine([MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") type)

#### [` numberof_sections `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header17numberof_sectionsE8uint16_t>)

inline void numberof\_sections(uint16\_t nb)

#### [` time_date_stamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15time_date_stampE8uint32_t>)

inline void time\_date\_stamp(uint32\_t timestamp)

#### [` pointerto_symbol_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header22pointerto_symbol_tableE8uint32_t>)

inline void pointerto\_symbol\_table(uint32\_t ptr)

#### [` numberof_symbols `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header16numberof_symbolsE8uint32_t>)

inline void numberof\_symbols(uint32\_t nb)

#### [` sizeof_optional_header `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header22sizeof_optional_headerE8uint16_t>)

inline void sizeof\_optional\_header(uint16\_t size)

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15characteristicsE8uint32_t>)

inline void characteristics(uint32\_t characteristics)

#### [` signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header9signatureERK11signature_t>)

inline void signature(const [signature\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header11signature_tE> "LIEF::PE::Header::signature_t") &amp;sig)

#### [` add_characteristic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header18add_characteristicE15CHARACTERISTICS>)

inline void add\_characteristic([CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICSE> "LIEF::PE::Header::CHARACTERISTICS") c)

#### [` remove_characteristic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header21remove_characteristicE15CHARACTERISTICS>)

inline void remove\_characteristic([CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header15CHARACTERISTICSE> "LIEF::PE::Header::CHARACTERISTICS") c)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Header6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` is_known_machine `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header16is_known_machineE8uint16_t>)

static bool is\_known\_machine(uint16\_t machine)

#### [` is_arm `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header6is_armE13MACHINE_TYPES>)

static inline bool is\_arm([MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") ty)

#### [` is_riscv `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header8is_riscvE13MACHINE_TYPES>)

static inline bool is\_riscv([MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") ty)

#### [` is_loonarch `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header11is_loonarchE13MACHINE_TYPES>)

static inline bool is\_loonarch([MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") ty)

#### [` is_arm64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header8is_arm64E13MACHINE_TYPES>)

static inline bool is\_arm64([MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") ty)

#### [` is_thumb `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header8is_thumbE13MACHINE_TYPES>)

static inline bool is\_thumb([MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") ty)

#### [` x86 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header3x86E13MACHINE_TYPES>)

static inline bool x86([MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") ty)

#### [` x86_64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header6x86_64E13MACHINE_TYPES>)

static inline bool x86\_64([MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") ty)

#### [` is_mips `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header7is_mipsE13MACHINE_TYPES>)

static inline bool is\_mips([MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") ty)

#### [` is_ppc `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header6is_ppcE13MACHINE_TYPES>)

static inline bool is\_ppc([MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") ty)

#### [` create `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header6createE7PE_TYPE>)

static [Header](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderE> "LIEF::PE::Header") create([PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE") type)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderlsERNSt7ostreamERK6Header>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Header](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderE> "LIEF::PE::Header") &amp;entry)

---

## [Optional Header](<https://lief.re/doc/latest/formats/pe/cpp.html#optional-header>)

### [` OptionalHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderE>)

class OptionalHeader : public LIEF::Object

Class which represents the PE [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader>) structure.

Note that the term *optional* comes from the COFF specifications but this header is **mandatory** for a PE binary.

Public Types

#### [` DLL_CHARACTERISTICS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICSE>)

enum class DLL\_CHARACTERISTICS : size\_t

*Values:*

##### [` HIGH_ENTROPY_VA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS15HIGH_ENTROPY_VAE>)

enumerator HIGH\_ENTROPY\_VA = 0x0020

ASLR with 64 bit address space.

##### [` DYNAMIC_BASE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS12DYNAMIC_BASEE>)

enumerator DYNAMIC\_BASE = 0x0040

DLL can be relocated at load time.

##### [` FORCE_INTEGRITY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS15FORCE_INTEGRITYE>)

enumerator FORCE\_INTEGRITY = 0x0080

Code integrity checks are enforced.

##### [` NX_COMPAT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS9NX_COMPATE>)

enumerator NX\_COMPAT = 0x0100

Image is NX compatible.

##### [` NO_ISOLATION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS12NO_ISOLATIONE>)

enumerator NO\_ISOLATION = 0x0200

Isolation aware, but do not isolate the image.

##### [` NO_SEH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS6NO_SEHE>)

enumerator NO\_SEH = 0x0400

Does not use structured exception handling (SEH). No SEH handler may be called in this image.

##### [` NO_BIND `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS7NO_BINDE>)

enumerator NO\_BIND = 0x0800

Do not bind the image.

##### [` APPCONTAINER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS12APPCONTAINERE>)

enumerator APPCONTAINER = 0x1000

Image should execute in an AppContainer.

##### [` WDM_DRIVER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS10WDM_DRIVERE>)

enumerator WDM\_DRIVER = 0x2000

A WDM driver.

##### [` GUARD_CF `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS8GUARD_CFE>)

enumerator GUARD\_CF = 0x4000

Image supports Control Flow Guard.

##### [` TERMINAL_SERVER_AWARE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICS21TERMINAL_SERVER_AWAREE>)

enumerator TERMINAL\_SERVER\_AWARE = 0x8000

Terminal Server aware.

#### [` SUBSYSTEM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEME>)

enum class SUBSYSTEM : size\_t

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM7UNKNOWNE>)

enumerator UNKNOWN = 0

An unknown subsystem.

##### [` NATIVE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM6NATIVEE>)

enumerator NATIVE = 1

Device drivers and native Windows processes.

##### [` WINDOWS_GUI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM11WINDOWS_GUIE>)

enumerator WINDOWS\_GUI = 2

The Windows GUI subsystem.

##### [` WINDOWS_CUI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM11WINDOWS_CUIE>)

enumerator WINDOWS\_CUI = 3

The Windows character subsystem.

##### [` OS2_CUI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM7OS2_CUIE>)

enumerator OS2\_CUI = 5

The OS/2 character subsystem.

##### [` POSIX_CUI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM9POSIX_CUIE>)

enumerator POSIX\_CUI = 7

The POSIX character subsystem.

##### [` NATIVE_WINDOWS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM14NATIVE_WINDOWSE>)

enumerator NATIVE\_WINDOWS = 8

Native Windows 9x driver.

##### [` WINDOWS_CE_GUI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM14WINDOWS_CE_GUIE>)

enumerator WINDOWS\_CE\_GUI = 9

Windows CE.

##### [` EFI_APPLICATION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM15EFI_APPLICATIONE>)

enumerator EFI\_APPLICATION = 10

An EFI application.

##### [` EFI_BOOT_SERVICE_DRIVER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM23EFI_BOOT_SERVICE_DRIVERE>)

enumerator EFI\_BOOT\_SERVICE\_DRIVER = 11

An EFI driver with boot services.

##### [` EFI_RUNTIME_DRIVER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM18EFI_RUNTIME_DRIVERE>)

enumerator EFI\_RUNTIME\_DRIVER = 12

An EFI driver with run-time services.

##### [` EFI_ROM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM7EFI_ROME>)

enumerator EFI\_ROM = 13

An EFI ROM image.

##### [` XBOX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM4XBOXE>)

enumerator XBOX = 14

XBOX.

##### [` WINDOWS_BOOT_APPLICATION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM24WINDOWS_BOOT_APPLICATIONE>)

enumerator WINDOWS\_BOOT\_APPLICATION = 16

A BCD application.

##### [` XBOX_CODE_CATALOG `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEM17XBOX_CODE_CATALOGE>)

enumerator XBOX\_CODE\_CATALOG = 17

Security Metadata Containers.

Public Functions

#### [` OptionalHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader14OptionalHeaderERKN7details20pe32_optional_headerE>)

OptionalHeader(const details::pe32\_optional\_header &amp;header)

#### [` OptionalHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader14OptionalHeaderERKN7details20pe64_optional_headerE>)

OptionalHeader(const details::pe64\_optional\_header &amp;header)

#### [` ~OptionalHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderD0Ev>)

~OptionalHeader() override = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderaSERK14OptionalHeader>)

[OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderE> "LIEF::PE::OptionalHeader") &amp;operator=(const [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderE> "LIEF::PE::OptionalHeader")&amp;) = default

#### [` OptionalHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader14OptionalHeaderERK14OptionalHeader>)

OptionalHeader(const [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader14OptionalHeaderERK14OptionalHeader> "LIEF::PE::OptionalHeader::OptionalHeader")&amp;) = default

#### [` magic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader5magicEv>)

inline [PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE") magic() const

Magic bytes: either `PE32` or `PE32+` for 64-bits PE files.

#### [` major_linker_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader20major_linker_versionEv>)

inline uint8\_t major\_linker\_version() const

The linker major version.

#### [` minor_linker_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader20minor_linker_versionEv>)

inline uint8\_t minor\_linker\_version() const

The linker minor version.

#### [` sizeof_code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader11sizeof_codeEv>)

inline uint32\_t sizeof\_code() const

The size of the code `.text` section or the sum of all the sections that contain code (i.e. [PE::Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>) with the flag [Section::CHARACTERISTICS::CNT\_CODE](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section_1a802580e157009845c3859c02554bc6bea26d6d065e598c1c1362bd10401db2843>)).

#### [` sizeof_initialized_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader23sizeof_initialized_dataEv>)

inline uint32\_t sizeof\_initialized\_data() const

The size of the initialized data which are usually located in the `.data` section. If the initialized data are split across multiple sections, it is the sum of the sections.

The sections associated with the initialized data are usually identified with the flag [Section::CHARACTERISTICS::CNT\_INITIALIZED\_DATA](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section_1a802580e157009845c3859c02554bc6beafbe60575ab46f9dfab2066dfe272c8c5>)

#### [` sizeof_uninitialized_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader25sizeof_uninitialized_dataEv>)

inline uint32\_t sizeof\_uninitialized\_data() const

The size of the uninitialized data which are usually located in the `.bss` section. If the uninitialized data are split across multiple sections, it is the sum of the sections.

The sections associated with the uninitialized data are usually identified with the flag [Section::CHARACTERISTICS::CNT\_UNINITIALIZED\_DATA](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section_1a802580e157009845c3859c02554bc6bea90111e5f00a390fbde48fb6d94b46a08>)

#### [` addressof_entrypoint `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader20addressof_entrypointEv>)

inline uint32\_t addressof\_entrypoint() const

The address of the entry point relative to the image base when the executable file is loaded into memory. For program images, this is the starting address. For device drivers, this is the address of the initialization function.

An entry point is optional for DLLs. When no entry point is present, this field must be zero.

#### [` baseof_code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader11baseof_codeEv>)

inline uint32\_t baseof\_code() const

Address relative to the imagebase where the binary’s code starts.

#### [` baseof_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader11baseof_dataEv>)

inline uint32\_t baseof\_data() const

Address relative to the imagebase where the binary’s data starts.

> **Warning**
> 
> This value is not present for PE64 files

#### [` imagebase `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader9imagebaseEv>)

inline uint64\_t imagebase() const

The preferred base address when mapping the binary in memory.

#### [` section_alignment `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader17section_alignmentEv>)

inline uint32\_t section\_alignment() const

The alignment (in bytes) of sections when they are loaded into memory.

It must be greater than or equal to file\_alignment and the default is the page size for the architecture.

#### [` file_alignment `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader14file_alignmentEv>)

inline uint32\_t file\_alignment() const

The section’s file alignment. This value must be a power of 2 between 512 and 64K. The default value is usually 512.

#### [` major_operating_system_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader30major_operating_system_versionEv>)

inline uint16\_t major\_operating\_system\_version() const

The **major** version number of the required operating system.

#### [` minor_operating_system_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader30minor_operating_system_versionEv>)

inline uint16\_t minor\_operating\_system\_version() const

The **minor** version number of the required operating system.

#### [` major_image_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader19major_image_versionEv>)

inline uint16\_t major\_image\_version() const

The major version number of the image.

#### [` minor_image_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader19minor_image_versionEv>)

inline uint16\_t minor\_image\_version() const

The minor version number of the image.

#### [` major_subsystem_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader23major_subsystem_versionEv>)

inline uint16\_t major\_subsystem\_version() const

The major version number of the subsystem.

#### [` minor_subsystem_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader23minor_subsystem_versionEv>)

inline uint16\_t minor\_subsystem\_version() const

The minor version number of the subsystem.

#### [` win32_version_value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader19win32_version_valueEv>)

inline uint32\_t win32\_version\_value() const

According to the official PE specifications, this value is reserved and **should** be 0.

#### [` sizeof_image `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader12sizeof_imageEv>)

inline uint32\_t sizeof\_image() const

The size (in bytes) of the image, including all headers, as the image is loaded in memory.

It must be a multiple of section\_alignment and should match [Binary::virtual\_size](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary_1aaa4c4e17d1b90bdec3a4408122b0eda8>)

#### [` sizeof_headers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader14sizeof_headersEv>)

inline uint32\_t sizeof\_headers() const

Size of the [DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DosHeader>) + PE [Header](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Header>) + [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>) headers rounded up to a multiple of the file\_alignment.

#### [` checksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader8checksumEv>)

inline uint32\_t checksum() const

The image file checksum. The algorithm for computing the checksum is incorporated into `IMAGHELP.DLL`.

The following are checked for validation at load time all **drivers**, any **DLL loaded at boot** time, and any **DLL** that is loaded into a **critical** Windows process.

#### [` subsystem `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader9subsystemEv>)

inline [SUBSYSTEM](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEME> "LIEF::PE::OptionalHeader::SUBSYSTEM") subsystem() const

Target subsystem like Driver, XBox, Windows GUI, …

#### [` dll_characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader19dll_characteristicsEv>)

inline uint32\_t dll\_characteristics() const

Some characteristics of the underlying binary like the support of the PIE. The prefix `dll` comes from the official PE specifications but these characteristics are also used for **executables**.

#### [` sizeof_stack_reserve `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader20sizeof_stack_reserveEv>)

inline uint64\_t sizeof\_stack\_reserve() const

Size of the stack to reserve when loading the PE binary.

Only [OptionalHeader::sizeof\_stack\_commit](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader_1a2bde468d13626802fca90960355d4f67>) is committed, the rest is made available one page at a time until the reserve size is reached.

#### [` sizeof_stack_commit `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader19sizeof_stack_commitEv>)

inline uint64\_t sizeof\_stack\_commit() const

Size of the stack to commit.

#### [` sizeof_heap_reserve `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader19sizeof_heap_reserveEv>)

inline uint64\_t sizeof\_heap\_reserve() const

Size of the heap to reserve when loading the PE binary.

#### [` sizeof_heap_commit `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader18sizeof_heap_commitEv>)

inline uint64\_t sizeof\_heap\_commit() const

Size of the heap to commit.

#### [` loader_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader12loader_flagsEv>)

inline uint32\_t loader\_flags() const

According to the PE specifications, this value is *reserved* and **should** be 0.

#### [` numberof_rva_and_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader21numberof_rva_and_sizeEv>)

inline uint32\_t numberof\_rva\_and\_size() const

The number of [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory>) that follow this header.

#### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader3hasE19DLL_CHARACTERISTICS>)

inline bool has([DLL\_CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICSE> "LIEF::PE::OptionalHeader::DLL_CHARACTERISTICS") c) const

Check if the given [DLL\_CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader_1a01b5cd1a580304bb99f12cbed0a3c973>) is included in the dll\_characteristics.

#### [` dll_characteristics_list `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader24dll_characteristics_listEv>)

std::vector&lt;[DLL\_CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICSE> "LIEF::PE::OptionalHeader::DLL_CHARACTERISTICS")&gt; dll\_characteristics\_list() const

Return the list of the dll\_characteristics as an std::set of [DLL\_CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader_1a01b5cd1a580304bb99f12cbed0a3c973>).

#### [` add `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader3addE19DLL_CHARACTERISTICS>)

inline void add([DLL\_CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICSE> "LIEF::PE::OptionalHeader::DLL_CHARACTERISTICS") c)

Add a [DLL\_CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader_1a01b5cd1a580304bb99f12cbed0a3c973>) to the current characteristics.

#### [` remove `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader6removeE19DLL_CHARACTERISTICS>)

inline void remove([DLL\_CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICSE> "LIEF::PE::OptionalHeader::DLL_CHARACTERISTICS") c)

Remove a [DLL\_CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1OptionalHeader_1a01b5cd1a580304bb99f12cbed0a3c973>) from the current characteristics.

#### [` magic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader5magicE7PE_TYPE>)

inline void magic([PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE") magic)

#### [` major_linker_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader20major_linker_versionE7uint8_t>)

inline void major\_linker\_version(uint8\_t value)

#### [` minor_linker_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader20minor_linker_versionE7uint8_t>)

inline void minor\_linker\_version(uint8\_t value)

#### [` sizeof_code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader11sizeof_codeE8uint32_t>)

inline void sizeof\_code(uint32\_t value)

#### [` sizeof_initialized_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader23sizeof_initialized_dataE8uint32_t>)

inline void sizeof\_initialized\_data(uint32\_t value)

#### [` sizeof_uninitialized_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader25sizeof_uninitialized_dataE8uint32_t>)

inline void sizeof\_uninitialized\_data(uint32\_t value)

#### [` addressof_entrypoint `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader20addressof_entrypointE8uint32_t>)

inline void addressof\_entrypoint(uint32\_t value)

#### [` baseof_code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader11baseof_codeE8uint32_t>)

inline void baseof\_code(uint32\_t value)

#### [` baseof_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader11baseof_dataE8uint32_t>)

inline void baseof\_data(uint32\_t value)

#### [` imagebase `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9imagebaseE8uint64_t>)

inline void imagebase(uint64\_t value)

#### [` section_alignment `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader17section_alignmentE8uint32_t>)

inline void section\_alignment(uint32\_t value)

#### [` file_alignment `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader14file_alignmentE8uint32_t>)

inline void file\_alignment(uint32\_t value)

#### [` major_operating_system_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader30major_operating_system_versionE8uint16_t>)

inline void major\_operating\_system\_version(uint16\_t value)

#### [` minor_operating_system_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader30minor_operating_system_versionE8uint16_t>)

inline void minor\_operating\_system\_version(uint16\_t value)

#### [` major_image_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19major_image_versionE8uint16_t>)

inline void major\_image\_version(uint16\_t value)

#### [` minor_image_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19minor_image_versionE8uint16_t>)

inline void minor\_image\_version(uint16\_t value)

#### [` major_subsystem_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader23major_subsystem_versionE8uint16_t>)

inline void major\_subsystem\_version(uint16\_t value)

#### [` minor_subsystem_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader23minor_subsystem_versionE8uint16_t>)

inline void minor\_subsystem\_version(uint16\_t value)

#### [` win32_version_value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19win32_version_valueE8uint32_t>)

inline void win32\_version\_value(uint32\_t value)

#### [` sizeof_image `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader12sizeof_imageE8uint32_t>)

inline void sizeof\_image(uint32\_t value)

#### [` sizeof_headers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader14sizeof_headersE8uint32_t>)

inline void sizeof\_headers(uint32\_t value)

#### [` checksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader8checksumE8uint32_t>)

inline void checksum(uint32\_t value)

#### [` subsystem `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9subsystemE9SUBSYSTEM>)

inline void subsystem([SUBSYSTEM](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader9SUBSYSTEME> "LIEF::PE::OptionalHeader::SUBSYSTEM") value)

#### [` dll_characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19dll_characteristicsE8uint32_t>)

inline void dll\_characteristics(uint32\_t value)

#### [` sizeof_stack_reserve `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader20sizeof_stack_reserveE8uint64_t>)

inline void sizeof\_stack\_reserve(uint64\_t value)

#### [` sizeof_stack_commit `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19sizeof_stack_commitE8uint64_t>)

inline void sizeof\_stack\_commit(uint64\_t value)

#### [` sizeof_heap_reserve `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19sizeof_heap_reserveE8uint64_t>)

inline void sizeof\_heap\_reserve(uint64\_t value)

#### [` sizeof_heap_commit `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader18sizeof_heap_commitE8uint64_t>)

inline void sizeof\_heap\_commit(uint64\_t value)

#### [` loader_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader12loader_flagsE8uint32_t>)

inline void loader\_flags(uint32\_t value)

#### [` numberof_rva_and_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader21numberof_rva_and_sizeE8uint32_t>)

inline void numberof\_rva\_and\_size(uint32\_t value)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14OptionalHeader6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` operator+= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderpLE19DLL_CHARACTERISTICS>)

inline [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderE> "LIEF::PE::OptionalHeader") &amp;operator+=([DLL\_CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICSE> "LIEF::PE::OptionalHeader::DLL_CHARACTERISTICS") c)

#### [` operator-= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeadermIE19DLL_CHARACTERISTICS>)

inline [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderE> "LIEF::PE::OptionalHeader") &amp;operator-=([DLL\_CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader19DLL_CHARACTERISTICSE> "LIEF::PE::OptionalHeader::DLL_CHARACTERISTICS") c)

Public Static Functions

#### [` create `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeader6createE7PE_TYPE>)

static [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderE> "LIEF::PE::OptionalHeader") create([PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE") type)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderlsERNSt7ostreamERK14OptionalHeader>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderE> "LIEF::PE::OptionalHeader") &amp;entry)

---

## [Data Directory](<https://lief.re/doc/latest/formats/pe/cpp.html#data-directory>)

### [` DataDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE>)

class DataDirectory : public LIEF::Object

Class that represents a PE data directory entry.

Public Types

#### [` TYPES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPESE>)

enum class TYPES : uint32\_t

*Values:*

##### [` EXPORT_TABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES12EXPORT_TABLEE>)

enumerator EXPORT\_TABLE = 0

##### [` IMPORT_TABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES12IMPORT_TABLEE>)

enumerator IMPORT\_TABLE

##### [` RESOURCE_TABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES14RESOURCE_TABLEE>)

enumerator RESOURCE\_TABLE

##### [` EXCEPTION_TABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES15EXCEPTION_TABLEE>)

enumerator EXCEPTION\_TABLE

##### [` CERTIFICATE_TABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES17CERTIFICATE_TABLEE>)

enumerator CERTIFICATE\_TABLE

##### [` BASE_RELOCATION_TABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES21BASE_RELOCATION_TABLEE>)

enumerator BASE\_RELOCATION\_TABLE

##### [` DEBUG_DIR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES9DEBUG_DIRE>)

enumerator DEBUG\_DIR

##### [` ARCHITECTURE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES12ARCHITECTUREE>)

enumerator ARCHITECTURE

##### [` GLOBAL_PTR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES10GLOBAL_PTRE>)

enumerator GLOBAL\_PTR

##### [` TLS_TABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES9TLS_TABLEE>)

enumerator TLS\_TABLE

##### [` LOAD_CONFIG_TABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES17LOAD_CONFIG_TABLEE>)

enumerator LOAD\_CONFIG\_TABLE

##### [` BOUND_IMPORT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES12BOUND_IMPORTE>)

enumerator BOUND\_IMPORT

##### [` IAT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES3IATE>)

enumerator IAT

##### [` DELAY_IMPORT_DESCRIPTOR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES23DELAY_IMPORT_DESCRIPTORE>)

enumerator DELAY\_IMPORT\_DESCRIPTOR

##### [` CLR_RUNTIME_HEADER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES18CLR_RUNTIME_HEADERE>)

enumerator CLR\_RUNTIME\_HEADER

##### [` RESERVED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES8RESERVEDE>)

enumerator RESERVED

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPES7UNKNOWNE>)

enumerator UNKNOWN

Public Functions

#### [` DataDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory13DataDirectoryEv>)

DataDirectory() = default

#### [` DataDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory13DataDirectoryE5TYPES>)

inline DataDirectory([TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPESE> "LIEF::PE::DataDirectory::TYPES") type)

#### [` DataDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory13DataDirectoryERKN7details17pe_data_directoryE5TYPES>)

DataDirectory(const details::pe\_data\_directory &amp;header, [TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPESE> "LIEF::PE::DataDirectory::TYPES") type)

#### [` DataDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory13DataDirectoryERK13DataDirectory>)

DataDirectory(const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory13DataDirectoryERK13DataDirectory> "LIEF::PE::DataDirectory::DataDirectory") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryaSERK13DataDirectory>)

[DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") &amp;operator=(const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") &amp;other) = default

#### [` DataDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory13DataDirectoryERR13DataDirectory>)

DataDirectory([DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory13DataDirectoryERR13DataDirectory> "LIEF::PE::DataDirectory::DataDirectory") &amp;&amp;other) noexcept = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryaSERR13DataDirectory>)

[DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") &amp;operator=([DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") &amp;&amp;other) noexcept = default

#### [` ~DataDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryD0Ev>)

~DataDirectory() override = default

#### [` RVA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13DataDirectory3RVAEv>)

inline uint32\_t RVA() const

The relative virtual address of the content of this data directory.

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13DataDirectory4sizeEv>)

inline uint32\_t size() const

The size of the content.

#### [` has_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13DataDirectory11has_sectionEv>)

inline bool has\_section() const

Check if the content of this data directory is associated with a PE [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>).

#### [` content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13DataDirectory7contentEv>)

inline span&lt;const uint8\_t&gt; content() const

Raw content (bytes) referenced by this data directory.

#### [` content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory7contentEv>)

span&lt;uint8\_t&gt; content()

#### [` section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory7sectionEv>)

inline [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section()

[Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>) associated with the [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory>).

#### [` section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13DataDirectory7sectionEv>)

inline const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section() const

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13DataDirectory4typeEv>)

inline [TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory5TYPESE> "LIEF::PE::DataDirectory::TYPES") type() const

Type of the data directory.

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory4sizeE8uint32_t>)

inline void size(uint32\_t size)

#### [` RVA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory3RVAE8uint32_t>)

inline void RVA(uint32\_t rva)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13DataDirectory6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Attributes

#### [` DEFAULT_NB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectory10DEFAULT_NBE>)

static size\_t DEFAULT\_NB = 16

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectorylsERNSt7ostreamERK13DataDirectory>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") &amp;entry)

---

## [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#section>)

### [` Section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE>)

class Section : public LIEF::[Section](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF7SectionE> "LIEF::Section")

Class which represents a PE section.

Public Types

#### [` CHARACTERISTICS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICSE>)

enum class CHARACTERISTICS : uint64\_t

*Values:*

##### [` TYPE_NO_PAD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS11TYPE_NO_PADE>)

enumerator TYPE\_NO\_PAD = 0x00000008

##### [` CNT_CODE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS8CNT_CODEE>)

enumerator CNT\_CODE = 0x00000020

##### [` CNT_INITIALIZED_DATA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS20CNT_INITIALIZED_DATAE>)

enumerator CNT\_INITIALIZED\_DATA = 0x00000040

##### [` CNT_UNINITIALIZED_DATA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS22CNT_UNINITIALIZED_DATAE>)

enumerator CNT\_UNINITIALIZED\_DATA = 0x00000080

##### [` LNK_OTHER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS9LNK_OTHERE>)

enumerator LNK\_OTHER = 0x00000100

##### [` LNK_INFO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS8LNK_INFOE>)

enumerator LNK\_INFO = 0x00000200

##### [` LNK_REMOVE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS10LNK_REMOVEE>)

enumerator LNK\_REMOVE = 0x00000800

##### [` LNK_COMDAT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS10LNK_COMDATE>)

enumerator LNK\_COMDAT = 0x00001000

##### [` GPREL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS5GPRELE>)

enumerator GPREL = 0x00008000

##### [` MEM_PURGEABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS13MEM_PURGEABLEE>)

enumerator MEM\_PURGEABLE = 0x00010000

##### [` MEM_16BIT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS9MEM_16BITE>)

enumerator MEM\_16BIT = 0x00020000

##### [` MEM_LOCKED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS10MEM_LOCKEDE>)

enumerator MEM\_LOCKED = 0x00040000

##### [` MEM_PRELOAD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS11MEM_PRELOADE>)

enumerator MEM\_PRELOAD = 0x00080000

##### [` ALIGN_1BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS12ALIGN_1BYTESE>)

enumerator ALIGN\_1BYTES = 0x00100000

##### [` ALIGN_2BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS12ALIGN_2BYTESE>)

enumerator ALIGN\_2BYTES = 0x00200000

##### [` ALIGN_4BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS12ALIGN_4BYTESE>)

enumerator ALIGN\_4BYTES = 0x00300000

##### [` ALIGN_8BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS12ALIGN_8BYTESE>)

enumerator ALIGN\_8BYTES = 0x00400000

##### [` ALIGN_16BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS13ALIGN_16BYTESE>)

enumerator ALIGN\_16BYTES = 0x00500000

##### [` ALIGN_32BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS13ALIGN_32BYTESE>)

enumerator ALIGN\_32BYTES = 0x00600000

##### [` ALIGN_64BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS13ALIGN_64BYTESE>)

enumerator ALIGN\_64BYTES = 0x00700000

##### [` ALIGN_128BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS14ALIGN_128BYTESE>)

enumerator ALIGN\_128BYTES = 0x00800000

##### [` ALIGN_256BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS14ALIGN_256BYTESE>)

enumerator ALIGN\_256BYTES = 0x00900000

##### [` ALIGN_512BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS14ALIGN_512BYTESE>)

enumerator ALIGN\_512BYTES = 0x00A00000

##### [` ALIGN_1024BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS15ALIGN_1024BYTESE>)

enumerator ALIGN\_1024BYTES = 0x00B00000

##### [` ALIGN_2048BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS15ALIGN_2048BYTESE>)

enumerator ALIGN\_2048BYTES = 0x00C00000

##### [` ALIGN_4096BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS15ALIGN_4096BYTESE>)

enumerator ALIGN\_4096BYTES = 0x00D00000

##### [` ALIGN_8192BYTES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS15ALIGN_8192BYTESE>)

enumerator ALIGN\_8192BYTES = 0x00E00000

##### [` LNK_NRELOC_OVFL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS15LNK_NRELOC_OVFLE>)

enumerator LNK\_NRELOC\_OVFL = 0x01000000

##### [` MEM_DISCARDABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS15MEM_DISCARDABLEE>)

enumerator MEM\_DISCARDABLE = 0x02000000

##### [` MEM_NOT_CACHED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS14MEM_NOT_CACHEDE>)

enumerator MEM\_NOT\_CACHED = 0x04000000

##### [` MEM_NOT_PAGED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS13MEM_NOT_PAGEDE>)

enumerator MEM\_NOT\_PAGED = 0x08000000

##### [` MEM_SHARED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS10MEM_SHAREDE>)

enumerator MEM\_SHARED = 0x10000000

##### [` MEM_EXECUTE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS11MEM_EXECUTEE>)

enumerator MEM\_EXECUTE = 0x20000000

##### [` MEM_READ `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS8MEM_READE>)

enumerator MEM\_READ = 0x40000000

##### [` MEM_WRITE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICS9MEM_WRITEE>)

enumerator MEM\_WRITE = 0x80000000

Public Functions

#### [` Section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section7SectionERKN7details10pe_sectionE>)

Section(const details::pe\_section &amp;header)

#### [` Section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section7SectionEv>)

Section() = default

#### [` Section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section7SectionENSt6stringE>)

inline Section(std::string name)

#### [` Section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section7SectionENSt6stringENSt6vectorI7uint8_tEE>)

inline Section(std::string name, std::vector&lt;uint8\_t&gt; content)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionaSERK7Section>)

[Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") &amp;operator=(const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section")&amp;) = default

#### [` Section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section7SectionERK7Section>)

Section(const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section7SectionERK7Section> "LIEF::PE::Section::Section")&amp;) = default

#### [` ~Section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionD0Ev>)

~Section() override = default

#### [` sizeof_raw_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section15sizeof_raw_dataEv>)

uint32\_t sizeof\_raw\_data() const

Return the size of the data in the section.

#### [` virtual_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section12virtual_sizeEv>)

inline uint32\_t virtual\_size() const

Return the size of the data when mapped in memory.

If this value is greater than sizeof\_raw\_data, the section is zero-padded.

#### [` content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section7contentEv>)

inline virtual span&lt;const uint8\_t&gt; content() const override

The actual content of the section.

#### [` padding `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section7paddingEv>)

inline span&lt;const uint8\_t&gt; padding() const

Content of the section’s padding area.

#### [` pointerto_raw_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section18pointerto_raw_dataEv>)

uint32\_t pointerto\_raw\_data() const

The offset of the section data in the PE file.

#### [` pointerto_relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section20pointerto_relocationEv>)

inline uint32\_t pointerto\_relocation() const

The file pointer to the beginning of the COFF relocation entries for the section. This is set to zero for executable images or if there are no relocations.

For modern PE binaries, this value is usually set to 0 as the relocations are managed by [PE::Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation>).

#### [` pointerto_line_numbers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section22pointerto_line_numbersEv>)

inline uint32\_t pointerto\_line\_numbers() const

The file pointer to the beginning of line-number entries for the section. This is set to zero if there are no COFF line numbers. This value should be zero for an image because COFF debugging information is deprecated and modern debug information relies on the PDB files.

#### [` numberof_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section20numberof_relocationsEv>)

inline uint16\_t numberof\_relocations() const

No longer used in recent PE binaries produced by Visual Studio.

#### [` numberof_line_numbers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section21numberof_line_numbersEv>)

inline uint16\_t numberof\_line\_numbers() const

No longer used in recent PE binaries produced by Visual Studio.

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section15characteristicsEv>)

inline uint32\_t characteristics() const

Characteristics of the section: it provides information about the permissions of the section when mapped. It can also provide information about the *purpose* of the section (contain code, BSS-like, …).

#### [` has_characteristic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section18has_characteristicE15CHARACTERISTICS>)

inline bool has\_characteristic([CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICSE> "LIEF::PE::Section::CHARACTERISTICS") c) const

Check if the section has the given [CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section_1a802580e157009845c3859c02554bc6be>).

#### [` characteristics_list `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section20characteristics_listEv>)

inline std::vector&lt;[CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICSE> "LIEF::PE::Section::CHARACTERISTICS")&gt; characteristics\_list() const

List of the section characteristics.

#### [` is_discardable `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section14is_discardableEv>)

inline bool is\_discardable() const

True if the section can be discarded as needed.

This is typically the case for debug-related sections

#### [` clear `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section5clearE7uint8_t>)

void clear(uint8\_t c)

Fill the content of the section with the given `char`.

#### [` content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section7contentERKNSt6vectorI7uint8_tEE>)

virtual void content(const std::vector&lt;uint8\_t&gt; &amp;data) override

Change section content.

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section4nameENSt6stringE>)

virtual void name(std::string name) override

Change the section’s name.

#### [` virtual_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section12virtual_sizeE8uint32_t>)

inline void virtual\_size(uint32\_t virtual\_sz)

#### [` pointerto_raw_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section18pointerto_raw_dataE8uint32_t>)

inline void pointerto\_raw\_data(uint32\_t ptr)

#### [` pointerto_relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section20pointerto_relocationE8uint32_t>)

inline void pointerto\_relocation(uint32\_t ptr)

#### [` pointerto_line_numbers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section22pointerto_line_numbersE8uint32_t>)

inline void pointerto\_line\_numbers(uint32\_t ptr)

#### [` numberof_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section20numberof_relocationsE8uint16_t>)

inline void numberof\_relocations(uint16\_t nb)

#### [` numberof_line_numbers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section21numberof_line_numbersE8uint16_t>)

inline void numberof\_line\_numbers(uint16\_t nb)

#### [` sizeof_raw_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15sizeof_raw_dataE8uint32_t>)

inline void sizeof\_raw\_data(uint32\_t size)

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15characteristicsE8uint32_t>)

inline void characteristics(uint32\_t characteristics)

#### [` coff_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section11coff_stringEv>)

inline COFF::[String](<https://lief.re/doc/latest/formats/coff/cpp.html#_CPPv4N4LIEF4COFF6StringE> "LIEF::COFF::String") \*coff\_string()

Return the COFF string associated with the section’s name (or a nullptr).

This coff string is usually present for long section names whose length does not fit in the 8 bytes allocated by the PE format.

#### [` coff_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section11coff_stringEv>)

inline const COFF::[String](<https://lief.re/doc/latest/formats/coff/cpp.html#_CPPv4N4LIEF4COFF6StringE> "LIEF::COFF::String") \*coff\_string() const

#### [` remove_characteristic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section21remove_characteristicE15CHARACTERISTICS>)

inline [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") &amp;remove\_characteristic([CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICSE> "LIEF::PE::Section::CHARACTERISTICS") characteristic)

#### [` add_characteristic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section18add_characteristicE15CHARACTERISTICS>)

inline [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") &amp;add\_characteristic([CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICSE> "LIEF::PE::Section::CHARACTERISTICS") characteristic)

#### [` stream `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section6streamEv>)

std::unique\_ptr&lt;[SpanStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF10SpanStreamE> "LIEF::SpanStream")&gt; stream() const

#### [` writable_content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section16writable_contentEv>)

inline span&lt;uint8\_t&gt; writable\_content()

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Section4nameEv>)

inline virtual std::string\_view name() const

[Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>)’s name.

Public Static Functions

#### [` characteristics_to_list `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section23characteristics_to_listE8uint32_t>)

static std::vector&lt;[CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section15CHARACTERISTICSE> "LIEF::PE::Section::CHARACTERISTICS")&gt; characteristics\_to\_list(uint32\_t value)

Public Static Attributes

#### [` MAX_SECTION_NAME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Section16MAX_SECTION_NAMEE>)

static size\_t MAX\_SECTION\_NAME = 8

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionlsERNSt7ostreamERK7Section>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") &amp;section)

---

## [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#import>)

### [` Import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE>)

class Import : public LIEF::Object

Class that represents a PE import.

Public Types

#### [` entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import9entries_tE>)

using entries\_t = std::vector&lt;std::unique\_ptr&lt;[ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry")&gt;&gt;

#### [` it_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import10it_entriesE>)

using it\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import9entries_tE> "LIEF::PE::Import::entries_t")&amp;, [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry")\*&gt;

#### [` it_const_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import16it_const_entriesE>)

using it\_const\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import9entries_tE> "LIEF::PE::Import::entries_t")&amp;, const [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry")\*&gt;

Public Functions

#### [` Import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import6ImportERKN7details9pe_importE>)

Import(const details::pe\_import &amp;import)

#### [` Import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import6ImportENSt6stringE>)

inline Import(std::string name)

#### [` Import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import6ImportEv>)

Import() = default

#### [` ~Import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportD0Ev>)

~Import() override = default

#### [` Import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import6ImportERK6Import>)

Import(const [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import6ImportERK6Import> "LIEF::PE::Import::Import") &amp;other)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportaSERK6Import>)

[Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import") &amp;operator=(const [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import") &amp;other)

#### [` Import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import6ImportERR6Import>)

Import([Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import6ImportERR6Import> "LIEF::PE::Import::Import") &amp;&amp;other) noexcept = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportaSERR6Import>)

[Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import") &amp;operator=([Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import") &amp;&amp;other) noexcept = default

#### [` forwarder_chain `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import15forwarder_chainEv>)

inline uint32\_t forwarder\_chain() const

The index of the first forwarder reference.

#### [` timedatestamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import13timedatestampEv>)

inline uint32\_t timedatestamp() const

The stamp that is set to zero until the image is bound. After the image is bound, this field is set to the time/data stamp of the DLL.

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import7entriesEv>)

inline [it\_const\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import16it_const_entriesE> "LIEF::PE::Import::it_const_entries") entries() const

Iterator over the [PE::ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ImportEntry>).

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import7entriesEv>)

inline [it\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import10it_entriesE> "LIEF::PE::Import::it_entries") entries()

#### [` import_address_table_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import24import_address_table_rvaEv>)

inline uint32\_t import\_address\_table\_rva() const

The RVA of the import address table (`IAT`). The content of this table is **identical** to the content of the [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>) Lookup Table (`ILT`) until the image is bound.

> **Warning**
> 
> This address could change when re-building the binary

#### [` import_lookup_table_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import23import_lookup_table_rvaEv>)

inline uint32\_t import\_lookup\_table\_rva() const

Return the relative virtual address of the import lookup table.

> **Warning**
> 
> This address could change when re-building the binary

#### [` get_function_rva_from_iat `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import25get_function_rva_from_iatERKNSt6stringE>)

[result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;uint32\_t&gt; get\_function\_rva\_from\_iat(const std::string &amp;function) const

Return the [Function](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Function>)’s RVA from the import address table (`IAT`).

> **Warning**
> 
> This address could change when re-building the binary

#### [` get_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import9get_entryERKNSt6stringE>)

inline [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry") \*get\_entry(const std::string &amp;name)

Return the imported function with the given name.

#### [` get_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import9get_entryERKNSt6stringE>)

const [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry") \*get\_entry(const std::string &amp;name) const

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import4nameEv>)

inline std::string\_view name() const

Return the library’s name (e.g. `kernel32.dll`).

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import4nameENSt6stringE>)

inline void name(std::string name)

Change the current import name.

#### [` name_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import8name_rvaEv>)

inline uint32\_t name\_rva() const

The original name rva.

#### [` directory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import9directoryEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*directory()

Return the [PE::DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory>) associated with this import. It should be the one at index [PE::DataDirectory::TYPES::IMPORT\_TABLE](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory_1abc50978a5afaff445650cf12221fe879af2d38be552c367cab91be62244d8c893>).

If the data directory can’t be found, return a nullptr

#### [` directory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import9directoryEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*directory() const

#### [` iat_directory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import13iat_directoryEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*iat\_directory()

Return the [PE::DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory>) associated with the IAT. It should be the one at index [PE::DataDirectory::TYPES::IAT](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory_1abc50978a5afaff445650cf12221fe879a9892ccb477f873508da0ee532ddbd6fa>).

If the data directory can’t be found, return a nullptr

#### [` iat_directory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import13iat_directoryEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*iat\_directory() const

#### [` add_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import9add_entryERK11ImportEntry>)

inline [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry") &amp;add\_entry(const [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry") &amp;entry)

Add a new import entry (i.e. an imported function).

#### [` add_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import9add_entryERKNSt6stringE>)

inline [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry") &amp;add\_entry(const std::string &amp;name)

Add a new import entry with the given name (i.e. an imported function).

#### [` remove_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import12remove_entryERKNSt6stringE>)

bool remove\_entry(const std::string &amp;name)

Remove the import entry with the given name.

Return true if the deletion succeeded, false otherwise

#### [` remove_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import12remove_entryE8uint32_t>)

bool remove\_entry(uint32\_t ordinal)

Remove the import entry with the given ordinal number.

Return true if the deletion succeeded, false otherwise

#### [` import_lookup_table_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import23import_lookup_table_rvaE8uint32_t>)

inline void import\_lookup\_table\_rva(uint32\_t rva)

#### [` import_address_table_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Import24import_address_table_rvaE8uint32_t>)

inline void import\_address\_table\_rva(uint32\_t rva)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Import6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportlsERNSt7ostreamERK6Import>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import") &amp;entry)

---

## [Import Entry](<https://lief.re/doc/latest/formats/pe/cpp.html#import-entry>)

### [` ImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE>)

class ImportEntry : public LIEF::[Symbol](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6SymbolE> "LIEF::Symbol")

Class that represents an entry (i.e. an import) in the import table ([Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>)).

It extends the [LIEF::Symbol](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol>) generic class that exposes the [LIEF::Symbol::name](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol_1a9ebe8d24f1ba703e491c276944d7f443>) and [LIEF::Symbol::value](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol_1a11068d424dc1255b02cc047e99ad4b60>) API

Public Functions

#### [` ImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntry11ImportEntryEv>)

ImportEntry() = default

#### [` ImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntry11ImportEntryE8uint64_t7PE_TYPE>)

inline ImportEntry(uint64\_t data, [PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE") type)

#### [` ImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntry11ImportEntryENSt6stringE>)

inline ImportEntry(std::string name)

#### [` ImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntry11ImportEntryERK11ImportEntry>)

ImportEntry(const [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntry11ImportEntryERK11ImportEntry> "LIEF::PE::ImportEntry::ImportEntry")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryaSERK11ImportEntry>)

[ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry") &amp;operator=(const [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry")&amp;) = default

#### [` ~ImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryD0Ev>)

~ImportEntry() override = default

#### [` demangled_name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ImportEntry14demangled_nameEv>)

std::string demangled\_name() const

Demangled representation of the symbol or an empty string if it can’t be demangled.

#### [` is_ordinal `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ImportEntry10is_ordinalEv>)

bool is\_ordinal() const

`True` if it is an import by ordinal

#### [` ordinal `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ImportEntry7ordinalEv>)

inline uint16\_t ordinal() const

The ordinal value.

#### [` hint_name_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ImportEntry13hint_name_rvaEv>)

inline uint64\_t hint\_name\_rva() const

> **See also**
> 
> [ImportEntry::data](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ImportEntry_1a88aedb5277838d7fa628dfdfa4afc1b9>)

#### [` hint `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ImportEntry4hintEv>)

inline uint16\_t hint() const

Index into the [Export::entries](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Export_1ad5b6d01a2d68c0cecec5190671bed57c>) that is used to speed-up the symbol resolution.

#### [` iat_value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ImportEntry9iat_valueEv>)

inline uint64\_t iat\_value() const

Value of the current entry in the [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>) Address Table. It should match the lookup table value.

#### [` iat_value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntry9iat_valueE8uint64_t>)

inline void iat\_value(uint64\_t value)

#### [` ilt_value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ImportEntry9ilt_valueEv>)

inline uint64\_t ilt\_value() const

Original value in the import lookup table. This value should match the [iat\_value()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ImportEntry_1a6f3e81019c7809492d2d41decd0f514a>).

#### [` ilt_value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntry9ilt_valueE8uint64_t>)

inline void ilt\_value(uint64\_t value)

#### [` data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ImportEntry4dataEv>)

inline uint64\_t data() const

Raw value.

#### [` iat_address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ImportEntry11iat_addressEv>)

inline uint64\_t iat\_address() const

**Original** address of the entry in the [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>) Address Table

#### [` data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntry4dataE8uint64_t>)

inline void data(uint64\_t data)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ImportEntry6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntrylsERNSt7ostreamERK11ImportEntry>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry") &amp;entry)

---

## [Delay Import](<https://lief.re/doc/latest/formats/pe/cpp.html#delay-import>)

### [` DelayImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE>)

class DelayImport : public LIEF::Object

Class that represents a PE delayed import.

Public Types

#### [` entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport9entries_tE>)

using entries\_t = std::vector&lt;std::unique\_ptr&lt;[DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryE> "LIEF::PE::DelayImportEntry")&gt;&gt;

#### [` it_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport10it_entriesE>)

using it\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport9entries_tE> "LIEF::PE::DelayImport::entries_t")&amp;, [DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryE> "LIEF::PE::DelayImportEntry")\*&gt;

#### [` it_const_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport16it_const_entriesE>)

using it\_const\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport9entries_tE> "LIEF::PE::DelayImport::entries_t")&amp;, const [DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryE> "LIEF::PE::DelayImportEntry")\*&gt;

Public Functions

#### [` DelayImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport11DelayImportEv>)

DelayImport() = default

#### [` DelayImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport11DelayImportERKN7details13delay_importsE7PE_TYPE>)

DelayImport(const details::delay\_imports &amp;import, [PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE") type)

#### [` DelayImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport11DelayImportENSt6stringE>)

inline DelayImport(std::string name)

#### [` ~DelayImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportD0Ev>)

~DelayImport() override = default

#### [` DelayImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport11DelayImportERK11DelayImport>)

DelayImport(const [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport11DelayImportERK11DelayImport> "LIEF::PE::DelayImport::DelayImport") &amp;other)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportaSE11DelayImport>)

inline [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport") &amp;operator=([DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport") other)

#### [` DelayImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport11DelayImportERR11DelayImport>)

DelayImport([DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport11DelayImportERR11DelayImport> "LIEF::PE::DelayImport::DelayImport")&amp;&amp;) noexcept = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportaSERR11DelayImport>)

[DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport") &amp;operator=([DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport")&amp;&amp;) noexcept = default

#### [` swap `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport4swapER11DelayImport>)

void swap([DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport") &amp;other)

#### [` attribute `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11DelayImport9attributeEv>)

inline uint32\_t attribute() const

According to the official PE specifications, this value is reserved and should be set to 0.

#### [` attribute `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport9attributeE8uint32_t>)

inline void attribute(uint32\_t hdl)

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11DelayImport4nameEv>)

inline std::string\_view name() const

Return the library’s name (e.g. `kernel32.dll`).

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport4nameENSt6stringE>)

inline void name(std::string name)

#### [` handle `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11DelayImport6handleEv>)

inline uint32\_t handle() const

The RVA of the module handle (in the `.data` section) It is used for storage by the routine that is supplied to manage delay-loading.

#### [` handle `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport6handleE8uint32_t>)

inline void handle(uint32\_t hdl)

#### [` iat `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11DelayImport3iatEv>)

inline uint32\_t iat() const

RVA of the delay-load import address table.

#### [` iat `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport3iatE8uint32_t>)

inline void iat(uint32\_t iat)

#### [` names_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11DelayImport11names_tableEv>)

inline uint32\_t names\_table() const

RVA of the delay-load import names table. The content of this table has the layout as the [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>) lookup table.

#### [` names_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport11names_tableE8uint32_t>)

inline void names\_table(uint32\_t value)

#### [` biat `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11DelayImport4biatEv>)

inline uint32\_t biat() const

RVA of the **bound** delay-load import address table or 0 if the table does not exist.

#### [` biat `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport4biatE8uint32_t>)

inline void biat(uint32\_t value)

#### [` uiat `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11DelayImport4uiatEv>)

inline uint32\_t uiat() const

RVA of the **unload** delay-load import address table or 0 if the table does not exist.

According to the PE specifications, this table is an exact copy of the delay import address table that can be used to restore the original IAT in the case of unloading.

#### [` uiat `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport4uiatE8uint32_t>)

inline void uiat(uint32\_t value)

#### [` timestamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11DelayImport9timestampEv>)

inline uint32\_t timestamp() const

The timestamp of the DLL to which this image has been bound.

#### [` timestamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport9timestampE8uint32_t>)

inline void timestamp(uint32\_t value)

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport7entriesEv>)

inline [it\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport10it_entriesE> "LIEF::PE::DelayImport::it_entries") entries()

Iterator over the [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DelayImport>)’s entries ([DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DelayImportEntry>)).

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11DelayImport7entriesEv>)

inline [it\_const\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImport16it_const_entriesE> "LIEF::PE::DelayImport::it_const_entries") entries() const

Iterator over the [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DelayImport>)’s entries ([DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DelayImportEntry>)).

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11DelayImport6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportlsERNSt7ostreamERK11DelayImport>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11DelayImportE> "LIEF::PE::DelayImport") &amp;entry)

---

## [Delay Import Entry](<https://lief.re/doc/latest/formats/pe/cpp.html#delay-import-entry>)

### [` DelayImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryE>)

class DelayImportEntry : public LIEF::[Symbol](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6SymbolE> "LIEF::Symbol")

Class that represents an entry (i.e. an import) in the delay import table ([DelayImport](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DelayImport>)).

It extends the [LIEF::Symbol](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol>) generic class that exposes the [LIEF::Symbol::name](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol_1a9ebe8d24f1ba703e491c276944d7f443>) and [LIEF::Symbol::value](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol_1a11068d424dc1255b02cc047e99ad4b60>) API.

The meaning of [LIEF::Symbol::value](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol_1a11068d424dc1255b02cc047e99ad4b60>) for this PE object is the address (as an RVA) in the IAT where the resolution should take place.

Public Functions

#### [` DelayImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntry16DelayImportEntryEv>)

DelayImportEntry() = default

#### [` DelayImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntry16DelayImportEntryE8uint64_t7PE_TYPE>)

inline DelayImportEntry(uint64\_t data, [PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE") type)

#### [` DelayImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntry16DelayImportEntryERK16DelayImportEntry>)

DelayImportEntry(const [DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntry16DelayImportEntryERK16DelayImportEntry> "LIEF::PE::DelayImportEntry::DelayImportEntry")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryaSERK16DelayImportEntry>)

[DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryE> "LIEF::PE::DelayImportEntry") &amp;operator=(const [DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryE> "LIEF::PE::DelayImportEntry")&amp;) = default

#### [` DelayImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntry16DelayImportEntryERR16DelayImportEntry>)

DelayImportEntry([DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntry16DelayImportEntryERR16DelayImportEntry> "LIEF::PE::DelayImportEntry::DelayImportEntry")&amp;&amp;) noexcept = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryaSERR16DelayImportEntry>)

[DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryE> "LIEF::PE::DelayImportEntry") &amp;operator=([DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryE> "LIEF::PE::DelayImportEntry")&amp;&amp;) noexcept = default

#### [` ~DelayImportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryD0Ev>)

~DelayImportEntry() override = default

#### [` demangled_name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16DelayImportEntry14demangled_nameEv>)

std::string demangled\_name() const

Demangled representation of the symbol or an empty string if it can’t be demangled.

#### [` is_ordinal `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16DelayImportEntry10is_ordinalEv>)

bool is\_ordinal() const

`True` if it is an import by ordinal

#### [` ordinal `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16DelayImportEntry7ordinalEv>)

inline uint16\_t ordinal() const

The ordinal value.

#### [` hint_name_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16DelayImportEntry13hint_name_rvaEv>)

inline uint64\_t hint\_name\_rva() const

> **See also**
> 
> [DelayImportEntry::data](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DelayImportEntry_1ae8a1fe26db786f665c2b0a8f5f2c627c>)

#### [` hint `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16DelayImportEntry4hintEv>)

inline uint16\_t hint() const

Index into the [Export::entries](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Export_1ad5b6d01a2d68c0cecec5190671bed57c>) that is used to speed-up the symbol resolution.

#### [` iat_value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16DelayImportEntry9iat_valueEv>)

inline uint64\_t iat\_value() const

Value of the current entry in the [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>) Address Table.

#### [` data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16DelayImportEntry4dataEv>)

inline uint64\_t data() const

Raw value.

#### [` data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntry4dataE8uint64_t>)

inline void data(uint64\_t data)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16DelayImportEntry6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntrylsERNSt7ostreamERK16DelayImportEntry>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [DelayImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16DelayImportEntryE> "LIEF::PE::DelayImportEntry") &amp;entry)

---

## [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#tls>)

### [` TLS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE>)

class TLS : public LIEF::Object

Class which represents the PE Thread Local Storage.

This PE structure is also used to implement binary/library constructors.

Public Functions

#### [` TLS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS3TLSEv>)

TLS() = default

#### [` TLS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS3TLSERKN7details8pe32_tlsE>)

TLS(const details::pe32\_tls &amp;header)

#### [` TLS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS3TLSERKN7details8pe64_tlsE>)

TLS(const details::pe64\_tls &amp;header)

#### [` ~TLS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSD0Ev>)

~TLS() override = default

#### [` TLS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS3TLSERK3TLS>)

TLS(const [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS3TLSERK3TLS> "LIEF::PE::TLS::TLS") &amp;copy) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSaSERK3TLS>)

[TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE> "LIEF::PE::TLS") &amp;operator=(const [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE> "LIEF::PE::TLS") &amp;copy) = default

#### [` TLS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS3TLSERR3TLS>)

TLS([TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS3TLSERR3TLS> "LIEF::PE::TLS::TLS") &amp;&amp;other) noexcept = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSaSERR3TLS>)

[TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE> "LIEF::PE::TLS") &amp;operator=([TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE> "LIEF::PE::TLS") &amp;&amp;other) noexcept = default

#### [` callbacks `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS9callbacksEv>)

inline const std::vector&lt;uint64\_t&gt; &amp;callbacks() const

List of the callbacks associated with the current [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>).

These functions are called before any other functions.

#### [` add_callback `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS12add_callbackE8uint64_t>)

inline [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE> "LIEF::PE::TLS") &amp;add\_callback(uint64\_t addr)

Add a new [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) callback.

#### [` addressof_raw_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS18addressof_raw_dataEv>)

inline const std::pair&lt;uint64\_t, uint64\_t&gt; &amp;addressof\_raw\_data() const

Pair `(start address, end address)` of the [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) template. The template is a block of data that is used to initialize [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) data. The system copies all of this data each time a thread is created, so it must not be corrupted.

> **Note**
> 
> These addresses are not RVA. They are addresses for which there should be a rebase relocation in the `.reloc` section.

#### [` addressof_index `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS15addressof_indexEv>)

inline uint64\_t addressof\_index() const

The location to receive the [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) index assigned by the loader. This location should be located in a writable section like `.data`.

#### [` addressof_callbacks `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS19addressof_callbacksEv>)

inline uint64\_t addressof\_callbacks() const

Pointer to an array of [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) callback functions.

The array is null-terminated, so if there is no callback function this field points to **4 bytes** set to zero.

#### [` sizeof_zero_fill `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS16sizeof_zero_fillEv>)

inline uint32\_t sizeof\_zero\_fill() const

Size in bytes of the zero to be *padded* after the data specified by data\_template.

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS15characteristicsEv>)

inline uint32\_t characteristics() const

The four bits [23:20] describe alignment info. Possible values are those defined as `IMAGE_SCN_ALIGN_*`, which are also used to describe alignment of section in object files. The other 28 bits are reserved for future use.

#### [` data_template `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS13data_templateEv>)

inline span&lt;const uint8\_t&gt; data\_template() const

The initial content used to initialize [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) data.

#### [` has_data_directory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS18has_data_directoryEv>)

inline bool has\_data\_directory() const

True if there is a data directory associated with this entry.

#### [` directory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS9directoryEv>)

inline [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*directory()

Return the [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory>) associated with this object or a nullptr If it exists, its type should be [DataDirectory::TYPES::TLS\_TABLE](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory_1abc50978a5afaff445650cf12221fe879af5141e221c4eeef5a20d421eebcfefa0>).

#### [` directory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS9directoryEv>)

inline const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") \*directory() const

#### [` has_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS11has_sectionEv>)

inline bool has\_section() const

Check if there is a section associated with this entry.

#### [` section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS7sectionEv>)

inline [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section()

The section associated with the entry (or a nullptr).

#### [` section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS7sectionEv>)

inline const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section() const

#### [` callbacks `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS9callbacksENSt6vectorI8uint64_tEE>)

inline void callbacks(std::vector&lt;uint64\_t&gt; callbacks)

#### [` addressof_raw_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS18addressof_raw_dataENSt4pairI8uint64_t8uint64_tEE>)

inline void addressof\_raw\_data(std::pair&lt;uint64\_t, uint64\_t&gt; addresses)

#### [` addressof_index `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS15addressof_indexE8uint64_t>)

inline void addressof\_index(uint64\_t addr\_idx)

#### [` addressof_callbacks `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS19addressof_callbacksE8uint64_t>)

inline void addressof\_callbacks(uint64\_t addr)

#### [` sizeof_zero_fill `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS16sizeof_zero_fillE8uint32_t>)

inline void sizeof\_zero\_fill(uint32\_t size)

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS15characteristicsE8uint32_t>)

inline void characteristics(uint32\_t characteristics)

#### [` data_template `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLS13data_templateENSt6vectorI7uint8_tEE>)

inline void data\_template(std::vector&lt;uint8\_t&gt; data\_template)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3TLS6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSlsERNSt7ostreamERK3TLS>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3TLSE> "LIEF::PE::TLS") &amp;entry)

---

## [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#debug>)

### [` Debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE>)

class Debug : public LIEF::Object

This class represents a generic entry in the debug data directory. For known types, this class is extended to provide a dedicated API (see: [CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1CodeView>)).

Subclassed by [LIEF::PE::CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1CodeView>), [LIEF::PE::ExDllCharacteristics](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ExDllCharacteristics>), [LIEF::PE::FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1FPO>), [LIEF::PE::PDBChecksum](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1PDBChecksum>), [LIEF::PE::Pogo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Pogo>), [LIEF::PE::Repro](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Repro>), [LIEF::PE::VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1VCFeature>)

Public Types

#### [` TYPES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPESE>)

enum class TYPES

The entry types.

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES7UNKNOWNE>)

enumerator UNKNOWN = 0

##### [` COFF `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES4COFFE>)

enumerator COFF = 1

COFF [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Debug>) information.

##### [` CODEVIEW `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES8CODEVIEWE>)

enumerator CODEVIEW = 2

[CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1CodeView>) debug information that is used to store PDB info.

##### [` FPO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES3FPOE>)

enumerator FPO = 3

Frame pointer omission information.

##### [` MISC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES4MISCE>)

enumerator MISC = 4

Miscellaneous debug information.

##### [` EXCEPTION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES9EXCEPTIONE>)

enumerator EXCEPTION = 5

[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Debug>) information that is a *copy* of the `.pdata` section.

##### [` FIXUP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES5FIXUPE>)

enumerator FIXUP = 6

(Reserved) [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Debug>) information used for fixup relocations

##### [` OMAP_TO_SRC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES11OMAP_TO_SRCE>)

enumerator OMAP\_TO\_SRC = 7

The mapping from an RVA in image to an RVA in source image.

##### [` OMAP_FROM_SRC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES13OMAP_FROM_SRCE>)

enumerator OMAP\_FROM\_SRC = 8

The mapping from an RVA in source image to an RVA in image.

##### [` BORLAND `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES7BORLANDE>)

enumerator BORLAND = 9

Reserved for Borland.

##### [` RESERVED10 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES10RESERVED10E>)

enumerator RESERVED10 = 10

Reserved.

##### [` CLSID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES5CLSIDE>)

enumerator CLSID = 11

Reserved.

##### [` VC_FEATURE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES10VC_FEATUREE>)

enumerator VC\_FEATURE = 12

Visual C++ feature information.

##### [` POGO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES4POGOE>)

enumerator POGO = 13

Profile Guided Optimization metadata.

##### [` ILTCG `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES5ILTCGE>)

enumerator ILTCG = 14

Incremental Link Time Code Generation metadata.

##### [` MPX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES3MPXE>)

enumerator MPX = 15

##### [` REPRO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES5REPROE>)

enumerator REPRO = 16

PE determinism or reproducibility information.

##### [` PDBCHECKSUM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES11PDBCHECKSUME>)

enumerator PDBCHECKSUM = 19

Checksum of the PDB file.

##### [` EX_DLLCHARACTERISTICS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPES21EX_DLLCHARACTERISTICSE>)

enumerator EX\_DLLCHARACTERISTICS = 20

Extended DLL characteristics.

Public Functions

#### [` Debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5DebugEv>)

Debug() = default

#### [` Debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5DebugE5TYPES>)

inline Debug([TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPESE> "LIEF::PE::Debug::TYPES") type)

#### [` Debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5DebugERKN7details8pe_debugEP7Section>)

Debug(const details::pe\_debug &amp;debug\_s, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section)

#### [` Debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5DebugERK5Debug>)

Debug(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5DebugERK5Debug> "LIEF::PE::Debug::Debug") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugaSERK5Debug>)

[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") &amp;operator=(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") &amp;other) = default

#### [` Debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5DebugERR5Debug>)

Debug([Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5DebugERR5Debug> "LIEF::PE::Debug::Debug")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugaSERR5Debug>)

[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") &amp;operator=([Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&amp;&amp;) = default

#### [` ~Debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugD0Ev>)

~Debug() override = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug5cloneEv>)

inline virtual std::unique\_ptr&lt;[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&gt; clone() const

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug15characteristicsEv>)

inline uint32\_t characteristics() const

Reserved should be 0.

#### [` timestamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug9timestampEv>)

inline uint32\_t timestamp() const

The time and date when the debug data was created.

#### [` major_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug13major_versionEv>)

inline uint16\_t major\_version() const

The major version number of the debug data format.

#### [` minor_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug13minor_versionEv>)

inline uint16\_t minor\_version() const

The minor version number of the debug data format.

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug4typeEv>)

inline [TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug5TYPESE> "LIEF::PE::Debug::TYPES") type() const

The format DEBUG\_TYPES of the debugging information.

#### [` sizeof_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug11sizeof_dataEv>)

inline uint32\_t sizeof\_data() const

Size of the debug data.

#### [` addressof_rawdata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug17addressof_rawdataEv>)

inline uint32\_t addressof\_rawdata() const

Address of the debug data relative to the image base.

#### [` pointerto_rawdata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug17pointerto_rawdataEv>)

inline uint32\_t pointerto\_rawdata() const

File offset of the debug data.

#### [` section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug7sectionEv>)

inline const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section() const

The section where debug data is located.

#### [` section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug7sectionEv>)

inline [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section()

#### [` payload `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug7payloadEv>)

span&lt;uint8\_t&gt; payload()

[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Debug>) data associated with this entry.

#### [` payload `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug7payloadEv>)

inline span&lt;const uint8\_t&gt; payload() const

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug15characteristicsE8uint32_t>)

inline void characteristics(uint32\_t characteristics)

#### [` timestamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug9timestampE8uint32_t>)

inline void timestamp(uint32\_t timestamp)

#### [` major_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug13major_versionE8uint16_t>)

inline void major\_version(uint16\_t major\_version)

#### [` minor_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug13minor_versionE8uint16_t>)

inline void minor\_version(uint16\_t minor\_version)

#### [` sizeof_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug11sizeof_dataE8uint32_t>)

inline void sizeof\_data(uint32\_t sizeof\_data)

#### [` addressof_rawdata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug17addressof_rawdataE8uint32_t>)

inline void addressof\_rawdata(uint32\_t addressof\_rawdata)

#### [` pointerto_rawdata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug17pointerto_rawdataE8uint32_t>)

inline void pointerto\_rawdata(uint32\_t pointerto\_rawdata)

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE5Debug2asEPK1Tv>)

template&lt;class T&gt;  
inline const [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE5Debug2asEPK1Tv> "LIEF::PE::Debug::as::T") \*as() const

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE5Debug2asEP1Tv>)

template&lt;class T&gt;  
inline [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE5Debug2asEP1Tv> "LIEF::PE::Debug::as::T") \*as()

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Debug9to_stringEv>)

virtual std::string to\_string() const

Public Static Functions

#### [` get_payload `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug11get_payloadER7Section8uint32_t8uint32_t8uint32_t>)

static span&lt;uint8\_t&gt; get\_payload([Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") &amp;section, uint32\_t rva, uint32\_t offset, uint32\_t size)

#### [` get_payload `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug11get_payloadER7SectionRKN7details8pe_debugE>)

static span&lt;uint8\_t&gt; get\_payload([Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") &amp;section, const details::pe\_debug &amp;hdr)

#### [` get_payload `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Debug11get_payloadER7SectionRK5Debug>)

static inline span&lt;uint8\_t&gt; get\_payload([Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") &amp;section, const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") &amp;dbg)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebuglsERNSt7ostreamERK5Debug>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") &amp;entry)

---

## [Code View](<https://lief.re/doc/latest/formats/pe/cpp.html#code-view>)

### [` CodeView `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeViewE>)

class CodeView : public LIEF::PE::[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")

Interface for the (generic) [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Debug>) [CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1CodeView>) (`IMAGE_DEBUG_TYPE_CODEVIEW`).

Subclassed by [LIEF::PE::CodeViewPDB](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1CodeViewPDB>)

Public Types

#### [` SIGNATURES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView10SIGNATURESE>)

enum class SIGNATURES

Code view signatures.

> **See also**
> 
> : [http://llvm.org/doxygen/CVDebugRecord\_8h\_source.html](<http://llvm.org/doxygen/CVDebugRecord_8h_source.html>)

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView10SIGNATURES7UNKNOWNE>)

enumerator UNKNOWN = 0

##### [` PDB_70 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView10SIGNATURES6PDB_70E>)

enumerator PDB\_70 = 0x53445352

##### [` PDB_20 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView10SIGNATURES6PDB_20E>)

enumerator PDB\_20 = 0x3031424e

##### [` CV_50 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView10SIGNATURES5CV_50E>)

enumerator CV\_50 = 0x3131424e

##### [` CV_41 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView10SIGNATURES5CV_41E>)

enumerator CV\_41 = 0x3930424e

Public Functions

#### [` CodeView `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView8CodeViewEv>)

inline CodeView()

#### [` CodeView `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView8CodeViewE10SIGNATURES>)

inline CodeView([SIGNATURES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView10SIGNATURESE> "LIEF::PE::CodeView::SIGNATURES") sig)

#### [` CodeView `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView8CodeViewERKN7details8pe_debugE10SIGNATURESP7Section>)

inline CodeView(const details::pe\_debug &amp;debug, [SIGNATURES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView10SIGNATURESE> "LIEF::PE::CodeView::SIGNATURES") sig, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*sec)

#### [` CodeView `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView8CodeViewERK8CodeView>)

CodeView(const [CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView8CodeViewERK8CodeView> "LIEF::PE::CodeView::CodeView") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeViewaSERK8CodeView>)

[CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeViewE> "LIEF::PE::CodeView") &amp;operator=(const [CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeViewE> "LIEF::PE::CodeView") &amp;other) = default

#### [` CodeView `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView8CodeViewERR8CodeView>)

CodeView([CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView8CodeViewERR8CodeView> "LIEF::PE::CodeView::CodeView") &amp;&amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeViewaSERR8CodeView>)

[CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeViewE> "LIEF::PE::CodeView") &amp;operator=([CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeViewE> "LIEF::PE::CodeView") &amp;&amp;other) = default

#### [` ~CodeView `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeViewD0Ev>)

~CodeView() override = default

#### [` signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE8CodeView9signatureEv>)

inline [SIGNATURES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView10SIGNATURESE> "LIEF::PE::CodeView::SIGNATURES") signature() const

The signature that defines the underlying type of the payload.

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE8CodeView5cloneEv>)

inline virtual std::unique\_ptr&lt;[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE8CodeView9to_stringEv>)

virtual std::string to\_string() const override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE8CodeView6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeView7classofEPK5Debug>)

static inline bool classof(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") \*debug)

---

## [Code View PDB](<https://lief.re/doc/latest/formats/pe/cpp.html#code-view-pdb>)

### [` CodeViewPDB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDBE>)

class CodeViewPDB : public LIEF::PE::[CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8CodeViewE> "LIEF::PE::CodeView")

[CodeView](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1CodeView>) PDB specialization.

Public Types

#### [` signature_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11signature_tE>)

using signature\_t = std::array&lt;uint8\_t, 16&gt;

Public Functions

#### [` CodeViewPDB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11CodeViewPDBEv>)

inline CodeViewPDB()

#### [` CodeViewPDB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11CodeViewPDBENSt6stringE>)

inline CodeViewPDB(std::string filename)

#### [` CodeViewPDB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11CodeViewPDBERKN7details8pe_debugERKN7details9pe_pdb_70EP7Section>)

CodeViewPDB(const details::pe\_debug &amp;debug\_info, const details::pe\_pdb\_70 &amp;pdb\_70, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*sec)

#### [` CodeViewPDB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11CodeViewPDBERKN7details8pe_debugERKN7details9pe_pdb_20EP7Section>)

CodeViewPDB(const details::pe\_debug &amp;debug\_info, const details::pe\_pdb\_20 &amp;pdb\_70, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*sec)

#### [` CodeViewPDB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11CodeViewPDBERK11CodeViewPDB>)

CodeViewPDB(const [CodeViewPDB](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11CodeViewPDBERK11CodeViewPDB> "LIEF::PE::CodeViewPDB::CodeViewPDB") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDBaSERK11CodeViewPDB>)

[CodeViewPDB](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDBE> "LIEF::PE::CodeViewPDB") &amp;operator=(const [CodeViewPDB](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDBE> "LIEF::PE::CodeViewPDB") &amp;other) = default

#### [` CodeViewPDB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11CodeViewPDBERR11CodeViewPDB>)

CodeViewPDB([CodeViewPDB](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11CodeViewPDBERR11CodeViewPDB> "LIEF::PE::CodeViewPDB::CodeViewPDB") &amp;&amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDBaSERR11CodeViewPDB>)

[CodeViewPDB](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDBE> "LIEF::PE::CodeViewPDB") &amp;operator=([CodeViewPDB](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDBE> "LIEF::PE::CodeViewPDB") &amp;&amp;other) = default

#### [` guid `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11CodeViewPDB4guidEv>)

std::string guid() const

The GUID signature to verify against the `.pdb` file signature. This attribute might be used to lookup remote PDB file on a symbol server.

#### [` age `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11CodeViewPDB3ageEv>)

inline uint32\_t age() const

Age value to verify. The age does not necessarily correspond to any known time value, it is used to determine if a .pdb file is out of sync with corresponding `.exe` file.

#### [` signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11CodeViewPDB9signatureEv>)

inline const [signature\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11signature_tE> "LIEF::PE::CodeViewPDB::signature_t") &amp;signature() const

The 32-bit signature to verify against the .pdb file signature.

#### [` filename `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11CodeViewPDB8filenameEv>)

inline std::string\_view filename() const

The path to the `.pdb` file.

#### [` age `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB3ageE8uint32_t>)

inline void age(uint32\_t age)

#### [` signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB9signatureERK11signature_t>)

inline void signature(const [signature\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB11signature_tE> "LIEF::PE::CodeViewPDB::signature_t") &amp;sig)

#### [` filename `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB8filenameENSt6stringE>)

inline void filename(std::string filename)

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11CodeViewPDB5cloneEv>)

inline virtual std::unique\_ptr&lt;[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&gt; clone() const override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11CodeViewPDB6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11CodeViewPDB9to_stringEv>)

virtual std::string to\_string() const override

#### [` ~CodeViewPDB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDBD0Ev>)

~CodeViewPDB() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11CodeViewPDB7classofEPK5Debug>)

static inline bool classof(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") \*debug)

---

## [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#relocation>)

### [` Relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE>)

class Relocation : public LIEF::Object

Class which represents the *Base [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation>) Block* We usually find this structure in the `.reloc` section.

Public Types

#### [` entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation9entries_tE>)

using entries\_t = std::vector&lt;std::unique\_ptr&lt;[RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry")&gt;&gt;

#### [` it_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10it_entriesE>)

using it\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation9entries_tE> "LIEF::PE::Relocation::entries_t")&amp;, [RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry")\*&gt;

#### [` it_const_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation16it_const_entriesE>)

using it\_const\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation9entries_tE> "LIEF::PE::Relocation::entries_t")&amp;, [RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry")\*&gt;

#### [` relocations_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation13relocations_tE>)

using relocations\_t = std::vector&lt;std::unique\_ptr&lt;[Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation")&gt;&gt;

Public Functions

#### [` Relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10RelocationEv>)

Relocation()

#### [` Relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10RelocationE8uint32_t8uint32_t>)

Relocation(uint32\_t base, uint32\_t block\_size)

#### [` Relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10RelocationE8uint32_t>)

Relocation(uint32\_t base)

#### [` Relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10RelocationERK10Relocation>)

Relocation(const [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10RelocationERK10Relocation> "LIEF::PE::Relocation::Relocation") &amp;other)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationaSE10Relocation>)

[Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation") &amp;operator=([Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation") other)

#### [` Relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10RelocationERR10Relocation>)

Relocation([Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10RelocationERR10Relocation> "LIEF::PE::Relocation::Relocation")&amp;&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationaSERR10Relocation>)

[Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation") &amp;operator=([Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation") &amp;&amp;other)

#### [` Relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10RelocationERKN7details24pe_base_relocation_blockE>)

Relocation(const details::pe\_base\_relocation\_block &amp;header)

#### [` ~Relocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationD0Ev>)

~Relocation() override

#### [` swap `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation4swapER10Relocation>)

void swap([Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation") &amp;other)

#### [` virtual_address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10Relocation15virtual_addressEv>)

inline uint32\_t virtual\_address() const

The RVA for which the offset of the relocation entries ([RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RelocationEntry>)) is added.

#### [` block_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10Relocation10block_sizeEv>)

inline uint32\_t block\_size() const

The total number of bytes in the base relocation block.

```default
block_size = sizeof(BaseRelocationBlock) +
             nb_of_relocs * sizeof(uint16_t = RelocationEntry)
```

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10Relocation7entriesEv>)

inline [it\_const\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation16it_const_entriesE> "LIEF::PE::Relocation::it_const_entries") entries() const

Iterator over the [RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RelocationEntry>).

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation7entriesEv>)

inline [it\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10it_entriesE> "LIEF::PE::Relocation::it_entries") entries()

#### [` virtual_address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation15virtual_addressE8uint32_t>)

inline void virtual\_address(uint32\_t virtual\_address)

#### [` block_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation10block_sizeE8uint32_t>)

inline void block\_size(uint32\_t block\_size)

#### [` add_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation9add_entryERK15RelocationEntry>)

[RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry") &amp;add\_entry(const [RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry") &amp;entry)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10Relocation6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation5parseER6ParserR12BinaryStream>)

static [relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10Relocation13relocations_tE> "LIEF::PE::Relocation::relocations_t") parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationlsERNSt7ostreamERK10Relocation>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation") &amp;relocation)

---

## [Relocation Entry](<https://lief.re/doc/latest/formats/pe/cpp.html#relocation-entry>)

### [` RelocationEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE>)

class RelocationEntry : public LIEF::[Relocation](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF10RelocationE> "LIEF::Relocation")

Class which represents an entry of the PE relocation table.

It extends the [LIEF::Relocation](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Relocation>) object to provide a uniform API across the file formats

Public Types

#### [` BASE_TYPES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPESE>)

enum class BASE\_TYPES

[Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation>) type as described in [https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#base-relocation-types](<https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#base-relocation-types>).

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES7UNKNOWNE>)

enumerator UNKNOWN = -1

##### [` ABS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES3ABSE>)

enumerator ABS = 0

This value matches: `IMAGE_REL_BASED_ABSOLUTE` The base relocation is skipped. This type can be used to pad a block.

##### [` HIGH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES4HIGHE>)

enumerator HIGH = 1

This value matches: `IMAGE_REL_BASED_HIGH`  The base relocation adds the high 16 bits of the difference to the 16-bit field at offset. The 16-bit field represents the high value of a 32-bit word.

Operation:

```cpp
write<int16_t>(ADDR, ((read<int16_t>(ADDR) << 16) + DELTA) >> 16)
```

##### [` LOW `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES3LOWE>)

enumerator LOW = 2

The base relocation adds the low 16 bits of the difference to the 16-bit field at offset. The 16-bit field represents the low half of a 32-bit word.

Operation:

```cpp
write<int16_t>(ADDR, ((int32_t_t)read<int16_t>(ADDR) + DELTA))
```

##### [` HIGHLOW `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES7HIGHLOWE>)

enumerator HIGHLOW = 3

This value matches `IMAGE_REL_BASED_HIGHLOW`.

The base relocation applies all 32 bits of the difference to the 32-bit field at offset.

Operation:

```cpp
write<int32_t_t>(ADDR, read<int32_t_t>(ADDR) + DELTA)
```

##### [` HIGHADJ `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES7HIGHADJE>)

enumerator HIGHADJ = 4

This value matches `IMAGE_REL_BASED_HIGHADJ`.

The base relocation adds the high 16 bits of the difference to the 16-bit field at offset. The 16-bit field represents the high value of a 32-bit word. The low 16 bits of the 32-bit value are stored in the 16-bit word that follows this base relocation. This means that this base relocation occupies two slots.

##### [` MIPS_JMPADDR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES12MIPS_JMPADDRE>)

enumerator MIPS\_JMPADDR = 5 | (1 &lt;&lt; 8)

##### [` ARM_MOV32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES9ARM_MOV32E>)

enumerator ARM\_MOV32 = 5 | (1 &lt;&lt; 9)

##### [` RISCV_HI20 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES10RISCV_HI20E>)

enumerator RISCV\_HI20 = 5 | (1 &lt;&lt; 10)

##### [` SECTION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES7SECTIONE>)

enumerator SECTION = 6

##### [` THUMB_MOV32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES11THUMB_MOV32E>)

enumerator THUMB\_MOV32 = 7 | (1 &lt;&lt; 11)

##### [` RISCV_LOW12I `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES12RISCV_LOW12IE>)

enumerator RISCV\_LOW12I = 7 | (1 &lt;&lt; 12)

##### [` RISCV_LOW12S `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES12RISCV_LOW12SE>)

enumerator RISCV\_LOW12S = 8 | (1 &lt;&lt; 13)

##### [` LOONARCH_MARK_LA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES16LOONARCH_MARK_LAE>)

enumerator LOONARCH\_MARK\_LA = 8 | (1 &lt;&lt; 14)

##### [` MIPS_JMPADDR16 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES14MIPS_JMPADDR16E>)

enumerator MIPS\_JMPADDR16 = 9

##### [` DIR64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES5DIR64E>)

enumerator DIR64 = 10

This value matches `IMAGE_REL_BASED_DIR64`.

The base relocation applies the difference to the 64-bit field at offset.

Operation:

```cpp
write<int64_t_t>(ADDR, read<int64_t_t>(ADDR) + DELTA)
```

##### [` HIGH3ADJ `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPES8HIGH3ADJE>)

enumerator HIGH3ADJ = 11

Public Functions

#### [` RelocationEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry15RelocationEntryEv>)

RelocationEntry() = default

#### [` RelocationEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry15RelocationEntryERK15RelocationEntry>)

inline RelocationEntry(const [RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry15RelocationEntryERK15RelocationEntry> "LIEF::PE::RelocationEntry::RelocationEntry") &amp;other)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryaSE15RelocationEntry>)

inline [RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry") &amp;operator=([RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry") other)

#### [` RelocationEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry15RelocationEntryERR15RelocationEntry>)

RelocationEntry([RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry15RelocationEntryERR15RelocationEntry> "LIEF::PE::RelocationEntry::RelocationEntry") &amp;&amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryaSERR15RelocationEntry>)

[RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry") &amp;operator=([RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry") &amp;&amp;other) = default

#### [` RelocationEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry15RelocationEntryE8uint16_t10BASE_TYPES>)

inline RelocationEntry(uint16\_t position, [BASE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPESE> "LIEF::PE::RelocationEntry::BASE_TYPES") type)

#### [` ~RelocationEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryD0Ev>)

~RelocationEntry() override = default

#### [` swap `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry4swapER15RelocationEntry>)

inline void swap([RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry") &amp;other)

#### [` address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15RelocationEntry7addressEv>)

virtual uint64\_t address() const override

The address of the relocation.

#### [` address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry7addressE8uint64_t>)

virtual void address(uint64\_t address) override

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15RelocationEntry4sizeEv>)

virtual size\_t size() const override

The size of the relocatable pointer.

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry4sizeE6size_t>)

virtual void size(size\_t size) override

#### [` data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15RelocationEntry4dataEv>)

inline uint16\_t data() const

Raw data of the relocation:

- The **high** 4 bits store the relocation type
- The **low** 12 bits store the relocation offset

#### [` position `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15RelocationEntry8positionEv>)

inline uint16\_t position() const

Offset relative to [Relocation::virtual\_address](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation_1a7692c6c8c638f29e10943f5af908d924>) where the relocation occurs.

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15RelocationEntry4typeEv>)

inline [BASE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPESE> "LIEF::PE::RelocationEntry::BASE_TYPES") type() const

Type of the relocation.

#### [` position `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry8positionE8uint16_t>)

inline void position(uint16\_t position)

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry4typeE10BASE_TYPES>)

inline void type([BASE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPESE> "LIEF::PE::RelocationEntry::BASE_TYPES") type)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15RelocationEntry6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Method so that the `visitor` can visit us.

Public Static Functions

#### [` get_position `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry12get_positionE8uint16_t>)

static inline uint16\_t get\_position(uint16\_t data)

#### [` get_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry8get_typeE8uint16_t>)

static inline uint16\_t get\_type(uint16\_t data)

#### [` type_from_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry14type_from_dataEN6Header13MACHINE_TYPESE8uint16_t>)

static [BASE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry10BASE_TYPESE> "LIEF::PE::RelocationEntry::BASE_TYPES") type\_from\_data([Header](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderE> "LIEF::PE::Header")::[MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") arch, uint16\_t data)

Public Static Attributes

#### [` MAX_ADDR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntry8MAX_ADDRE>)

static auto MAX\_ADDR = 1 &lt;&lt; 12

Friends

**friend class PE::Relocation**

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntrylsERNSt7ostreamERK15RelocationEntry>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [RelocationEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15RelocationEntryE> "LIEF::PE::RelocationEntry") &amp;entry)

---

## [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#export>)

### [` Export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportE>)

class Export : public LIEF::Object

Class which represents a PE [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Export>).

Public Types

#### [` entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export9entries_tE>)

using entries\_t = std::vector&lt;std::unique\_ptr&lt;[ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry")&gt;&gt;

#### [` it_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export10it_entriesE>)

using it\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export9entries_tE> "LIEF::PE::Export::entries_t")&amp;, [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry")\*&gt;

#### [` it_const_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export16it_const_entriesE>)

using it\_const\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export9entries_tE> "LIEF::PE::Export::entries_t")&amp;, const [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry")\*&gt;

Public Functions

#### [` Export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export6ExportEv>)

Export() = default

#### [` Export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export6ExportENSt6stringERKNSt6vectorI11ExportEntryEE>)

inline Export(std::string name, const std::vector&lt;[ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry")&gt; &amp;entries)

#### [` Export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export6ExportENSt6stringE>)

inline Export(std::string name)

#### [` Export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export6ExportERKN7details25pe_export_directory_tableE>)

Export(const details::pe\_export\_directory\_table &amp;header)

#### [` Export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export6ExportERK6Export>)

Export(const [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export6ExportERK6Export> "LIEF::PE::Export::Export")&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportaSERK6Export>)

[Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportE> "LIEF::PE::Export") &amp;operator=(const [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportE> "LIEF::PE::Export")&amp;)

#### [` Export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export6ExportERR6Export>)

Export([Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export6ExportERR6Export> "LIEF::PE::Export::Export")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportaSERR6Export>)

[Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportE> "LIEF::PE::Export") &amp;operator=([Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportE> "LIEF::PE::Export")&amp;&amp;) = default

#### [` ~Export `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportD0Ev>)

~Export() override = default

#### [` export_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export12export_flagsEv>)

inline uint32\_t export\_flags() const

According to the PE specifications this value is reserved and should be set to 0.

#### [` timestamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export9timestampEv>)

inline uint32\_t timestamp() const

The time and date that the export data was created.

#### [` major_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export13major_versionEv>)

inline uint16\_t major\_version() const

The major version number (can be user-defined).

#### [` minor_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export13minor_versionEv>)

inline uint16\_t minor\_version() const

The minor version number (can be user-defined).

#### [` ordinal_base `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export12ordinal_baseEv>)

inline uint32\_t ordinal\_base() const

The starting number for the exports. Usually this value is set to 1.

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export4nameEv>)

inline std::string\_view name() const

The name of the library exported (e.g. `KERNEL32.dll`).

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export7entriesEv>)

inline [it\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export10it_entriesE> "LIEF::PE::Export::it_entries") entries()

Iterator over the [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ExportEntry>).

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export7entriesEv>)

inline [it\_const\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export16it_const_entriesE> "LIEF::PE::Export::it_const_entries") entries() const

#### [` name_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export8name_rvaEv>)

inline uint32\_t name\_rva() const

Address of the ASCII DLL’s name (RVA).

#### [` export_addr_table_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export21export_addr_table_rvaEv>)

inline uint32\_t export\_addr\_table\_rva() const

RVA of the export address table.

#### [` export_addr_table_cnt `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export21export_addr_table_cntEv>)

inline uint32\_t export\_addr\_table\_cnt() const

Number of entries in the export address table.

#### [` names_addr_table_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export20names_addr_table_rvaEv>)

inline uint32\_t names\_addr\_table\_rva() const

RVA to the list of exported names.

#### [` names_addr_table_cnt `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export20names_addr_table_cntEv>)

inline uint32\_t names\_addr\_table\_cnt() const

Number of exports by name.

#### [` ord_addr_table_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export18ord_addr_table_rvaEv>)

inline uint32\_t ord\_addr\_table\_rva() const

RVA to the list of exported ordinals.

#### [` export_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export12export_flagsE8uint32_t>)

inline void export\_flags(uint32\_t flags)

#### [` timestamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export9timestampE8uint32_t>)

inline void timestamp(uint32\_t timestamp)

#### [` major_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export13major_versionE8uint16_t>)

inline void major\_version(uint16\_t major\_version)

#### [` minor_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export13minor_versionE8uint16_t>)

inline void minor\_version(uint16\_t minor\_version)

#### [` ordinal_base `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export12ordinal_baseE8uint32_t>)

inline void ordinal\_base(uint32\_t ordinal\_base)

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export4nameENSt6stringE>)

inline void name(std::string name)

#### [` find_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export10find_entryERKNSt6stringE>)

const [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") \*find\_entry(const std::string &amp;name) const

Find the export entry with the given name.

#### [` find_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export10find_entryERKNSt6stringE>)

inline [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") \*find\_entry(const std::string &amp;name)

#### [` find_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export10find_entryE8uint32_t>)

const [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") \*find\_entry(uint32\_t ordinal) const

Find the export entry with the given ordinal number.

#### [` find_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export10find_entryE8uint32_t>)

inline [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") \*find\_entry(uint32\_t ordinal)

#### [` find_entry_at `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export13find_entry_atE8uint32_t>)

const [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") \*find\_entry\_at(uint32\_t rva) const

Find the export entry at the provided RVA.

#### [` find_entry_at `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export13find_entry_atE8uint32_t>)

inline [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") \*find\_entry\_at(uint32\_t rva)

#### [` add_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export9add_entryERK11ExportEntry>)

[ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") &amp;add\_entry(const [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") &amp;exp)

Add the given export and return the newly created and added export.

#### [` add_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export9add_entryENSt6stringE8uint32_t>)

inline [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") &amp;add\_entry(std::string name, uint32\_t rva)

#### [` remove_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export12remove_entryERK11ExportEntry>)

bool remove\_entry(const [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") &amp;exp)

Remove the given export entry.

#### [` remove_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export12remove_entryERKNSt6stringE>)

inline bool remove\_entry(const std::string &amp;name)

Remove the export entry with the given name.

#### [` remove_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Export12remove_entryE8uint32_t>)

inline bool remove\_entry(uint32\_t rva)

Remove the export entry with the given RVA.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE6Export6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportlsERNSt7ostreamERK6Export>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ExportE> "LIEF::PE::Export") &amp;exp)

---

## [Export Entry](<https://lief.re/doc/latest/formats/pe/cpp.html#export-entry>)

### [` ExportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE>)

class ExportEntry : public LIEF::[Symbol](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#_CPPv4N4LIEF6SymbolE> "LIEF::Symbol")

Class which represents a PE [Export](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Export>) entry (cf. [PE::Export](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Export>)).

Public Functions

#### [` ExportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry11ExportEntryEv>)

ExportEntry() = default

#### [` ExportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry11ExportEntryE8uint32_tb8uint16_t8uint32_t>)

inline ExportEntry(uint32\_t address, bool is\_extern, uint16\_t ordinal, uint32\_t function\_rva)

#### [` ExportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry11ExportEntryENSt6stringE8uint32_t>)

inline ExportEntry(std::string name, uint32\_t rva)

#### [` ExportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry11ExportEntryERK11ExportEntry>)

ExportEntry(const [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry11ExportEntryERK11ExportEntry> "LIEF::PE::ExportEntry::ExportEntry")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryaSERK11ExportEntry>)

[ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") &amp;operator=(const [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry")&amp;) = default

#### [` ExportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry11ExportEntryERR11ExportEntry>)

ExportEntry([ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry11ExportEntryERR11ExportEntry> "LIEF::PE::ExportEntry::ExportEntry")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryaSERR11ExportEntry>)

[ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") &amp;operator=([ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry")&amp;&amp;) = default

#### [` ~ExportEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryD0Ev>)

~ExportEntry() override = default

#### [` demangled_name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry14demangled_nameEv>)

std::string demangled\_name() const

Demangled representation of the symbol or an empty string if it can’t be demangled.

#### [` ordinal `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry7ordinalEv>)

inline uint16\_t ordinal() const

Ordinal value associated with this exported entry.

This value is computed as the index of this entry in the address table plus the ordinal base ([Export::ordinal\_base](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Export_1a3e38b87a166568a78c81dd2bb956b859>))

#### [` address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry7addressEv>)

inline uint32\_t address() const

Address of the current exported function in the DLL.

> **Warning**
> 
> If this entry is **external** to the DLL then it returns 0 and the external address is returned by [function\_rva()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ExportEntry_1ab40eb4a251adf05d9a890cefffa0da8c>)

#### [` is_extern `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry9is_externEv>)

inline bool is\_extern() const

#### [` is_forwarded `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry12is_forwardedEv>)

inline bool is\_forwarded() const

#### [` forward_information `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry19forward_informationEv>)

inline [forward\_information\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry21forward_information_tE> "LIEF::PE::ExportEntry::forward_information_t") forward\_information() const

#### [` function_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry12function_rvaEv>)

inline uint32\_t function\_rva() const

#### [` ordinal `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry7ordinalE8uint16_t>)

inline void ordinal(uint16\_t ordinal)

#### [` address `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry7addressE8uint32_t>)

inline void address(uint32\_t address)

#### [` is_extern `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry9is_externEb>)

inline void is\_extern(bool is\_extern)

#### [` value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry5valueEv>)

inline virtual uint64\_t value() const override

[Symbol](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol>)’s value which is usually the **address** of the symbol.

#### [` value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry5valueE8uint64_t>)

inline virtual void value(uint64\_t value) override

#### [` set_forward_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry16set_forward_infoENSt6stringENSt6stringE>)

inline void set\_forward\_info(std::string lib, std::string function)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntrylsERNSt7ostreamERK11ExportEntry>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ExportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntryE> "LIEF::PE::ExportEntry") &amp;exportEntry)

#### [` forward_information_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry21forward_information_tE>)

struct forward\_information\_t

Public Functions

##### [` operator bool `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry21forward_information_tcvbEv>)

inline operator bool() const

##### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ExportEntry21forward_information_t3keyEv>)

inline std::string key() const

Public Members

##### [` library `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry21forward_information_t7libraryE>)

std::string library

##### [` function `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry21forward_information_t8functionE>)

std::string function

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry21forward_information_tlsERNSt7ostreamERK21forward_information_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [forward\_information\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ExportEntry21forward_information_tE> "LIEF::PE::ExportEntry::forward_information_t") &amp;info)

---

## [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#signature>)

### [` Signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE>)

class Signature : public LIEF::Object

Main interface for the PKCS #7 signature scheme.

Public Types

#### [` VERIFICATION_FLAGS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGSE>)

enum class VERIFICATION\_FLAGS : uint32\_t

Flags returned by the verification functions.

*Values:*

##### [` OK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS2OKE>)

enumerator OK = 0

##### [` INVALID_SIGNER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS14INVALID_SIGNERE>)

enumerator INVALID\_SIGNER = 1 &lt;&lt; 0

##### [` UNSUPPORTED_ALGORITHM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS21UNSUPPORTED_ALGORITHME>)

enumerator UNSUPPORTED\_ALGORITHM = 1 &lt;&lt; 1

##### [` INCONSISTENT_DIGEST_ALGORITHM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS29INCONSISTENT_DIGEST_ALGORITHME>)

enumerator INCONSISTENT\_DIGEST\_ALGORITHM = 1 &lt;&lt; 2

##### [` CERT_NOT_FOUND `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS14CERT_NOT_FOUNDE>)

enumerator CERT\_NOT\_FOUND = 1 &lt;&lt; 3

##### [` CORRUPTED_CONTENT_INFO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS22CORRUPTED_CONTENT_INFOE>)

enumerator CORRUPTED\_CONTENT\_INFO = 1 &lt;&lt; 4

##### [` CORRUPTED_AUTH_DATA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS19CORRUPTED_AUTH_DATAE>)

enumerator CORRUPTED\_AUTH\_DATA = 1 &lt;&lt; 5

##### [` MISSING_PKCS9_MESSAGE_DIGEST `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS28MISSING_PKCS9_MESSAGE_DIGESTE>)

enumerator MISSING\_PKCS9\_MESSAGE\_DIGEST = 1 &lt;&lt; 6

##### [` BAD_DIGEST `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS10BAD_DIGESTE>)

enumerator BAD\_DIGEST = 1 &lt;&lt; 7

##### [` BAD_SIGNATURE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS13BAD_SIGNATUREE>)

enumerator BAD\_SIGNATURE = 1 &lt;&lt; 8

##### [` NO_SIGNATURE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS12NO_SIGNATUREE>)

enumerator NO\_SIGNATURE = 1 &lt;&lt; 9

##### [` CERT_EXPIRED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS12CERT_EXPIREDE>)

enumerator CERT\_EXPIRED = 1 &lt;&lt; 10

##### [` CERT_FUTURE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGS11CERT_FUTUREE>)

enumerator CERT\_FUTURE = 1 &lt;&lt; 11

#### [` VERIFICATION_CHECKS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKSE>)

enum class VERIFICATION\_CHECKS : uint32\_t

Flags to tweak the verification process of the signature.

See [Signature::check](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1a36c6c94366004eac8bac371eb0aa6ca2>) and [LIEF::PE::Binary::verify\_signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary_1a70de3b06144c11a510a313eabd4258a2>)

*Values:*

##### [` DEFAULT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKS7DEFAULTE>)

enumerator DEFAULT = 1 &lt;&lt; 0

Default behavior that tries to follow the Microsoft verification process as close as possible.

##### [` HASH_ONLY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKS9HASH_ONLYE>)

enumerator HASH\_ONLY = 1 &lt;&lt; 1

Only check that [Binary::authentihash](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary_1a12472d5636aed82a383039d289ab91bb>) matches [ContentInfo::digest](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ContentInfo_1a00aca4ec4bedb00a04a9585134daa2cc>) regardless of the signature’s validity.

##### [` LIFETIME_SIGNING `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKS16LIFETIME_SIGNINGE>)

enumerator LIFETIME\_SIGNING = 1 &lt;&lt; 2

Same semantic as [WTD\_LIFETIME\_SIGNING\_FLAG](<https://docs.microsoft.com/en-us/windows/win32/api/wintrust/ns-wintrust-wintrust_data#WTD_LIFETIME_SIGNING_FLAG>).

##### [` SKIP_CERT_TIME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKS14SKIP_CERT_TIMEE>)

enumerator SKIP\_CERT\_TIME = 1 &lt;&lt; 3

Skip the verification of the certificate validity periods so that even though a certificate expired, it returns [VERIFICATION\_FLAGS::OK](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1aefd5b1e4458abd33e7993d37846f7d0cae0aa021e21dddbd6d8cecec71e9cf564>).

#### [` it_const_crt `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature12it_const_crtE>)

using it\_const\_crt = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const std::vector&lt;[x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509")&gt;&amp;&gt;

Iterator which outputs const [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>)&amp; certificates.

#### [` it_crt `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature6it_crtE>)

using it\_crt = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;std::vector&lt;[x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509")&gt;&amp;&gt;

Iterator which outputs [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>)&amp; certificates.

#### [` it_const_signers_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18it_const_signers_tE>)

using it\_const\_signers\_t = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const std::vector&lt;[SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo")&gt;&amp;&gt;

Iterator which outputs const [SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo>)&amp;.

#### [` it_signers_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature12it_signers_tE>)

using it\_signers\_t = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;std::vector&lt;[SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo")&gt;&amp;&gt;

Iterator which outputs [SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo>)&amp;.

Public Functions

#### [` Signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature9SignatureEv>)

Signature()

#### [` Signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature9SignatureERK9Signature>)

Signature(const [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature9SignatureERK9Signature> "LIEF::PE::Signature::Signature")&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureaSERK9Signature>)

[Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature") &amp;operator=(const [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature")&amp;)

#### [` Signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature9SignatureERR9Signature>)

Signature([Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature9SignatureERR9Signature> "LIEF::PE::Signature::Signature")&amp;&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureaSERR9Signature>)

[Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature") &amp;operator=([Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature")&amp;&amp;)

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature7versionEv>)

inline uint32\_t version() const

Should be 1.

#### [` digest_algorithm `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature16digest_algorithmEv>)

inline [ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") digest\_algorithm() const

Algorithm used to *digest* the file.

It should match [SignerInfo::digest\_algorithm](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo_1ae6772dcdb8c1d8554e1133dc4deb5b8e>)

#### [` content_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature12content_infoEv>)

inline const [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo") &amp;content\_info() const

Return the [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ContentInfo>).

#### [` certificates `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature12certificatesEv>)

inline [it\_const\_crt](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature12it_const_crtE> "LIEF::PE::Signature::it_const_crt") certificates() const

Return an iterator over [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificates.

#### [` certificates `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature12certificatesEv>)

inline [it\_crt](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature6it_crtE> "LIEF::PE::Signature::it_crt") certificates()

#### [` signers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature7signersEv>)

inline [it\_const\_signers\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18it_const_signers_tE> "LIEF::PE::Signature::it_const_signers_t") signers() const

Return an iterator over the signers ([SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo>)) defined in the PKCS #7 signature.

#### [` signers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature7signersEv>)

inline [it\_signers\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature12it_signers_tE> "LIEF::PE::Signature::it_signers_t") signers()

#### [` raw_der `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature7raw_derEv>)

inline span&lt;const uint8\_t&gt; raw\_der() const

Return the raw original PKCS7 signature.

#### [` find_crt `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature8find_crtERKNSt6vectorI7uint8_tEE>)

const [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") \*find\_crt(const std::vector&lt;uint8\_t&gt; &amp;serialno) const

Find [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate according to its serial number.

#### [` find_crt_subject `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature16find_crt_subjectENSt11string_viewE>)

const [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") \*find\_crt\_subject(std::string\_view subject) const

Find [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate according to its subject.

#### [` find_crt_subject `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature16find_crt_subjectENSt11string_viewERKNSt6vectorI7uint8_tEE>)

const [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") \*find\_crt\_subject(std::string\_view subject, const std::vector&lt;uint8\_t&gt; &amp;serialno) const

Find [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate according to its subject **AND** serial number.

#### [` find_crt_issuer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature15find_crt_issuerENSt11string_viewE>)

const [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") \*find\_crt\_issuer(std::string\_view issuer) const

Find [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate according to its issuer.

#### [` find_crt_issuer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature15find_crt_issuerENSt11string_viewERKNSt6vectorI7uint8_tEE>)

const [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") \*find\_crt\_issuer(std::string\_view issuer, const std::vector&lt;uint8\_t&gt; &amp;serialno) const

Find [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate according to its issuer **AND** serial number.

#### [` check `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature5checkE19VERIFICATION_CHECKS>)

[VERIFICATION\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGSE> "LIEF::PE::Signature::VERIFICATION_FLAGS") check([VERIFICATION\_CHECKS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKSE> "LIEF::PE::Signature::VERIFICATION_CHECKS") checks = [VERIFICATION\_CHECKS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKSE> "LIEF::PE::Signature::VERIFICATION_CHECKS")::[DEFAULT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature19VERIFICATION_CHECKS7DEFAULTE> "LIEF::PE::Signature::VERIFICATION_CHECKS::DEFAULT")) const

Check if this signature is valid according to the Authenticode/PKCS #7 verification scheme.

By default, it performs the following verifications:

1. It must contain only **one** signer info
2. [Signature::digest\_algorithm](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1aede85ccb45c1ea86f50b55aea5fa2dc2>) must match:

   - [ContentInfo::digest\_algorithm](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ContentInfo_1a0cafef41530fb92cdcae310e7dd0bdf9>)
   - [SignerInfo::digest\_algorithm](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo_1ae6772dcdb8c1d8554e1133dc4deb5b8e>)
3. The [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate specified by [SignerInfo::serial\_number](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo_1aa5ab3c3f5a5db2e4e490f0eed9c2ee4e>) **and** [SignerInfo::issuer](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo_1ac856b6196faf85c38e0189167217d703>) must exist within [Signature::certificates](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1ae1939784d3b43ddd20248d50f2831d8d>)
4. Given the [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate, compare [SignerInfo::encrypted\_digest](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo_1ae01a8709069f0546ffe56f9f1d4025dd>) against either:

   - hash of authenticated attributes if present
   - hash of [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ContentInfo>)
5. If authenticated attributes are present, check that a PKCS9\_MESSAGE\_DIGEST attribute exists and that its value matches hash of [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ContentInfo>)
6. Check the validity of the PKCS #9 counter signature if present
7. If the signature doesn’t embed a signing-time in the counter signature, check the certificate validity. (See [LIEF::PE::Signature::VERIFICATION\_CHECKS::LIFETIME\_SIGNING](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1abf70940910955c531f8d11e2fd374bdbacaaa52bde021866c924f2552db321b43>) and [LIEF::PE::Signature::VERIFICATION\_CHECKS::SKIP\_CERT\_TIME](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1abf70940910955c531f8d11e2fd374bdba89fc990fbef16d7d9c47116ce02b10cb>))

See: [LIEF::PE::Signature::VERIFICATION\_CHECKS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1abf70940910955c531f8d11e2fd374bdb>) to tweak the behavior

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Signature6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~Signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureD0Ev>)

~Signature() override

Public Static Functions

#### [` hash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature4hashERKNSt6vectorI7uint8_tEE10ALGORITHMS>)

static inline std::vector&lt;uint8\_t&gt; hash(const std::vector&lt;uint8\_t&gt; &amp;input, [ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") algo)

Hash the input given the algorithm.

#### [` hash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature4hashEPK7uint8_t6size_t10ALGORITHMS>)

static std::vector&lt;uint8\_t&gt; hash(const uint8\_t \*buffer, size\_t size, [ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") algo)

#### [` flag_to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature14flag_to_stringE18VERIFICATION_FLAGS>)

static std::string flag\_to\_string([VERIFICATION\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Signature18VERIFICATION_FLAGSE> "LIEF::PE::Signature::VERIFICATION_FLAGS") flag)

Convert a verification flag into a human-readable representation. e.g [VERIFICATION\_FLAGS.BAD\_DIGEST](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1aefd5b1e4458abd33e7993d37846f7d0cad37c6eaabe77356092e3333d0c4c9586>) | [VERIFICATION\_FLAGS.BAD\_SIGNATURE](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1aefd5b1e4458abd33e7993d37846f7d0ca1445c3747a23b5fe26b9a373a5c6018a>) | [VERIFICATION\_FLAGS.CERT\_EXPIRED](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1aefd5b1e4458abd33e7993d37846f7d0ca888160e15a46b8dad2f046398139f7c4>).

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignaturelsERNSt7ostreamERK9Signature>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature") &amp;signature)

---

## [Signature Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-attribute>)

### [` Attribute `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE>)

class Attribute : public LIEF::Object

Interface over PKCS #7 attribute.

Subclassed by [LIEF::PE::ContentType](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ContentType>), [LIEF::PE::GenericType](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1GenericType>), [LIEF::PE::MsCounterSign](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1MsCounterSign>), [LIEF::PE::MsManifestBinaryID](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1MsManifestBinaryID>), [LIEF::PE::MsSpcNestedSignature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1MsSpcNestedSignature>), [LIEF::PE::MsSpcStatementType](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1MsSpcStatementType>), [LIEF::PE::PKCS9AtSequenceNumber](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1PKCS9AtSequenceNumber>), [LIEF::PE::PKCS9CounterSignature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1PKCS9CounterSignature>), [LIEF::PE::PKCS9MessageDigest](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1PKCS9MessageDigest>), [LIEF::PE::PKCS9SigningTime](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1PKCS9SigningTime>), [LIEF::PE::SigningCertificateV2](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SigningCertificateV2>), [LIEF::PE::SpcRelaxedPeMarkerCheck](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SpcRelaxedPeMarkerCheck>), [LIEF::PE::SpcSpOpusInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SpcSpOpusInfo>)

Public Types

#### [` TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPEE>)

enum class TYPE

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE7UNKNOWNE>)

enumerator UNKNOWN = 0

##### [` CONTENT_TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE12CONTENT_TYPEE>)

enumerator CONTENT\_TYPE

##### [` GENERIC_TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE12GENERIC_TYPEE>)

enumerator GENERIC\_TYPE

##### [` SIGNING_CERTIFICATE_V2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE22SIGNING_CERTIFICATE_V2E>)

enumerator SIGNING\_CERTIFICATE\_V2

##### [` SPC_SP_OPUS_INFO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE16SPC_SP_OPUS_INFOE>)

enumerator SPC\_SP\_OPUS\_INFO

##### [` SPC_RELAXED_PE_MARKER_CHECK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE27SPC_RELAXED_PE_MARKER_CHECKE>)

enumerator SPC\_RELAXED\_PE\_MARKER\_CHECK

##### [` MS_COUNTER_SIGN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE15MS_COUNTER_SIGNE>)

enumerator MS\_COUNTER\_SIGN

##### [` MS_SPC_NESTED_SIGN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE18MS_SPC_NESTED_SIGNE>)

enumerator MS\_SPC\_NESTED\_SIGN

##### [` MS_SPC_STATEMENT_TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE21MS_SPC_STATEMENT_TYPEE>)

enumerator MS\_SPC\_STATEMENT\_TYPE

##### [` MS_PLATFORM_MANIFEST_BINARY_ID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE30MS_PLATFORM_MANIFEST_BINARY_IDE>)

enumerator MS\_PLATFORM\_MANIFEST\_BINARY\_ID

##### [` PKCS9_AT_SEQUENCE_NUMBER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE24PKCS9_AT_SEQUENCE_NUMBERE>)

enumerator PKCS9\_AT\_SEQUENCE\_NUMBER

##### [` PKCS9_COUNTER_SIGNATURE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE23PKCS9_COUNTER_SIGNATUREE>)

enumerator PKCS9\_COUNTER\_SIGNATURE

##### [` PKCS9_MESSAGE_DIGEST `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE20PKCS9_MESSAGE_DIGESTE>)

enumerator PKCS9\_MESSAGE\_DIGEST

##### [` PKCS9_SIGNING_TIME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPE18PKCS9_SIGNING_TIMEE>)

enumerator PKCS9\_SIGNING\_TIME

Public Functions

#### [` Attribute `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute9AttributeEv>)

Attribute() = delete

#### [` Attribute `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute9AttributeERK9Attribute>)

Attribute(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute9AttributeERK9Attribute> "LIEF::PE::Attribute::Attribute")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeaSERK9Attribute>)

[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") &amp;operator=(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Attribute5cloneEv>)

virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const = 0

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Attribute4typeEv>)

inline virtual [TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPEE> "LIEF::PE::Attribute::TYPE") type() const

Concrete type of the attribute.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Attribute5printEv>)

virtual std::string print() const = 0

Print information about the underlying attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9Attribute6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~Attribute `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeD0Ev>)

~Attribute() override = default

#### [` Tcast `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE9Attribute4castEPK1Tv>)

template&lt;class T&gt;  
inline const [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE9Attribute4castEPK1Tv> "LIEF::PE::Attribute::cast::T") \*cast() const

#### [` Tcast `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE9Attribute4castEP1Tv>)

template&lt;class T&gt;  
inline [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE9Attribute4castEP1Tv> "LIEF::PE::Attribute::cast::T") \*cast()

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributelsERNSt7ostreamERK9Attribute>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") &amp;attribute)

---

## [Signature ContentType](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-contenttype>)

### [` ContentType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentTypeE>)

class ContentType : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Interface over the structure described by the OID `1.2.840.113549.1.9.3` (PKCS #9).

The internal structure is described in the [RFC #2985: PKCS #9 - Selected Object Classes and Attribute Types Version 2.0](<https://tools.ietf.org/html/rfc2985>)

```text
ContentType ::= OBJECT IDENTIFIER
```

Public Functions

#### [` ContentType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentType11ContentTypeEv>)

inline ContentType()

#### [` ContentType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentType11ContentTypeE5oid_t>)

inline ContentType(oid\_t oid)

#### [` ContentType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentType11ContentTypeERK11ContentType>)

ContentType(const [ContentType](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentType11ContentTypeERK11ContentType> "LIEF::PE::ContentType::ContentType")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentTypeaSERK11ContentType>)

[ContentType](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentTypeE> "LIEF::PE::ContentType") &amp;operator=(const [ContentType](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentTypeE> "LIEF::PE::ContentType")&amp;) = default

#### [` oid `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentType3oidEv>)

inline const oid\_t &amp;oid() const

OID as described in RFC #2985.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentType5printEv>)

virtual std::string print() const override

Print information about the attribute.

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentType5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentType6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~ContentType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentTypeD0Ev>)

~ContentType() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentType7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [Signature GenericType](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-generictype>)

### [` GenericType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11GenericTypeE>)

class GenericType : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Interface over an attribute for which the internal structure is not supported by LIEF.

Public Functions

#### [` GenericType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11GenericType11GenericTypeEv>)

inline GenericType()

#### [` GenericType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11GenericType11GenericTypeE5oid_tNSt6vectorI7uint8_tEE>)

inline GenericType(oid\_t oid, std::vector&lt;uint8\_t&gt; raw)

#### [` GenericType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11GenericType11GenericTypeERK11GenericType>)

GenericType(const [GenericType](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11GenericType11GenericTypeERK11GenericType> "LIEF::PE::GenericType::GenericType")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11GenericTypeaSERK11GenericType>)

[GenericType](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11GenericTypeE> "LIEF::PE::GenericType") &amp;operator=(const [GenericType](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11GenericTypeE> "LIEF::PE::GenericType")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11GenericType5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` oid `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11GenericType3oidEv>)

inline const oid\_t &amp;oid() const

OID of the original attribute.

#### [` raw_content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11GenericType11raw_contentEv>)

inline span&lt;const uint8\_t&gt; raw\_content() const

Original DER blob of the attribute.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11GenericType5printEv>)

virtual std::string print() const override

Print information about the attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11GenericType6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~GenericType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11GenericTypeD0Ev>)

~GenericType() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11GenericType7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [Signature MsSpcNestedSignature](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-msspcnestedsignature>)

### [` MsSpcNestedSignature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20MsSpcNestedSignatureE>)

class MsSpcNestedSignature : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Interface over the structure described by the OID `1.3.6.1.4.1.311.2.4.1`.

The internal structure is not documented but we can infer the following structure:

```text
MsSpcNestedSignature ::= SET OF SignedData
```

`SignedData` is the structure described in PKCS #7 RFC ([LIEF::PE::Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>))

Public Functions

#### [` MsSpcNestedSignature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20MsSpcNestedSignature20MsSpcNestedSignatureEv>)

MsSpcNestedSignature() = delete

#### [` MsSpcNestedSignature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20MsSpcNestedSignature20MsSpcNestedSignatureE9Signature>)

inline MsSpcNestedSignature([Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature") sig)

#### [` MsSpcNestedSignature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20MsSpcNestedSignature20MsSpcNestedSignatureERK20MsSpcNestedSignature>)

MsSpcNestedSignature(const [MsSpcNestedSignature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20MsSpcNestedSignature20MsSpcNestedSignatureERK20MsSpcNestedSignature> "LIEF::PE::MsSpcNestedSignature::MsSpcNestedSignature")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20MsSpcNestedSignatureaSERK20MsSpcNestedSignature>)

[MsSpcNestedSignature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20MsSpcNestedSignatureE> "LIEF::PE::MsSpcNestedSignature") &amp;operator=(const [MsSpcNestedSignature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20MsSpcNestedSignatureE> "LIEF::PE::MsSpcNestedSignature")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20MsSpcNestedSignature5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` sig `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20MsSpcNestedSignature3sigEv>)

inline const [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9SignatureE> "LIEF::PE::Signature") &amp;sig() const

Underlying [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>) object.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20MsSpcNestedSignature5printEv>)

virtual std::string print() const override

Print information about the attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20MsSpcNestedSignature6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~MsSpcNestedSignature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20MsSpcNestedSignatureD0Ev>)

~MsSpcNestedSignature() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20MsSpcNestedSignature7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [Signature MsSpcStatementType](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-msspcstatementtype>)

### [` MsSpcStatementType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsSpcStatementTypeE>)

class MsSpcStatementType : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Interface over the structure described by the OID `1.3.6.1.4.1.311.2.1.11`.

The internal structure is described in the official document: [Windows Authenticode Portable Executable Signature Format](<http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx>)

```text
SpcStatementType ::= SEQUENCE of OBJECT IDENTIFIER
```

Public Functions

#### [` MsSpcStatementType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsSpcStatementType18MsSpcStatementTypeEv>)

MsSpcStatementType() = delete

#### [` MsSpcStatementType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsSpcStatementType18MsSpcStatementTypeE5oid_t>)

inline MsSpcStatementType(oid\_t oid)

#### [` MsSpcStatementType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsSpcStatementType18MsSpcStatementTypeERK18MsSpcStatementType>)

MsSpcStatementType(const [MsSpcStatementType](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsSpcStatementType18MsSpcStatementTypeERK18MsSpcStatementType> "LIEF::PE::MsSpcStatementType::MsSpcStatementType")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsSpcStatementTypeaSERK18MsSpcStatementType>)

[MsSpcStatementType](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsSpcStatementTypeE> "LIEF::PE::MsSpcStatementType") &amp;operator=(const [MsSpcStatementType](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsSpcStatementTypeE> "LIEF::PE::MsSpcStatementType")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18MsSpcStatementType5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` oid `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18MsSpcStatementType3oidEv>)

inline const oid\_t &amp;oid() const

According to the documentation:

> The SpcStatementType MUST contain one Object Identifier with either the value `1.3.6.1.4.1.311.2.1.21 (SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID)` or &gt; `1.3.6.1.4.1.311.2.1.22 (SPC_COMMERCIAL_SP_KEY_PURPOSE_OBJID)`.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18MsSpcStatementType5printEv>)

virtual std::string print() const override

Print information about the attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18MsSpcStatementType6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~MsSpcStatementType `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsSpcStatementTypeD0Ev>)

~MsSpcStatementType() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsSpcStatementType7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [Signature PKCS9AtSequenceNumber](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-pkcs9atsequencenumber>)

### [` PKCS9AtSequenceNumber `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9AtSequenceNumberE>)

class PKCS9AtSequenceNumber : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Interface over the structure described by the OID `1.2.840.113549.1.9.25.4` (PKCS #9).

The internal structure is described in the [RFC #2985: PKCS #9 - Selected Object Classes and Attribute Types Version 2.0](<https://tools.ietf.org/html/rfc2985>)

```text
sequenceNumber ATTRIBUTE ::= {
  WITH SYNTAX SequenceNumber
  EQUALITY MATCHING RULE integerMatch
  SINGLE VALUE TRUE
  ID pkcs-9-at-sequenceNumber
}

SequenceNumber ::= INTEGER (1..MAX)
```

Public Functions

#### [` PKCS9AtSequenceNumber `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9AtSequenceNumber21PKCS9AtSequenceNumberEv>)

PKCS9AtSequenceNumber() = delete

#### [` PKCS9AtSequenceNumber `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9AtSequenceNumber21PKCS9AtSequenceNumberE8uint32_t>)

inline PKCS9AtSequenceNumber(uint32\_t num)

#### [` PKCS9AtSequenceNumber `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9AtSequenceNumber21PKCS9AtSequenceNumberERK21PKCS9AtSequenceNumber>)

PKCS9AtSequenceNumber(const [PKCS9AtSequenceNumber](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9AtSequenceNumber21PKCS9AtSequenceNumberERK21PKCS9AtSequenceNumber> "LIEF::PE::PKCS9AtSequenceNumber::PKCS9AtSequenceNumber")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9AtSequenceNumberaSERK21PKCS9AtSequenceNumber>)

[PKCS9AtSequenceNumber](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9AtSequenceNumberE> "LIEF::PE::PKCS9AtSequenceNumber") &amp;operator=(const [PKCS9AtSequenceNumber](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9AtSequenceNumberE> "LIEF::PE::PKCS9AtSequenceNumber")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21PKCS9AtSequenceNumber5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` number `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21PKCS9AtSequenceNumber6numberEv>)

inline uint32\_t number() const

Number as described in the RFC.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21PKCS9AtSequenceNumber5printEv>)

virtual std::string print() const override

Print information about the attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21PKCS9AtSequenceNumber6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~PKCS9AtSequenceNumber `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9AtSequenceNumberD0Ev>)

~PKCS9AtSequenceNumber() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9AtSequenceNumber7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [Signature PKCS9CounterSignature](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-pkcs9countersignature>)

### [` PKCS9CounterSignature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9CounterSignatureE>)

class PKCS9CounterSignature : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Interface over the structure described by the OID `1.2.840.113549.1.9.6` (PKCS #9).

The internal structure is described in the [RFC #2985: PKCS #9 - Selected Object Classes and Attribute Types Version 2.0](<https://tools.ietf.org/html/rfc2985>)

```text
counterSignature ATTRIBUTE ::= {
  WITH SYNTAX SignerInfo
  ID pkcs-9-at-counterSignature
}
```

Public Functions

#### [` PKCS9CounterSignature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9CounterSignature21PKCS9CounterSignatureEv>)

PKCS9CounterSignature() = delete

#### [` PKCS9CounterSignature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9CounterSignature21PKCS9CounterSignatureE10SignerInfo>)

inline PKCS9CounterSignature([SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo") signer)

#### [` PKCS9CounterSignature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9CounterSignature21PKCS9CounterSignatureERK21PKCS9CounterSignature>)

PKCS9CounterSignature(const [PKCS9CounterSignature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9CounterSignature21PKCS9CounterSignatureERK21PKCS9CounterSignature> "LIEF::PE::PKCS9CounterSignature::PKCS9CounterSignature")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9CounterSignatureaSERK21PKCS9CounterSignature>)

[PKCS9CounterSignature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9CounterSignatureE> "LIEF::PE::PKCS9CounterSignature") &amp;operator=(const [PKCS9CounterSignature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9CounterSignatureE> "LIEF::PE::PKCS9CounterSignature")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21PKCS9CounterSignature5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` signer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21PKCS9CounterSignature6signerEv>)

inline const [SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo") &amp;signer() const

[SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo>) as described in the RFC #2985.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21PKCS9CounterSignature5printEv>)

virtual std::string print() const override

Print information about the attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21PKCS9CounterSignature6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~PKCS9CounterSignature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9CounterSignatureD0Ev>)

~PKCS9CounterSignature() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21PKCS9CounterSignature7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [Signature PKCS9MessageDigest](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-pkcs9messagedigest>)

### [` PKCS9MessageDigest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18PKCS9MessageDigestE>)

class PKCS9MessageDigest : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Interface over the structure described by the OID `1.2.840.113549.1.9.4` (PKCS #9).

The internal structure is described in the [RFC #2985: PKCS #9 - Selected Object Classes and Attribute Types Version 2.0](<https://tools.ietf.org/html/rfc2985>)

```text
messageDigest ATTRIBUTE ::= {
  WITH SYNTAX MessageDigest
  EQUALITY MATCHING RULE octetStringMatch
  SINGLE VALUE TRUE
  ID pkcs-9-at-messageDigest
}

MessageDigest ::= OCTET STRING
```

Public Functions

#### [` PKCS9MessageDigest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18PKCS9MessageDigest18PKCS9MessageDigestEv>)

PKCS9MessageDigest() = delete

#### [` PKCS9MessageDigest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18PKCS9MessageDigest18PKCS9MessageDigestENSt6vectorI7uint8_tEE>)

inline PKCS9MessageDigest(std::vector&lt;uint8\_t&gt; digest)

#### [` PKCS9MessageDigest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18PKCS9MessageDigest18PKCS9MessageDigestERK18PKCS9MessageDigest>)

PKCS9MessageDigest(const [PKCS9MessageDigest](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18PKCS9MessageDigest18PKCS9MessageDigestERK18PKCS9MessageDigest> "LIEF::PE::PKCS9MessageDigest::PKCS9MessageDigest")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18PKCS9MessageDigestaSERK18PKCS9MessageDigest>)

[PKCS9MessageDigest](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18PKCS9MessageDigestE> "LIEF::PE::PKCS9MessageDigest") &amp;operator=(const [PKCS9MessageDigest](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18PKCS9MessageDigestE> "LIEF::PE::PKCS9MessageDigest")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18PKCS9MessageDigest5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` digest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18PKCS9MessageDigest6digestEv>)

inline span&lt;const uint8\_t&gt; digest() const

Message digest as a blob of bytes as described in the RFC.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18PKCS9MessageDigest5printEv>)

virtual std::string print() const override

Print information about the attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18PKCS9MessageDigest6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~PKCS9MessageDigest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18PKCS9MessageDigestD0Ev>)

~PKCS9MessageDigest() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18PKCS9MessageDigest7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [Signature PKCS9SigningTime](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-pkcs9signingtime>)

### [` PKCS9SigningTime `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTimeE>)

class PKCS9SigningTime : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Interface over the structure described by the OID `1.2.840.113549.1.9.5` (PKCS #9).

The internal structure is described in the [RFC #2985: PKCS #9 - Selected Object Classes and Attribute Types Version 2.0](<https://tools.ietf.org/html/rfc2985>)

```text
signingTime ATTRIBUTE ::= {
        WITH SYNTAX SigningTime
        EQUALITY MATCHING RULE signingTimeMatch
        SINGLE VALUE TRUE
        ID pkcs-9-at-signingTime
}

SigningTime ::= Time -- imported from ISO/IEC 9594-8
```

Public Types

#### [` time_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTime6time_tE>)

using time\_t = std::array&lt;int32\_t, 6&gt;

Time as an array [year, month, day, hour, min, sec].

Public Functions

#### [` PKCS9SigningTime `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTime16PKCS9SigningTimeEv>)

PKCS9SigningTime() = delete

#### [` PKCS9SigningTime `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTime16PKCS9SigningTimeE6time_t>)

inline PKCS9SigningTime([time\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTime6time_tE> "LIEF::PE::PKCS9SigningTime::time_t") time)

#### [` PKCS9SigningTime `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTime16PKCS9SigningTimeERK16PKCS9SigningTime>)

PKCS9SigningTime(const [PKCS9SigningTime](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTime16PKCS9SigningTimeERK16PKCS9SigningTime> "LIEF::PE::PKCS9SigningTime::PKCS9SigningTime")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTimeaSERK16PKCS9SigningTime>)

[PKCS9SigningTime](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTimeE> "LIEF::PE::PKCS9SigningTime") &amp;operator=(const [PKCS9SigningTime](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTimeE> "LIEF::PE::PKCS9SigningTime")&amp;) = default

#### [` time `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16PKCS9SigningTime4timeEv>)

inline const [time\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTime6time_tE> "LIEF::PE::PKCS9SigningTime::time_t") &amp;time() const

Time as an array [year, month, day, hour, min, sec].

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16PKCS9SigningTime5printEv>)

virtual std::string print() const override

Print information about the attribute.

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16PKCS9SigningTime5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16PKCS9SigningTime6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~PKCS9SigningTime `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTimeD0Ev>)

~PKCS9SigningTime() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16PKCS9SigningTime7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [Signature SpcSpOpusInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-spcspopusinfo>)

### [` SpcSpOpusInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13SpcSpOpusInfoE>)

class SpcSpOpusInfo : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Interface over the structure described by the OID `1.3.6.1.4.1.311.2.1.12`.

The internal structure is described in the official document: [Windows Authenticode Portable Executable Signature Format](<http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx>)

```text
SpcSpOpusInfo ::= SEQUENCE {
    programName  [0] EXPLICIT SpcString OPTIONAL,
    moreInfo     [1] EXPLICIT SpcLink OPTIONAL
}
```

Public Functions

#### [` SpcSpOpusInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13SpcSpOpusInfo13SpcSpOpusInfoENSt6stringENSt6stringE>)

inline SpcSpOpusInfo(std::string program\_name, std::string more\_info)

#### [` SpcSpOpusInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13SpcSpOpusInfo13SpcSpOpusInfoEv>)

inline SpcSpOpusInfo()

#### [` SpcSpOpusInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13SpcSpOpusInfo13SpcSpOpusInfoERK13SpcSpOpusInfo>)

SpcSpOpusInfo(const [SpcSpOpusInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13SpcSpOpusInfo13SpcSpOpusInfoERK13SpcSpOpusInfo> "LIEF::PE::SpcSpOpusInfo::SpcSpOpusInfo")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13SpcSpOpusInfoaSERK13SpcSpOpusInfo>)

[SpcSpOpusInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13SpcSpOpusInfoE> "LIEF::PE::SpcSpOpusInfo") &amp;operator=(const [SpcSpOpusInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13SpcSpOpusInfoE> "LIEF::PE::SpcSpOpusInfo")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13SpcSpOpusInfo5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` program_name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13SpcSpOpusInfo12program_nameEv>)

inline std::string\_view program\_name() const

Program description provided by the publisher.

#### [` more_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13SpcSpOpusInfo9more_infoEv>)

inline std::string\_view more\_info() const

Other information such as a URL.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13SpcSpOpusInfo5printEv>)

virtual std::string print() const override

Print information about the attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13SpcSpOpusInfo6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~SpcSpOpusInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13SpcSpOpusInfoD0Ev>)

~SpcSpOpusInfo() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13SpcSpOpusInfo7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [Signature SpcIndirectData](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-spcindirectdata>)

### [` SpcIndirectData `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectDataE>)

class SpcIndirectData : public LIEF::PE::[ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo")::[Content](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE> "LIEF::PE::ContentInfo::Content")

Public Functions

#### [` SpcIndirectData `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectData15SpcIndirectDataEv>)

inline SpcIndirectData()

#### [` SpcIndirectData `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectData15SpcIndirectDataERK15SpcIndirectData>)

SpcIndirectData(const [SpcIndirectData](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectData15SpcIndirectDataERK15SpcIndirectData> "LIEF::PE::SpcIndirectData::SpcIndirectData")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectDataaSERK15SpcIndirectData>)

[SpcIndirectData](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectDataE> "LIEF::PE::SpcIndirectData") &amp;operator=(const [SpcIndirectData](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectDataE> "LIEF::PE::SpcIndirectData")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15SpcIndirectData5cloneEv>)

inline virtual std::unique\_ptr&lt;Content&gt; clone() const override

#### [` digest_algorithm `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15SpcIndirectData16digest_algorithmEv>)

inline [ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") digest\_algorithm() const

Digest used to hash the file.

It should match [LIEF::PE::SignerInfo::digest\_algorithm](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo_1ae6772dcdb8c1d8554e1133dc4deb5b8e>)

#### [` digest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15SpcIndirectData6digestEv>)

inline span&lt;const uint8\_t&gt; digest() const

PE’s authentihash.

> **See also**
> 
> [LIEF::PE::Binary::authentihash](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary_1a12472d5636aed82a383039d289ab91bb>)

#### [` file `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15SpcIndirectData4fileEv>)

inline std::string\_view file() const

#### [` url `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15SpcIndirectData3urlEv>)

inline std::string\_view url() const

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15SpcIndirectData5printERNSt7ostreamE>)

virtual void print(std::ostream &amp;os) const override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15SpcIndirectData6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~SpcIndirectData `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectDataD0Ev>)

~SpcIndirectData() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectData7classofEPKN11ContentInfo7ContentE>)

static inline bool classof(const [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo")::[Content](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE> "LIEF::PE::ContentInfo::Content") \*content)

Public Static Attributes

#### [` SPC_INDIRECT_DATA_OBJID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectData23SPC_INDIRECT_DATA_OBJIDE>)

static auto SPC\_INDIRECT\_DATA\_OBJID = "1.3.6.1.4.1.311.2.1.4"

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectDatalsERNSt7ostreamERK15SpcIndirectData>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [SpcIndirectData](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15SpcIndirectDataE> "LIEF::PE::SpcIndirectData") &amp;content)

---

## [Signature GenericContent](<https://lief.re/doc/latest/formats/pe/cpp.html#signature-genericcontent>)

### [` GenericContent `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContentE>)

class GenericContent : public LIEF::PE::[ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo")::[Content](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE> "LIEF::PE::ContentInfo::Content")

Public Functions

#### [` GenericContent `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContent14GenericContentEv>)

GenericContent()

#### [` GenericContent `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContent14GenericContentE5oid_t>)

GenericContent(oid\_t oid)

#### [` GenericContent `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContent14GenericContentERK14GenericContent>)

GenericContent(const [GenericContent](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContent14GenericContentERK14GenericContent> "LIEF::PE::GenericContent::GenericContent")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContentaSERK14GenericContent>)

[GenericContent](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContentE> "LIEF::PE::GenericContent") &amp;operator=(const [GenericContent](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContentE> "LIEF::PE::GenericContent")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14GenericContent5cloneEv>)

inline virtual std::unique\_ptr&lt;Content&gt; clone() const override

#### [` oid `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14GenericContent3oidEv>)

inline const oid\_t &amp;oid() const

#### [` raw `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14GenericContent3rawEv>)

inline span&lt;const uint8\_t&gt; raw() const

#### [` raw `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContent3rawEv>)

inline span&lt;uint8\_t&gt; raw()

#### [` ~GenericContent `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContentD0Ev>)

~GenericContent() override

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14GenericContent5printERNSt7ostreamE>)

virtual void print(std::ostream &amp;os) const override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14GenericContent6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContent7classofEPKN11ContentInfo7ContentE>)

static bool classof(const [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo")::[Content](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE> "LIEF::PE::ContentInfo::Content") \*content)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContentlsERNSt7ostreamERK14GenericContent>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [GenericContent](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14GenericContentE> "LIEF::PE::GenericContent") &amp;content)

---

## [RsaInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#rsainfo>)

### [` RsaInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfoE>)

class RsaInfo

Object that wraps a RSA key.

Public Types

#### [` rsa_ctx_handle `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo14rsa_ctx_handleE>)

using rsa\_ctx\_handle = void\*

#### [` bignum_wrapper_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo16bignum_wrapper_tE>)

using bignum\_wrapper\_t = std::vector&lt;uint8\_t&gt;

Container for BigInt.

Public Functions

#### [` RsaInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo7RsaInfoERK7RsaInfo>)

RsaInfo(const [RsaInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo7RsaInfoERK7RsaInfo> "LIEF::PE::RsaInfo::RsaInfo") &amp;other)

#### [` RsaInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo7RsaInfoERR7RsaInfo>)

RsaInfo([RsaInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo7RsaInfoERR7RsaInfo> "LIEF::PE::RsaInfo::RsaInfo") &amp;&amp;other)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfoaSE7RsaInfo>)

[RsaInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfoE> "LIEF::PE::RsaInfo") &amp;operator=([RsaInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfoE> "LIEF::PE::RsaInfo") other)

#### [` has_public_key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7RsaInfo14has_public_keyEv>)

bool has\_public\_key() const

True if it embeds a public key.

#### [` has_private_key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7RsaInfo15has_private_keyEv>)

bool has\_private\_key() const

True if it embeds a private key.

#### [` N `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7RsaInfo1NEv>)

[bignum\_wrapper\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo16bignum_wrapper_tE> "LIEF::PE::RsaInfo::bignum_wrapper_t") N() const

RSA public modulus.

#### [` E `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7RsaInfo1EEv>)

[bignum\_wrapper\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo16bignum_wrapper_tE> "LIEF::PE::RsaInfo::bignum_wrapper_t") E() const

RSA public exponent.

#### [` D `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7RsaInfo1DEv>)

[bignum\_wrapper\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo16bignum_wrapper_tE> "LIEF::PE::RsaInfo::bignum_wrapper_t") D() const

RSA private exponent.

#### [` P `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7RsaInfo1PEv>)

[bignum\_wrapper\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo16bignum_wrapper_tE> "LIEF::PE::RsaInfo::bignum_wrapper_t") P() const

First prime factor.

#### [` Q `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7RsaInfo1QEv>)

[bignum\_wrapper\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo16bignum_wrapper_tE> "LIEF::PE::RsaInfo::bignum_wrapper_t") Q() const

Second prime factor.

#### [` key_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7RsaInfo8key_sizeEv>)

size\_t key\_size() const

Size of the public modulus (in bits).

#### [` swap `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfo4swapER7RsaInfo>)

void swap([RsaInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfoE> "LIEF::PE::RsaInfo") &amp;other)

#### [` operator bool `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7RsaInfocvbEv>)

operator bool() const

#### [` ~RsaInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfoD0Ev>)

~RsaInfo()

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfolsERNSt7ostreamERK7RsaInfo>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [RsaInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfoE> "LIEF::PE::RsaInfo") &amp;info)

---

## [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#x509>)

### [` x509 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E>)

class x509 : public LIEF::Object

Interface over a [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate.

Public Types

#### [` KEY_TYPES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_TYPESE>)

enum class KEY\_TYPES : uint32\_t

Public key scheme.

*Values:*

##### [` NONE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_TYPES4NONEE>)

enumerator NONE = 0

Unknown scheme.

##### [` RSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_TYPES3RSAE>)

enumerator RSA

RSA Scheme.

##### [` ECKEY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_TYPES5ECKEYE>)

enumerator ECKEY

Elliptic-curve scheme.

##### [` ECKEY_DH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_TYPES8ECKEY_DHE>)

enumerator ECKEY\_DH

Elliptic-curve Diffie-Hellman.

##### [` ECDSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_TYPES5ECDSAE>)

enumerator ECDSA

Elliptic-curve Digital [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>) Algorithm.

##### [` RSA_ALT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_TYPES7RSA_ALTE>)

enumerator RSA\_ALT

RSA scheme with an alternative implementation for signing and decrypting.

##### [` RSASSA_PSS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_TYPES10RSASSA_PSSE>)

enumerator RSASSA\_PSS

RSA Probabilistic signature scheme.

#### [` VERIFICATION_FLAGS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGSE>)

enum class VERIFICATION\_FLAGS : uint32\_t

Mirror of mbedtls’s X509 Verify codes: MBEDTLS\_X509\_XX.

It must be sync with include/mbedtls/x509.h

*Values:*

##### [` OK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS2OKE>)

enumerator OK = 0

The verification succeed.

##### [` BADCERT_EXPIRED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS15BADCERT_EXPIREDE>)

enumerator BADCERT\_EXPIRED = 1 &lt;&lt; 0

The certificate validity has expired.

##### [` BADCERT_REVOKED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS15BADCERT_REVOKEDE>)

enumerator BADCERT\_REVOKED = 1 &lt;&lt; 1

The certificate has been revoked (is on a CRL).

##### [` BADCERT_CN_MISMATCH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS19BADCERT_CN_MISMATCHE>)

enumerator BADCERT\_CN\_MISMATCH = 1 &lt;&lt; 2

The certificate Common Name (CN) does not match with the expected CN.

##### [` BADCERT_NOT_TRUSTED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS19BADCERT_NOT_TRUSTEDE>)

enumerator BADCERT\_NOT\_TRUSTED = 1 &lt;&lt; 3

The certificate is not correctly signed by the trusted CA.

##### [` BADCRL_NOT_TRUSTED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS18BADCRL_NOT_TRUSTEDE>)

enumerator BADCRL\_NOT\_TRUSTED = 1 &lt;&lt; 4

The CRL is not correctly signed by the trusted CA.

##### [` BADCRL_EXPIRED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS14BADCRL_EXPIREDE>)

enumerator BADCRL\_EXPIRED = 1 &lt;&lt; 5

The CRL is expired.

##### [` BADCERT_MISSING `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS15BADCERT_MISSINGE>)

enumerator BADCERT\_MISSING = 1 &lt;&lt; 6

Certificate was missing.

##### [` BADCERT_SKIP_VERIFY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS19BADCERT_SKIP_VERIFYE>)

enumerator BADCERT\_SKIP\_VERIFY = 1 &lt;&lt; 7

Certificate verification was skipped.

##### [` BADCERT_OTHER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS13BADCERT_OTHERE>)

enumerator BADCERT\_OTHER = 1 &lt;&lt; 8

Other reason (can be used by verify callback).

##### [` BADCERT_FUTURE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS14BADCERT_FUTUREE>)

enumerator BADCERT\_FUTURE = 1 &lt;&lt; 9

The certificate validity starts in the future.

##### [` BADCRL_FUTURE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS13BADCRL_FUTUREE>)

enumerator BADCRL\_FUTURE = 1 &lt;&lt; 10

The CRL is from the future.

##### [` BADCERT_KEY_USAGE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS17BADCERT_KEY_USAGEE>)

enumerator BADCERT\_KEY\_USAGE = 1 &lt;&lt; 11

Usage does not match the keyUsage extension.

##### [` BADCERT_EXT_KEY_USAGE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS21BADCERT_EXT_KEY_USAGEE>)

enumerator BADCERT\_EXT\_KEY\_USAGE = 1 &lt;&lt; 12

Usage does not match the extendedKeyUsage extension.

##### [` BADCERT_NS_CERT_TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS20BADCERT_NS_CERT_TYPEE>)

enumerator BADCERT\_NS\_CERT\_TYPE = 1 &lt;&lt; 13

Usage does not match the nsCertType extension.

##### [` BADCERT_BAD_MD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS14BADCERT_BAD_MDE>)

enumerator BADCERT\_BAD\_MD = 1 &lt;&lt; 14

The certificate is signed with an unacceptable hash.

##### [` BADCERT_BAD_PK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS14BADCERT_BAD_PKE>)

enumerator BADCERT\_BAD\_PK = 1 &lt;&lt; 15

The certificate is signed with an unacceptable PK alg (e.g. RSA vs ECDSA).

##### [` BADCERT_BAD_KEY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS15BADCERT_BAD_KEYE>)

enumerator BADCERT\_BAD\_KEY = 1 &lt;&lt; 16

The certificate is signed with an unacceptable key (e.g. bad curve, RSA too short).

##### [` BADCRL_BAD_MD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS13BADCRL_BAD_MDE>)

enumerator BADCRL\_BAD\_MD = 1 &lt;&lt; 17

The CRL is signed with an unacceptable hash.

##### [` BADCRL_BAD_PK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS13BADCRL_BAD_PKE>)

enumerator BADCRL\_BAD\_PK = 1 &lt;&lt; 18

The CRL is signed with an unacceptable PK alg (e.g. RSA vs ECDSA).

##### [` BADCRL_BAD_KEY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGS14BADCRL_BAD_KEYE>)

enumerator BADCRL\_BAD\_KEY = 1 &lt;&lt; 19

The CRL is signed with an unacceptable key (e.g. bad curve, RSA too short).

#### [` KEY_USAGE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGEE>)

enum class KEY\_USAGE : uint32\_t

Key usage as defined in [RFC #5280 - section-4.2.1.3](<https://tools.ietf.org/html/rfc5280#section-4.2.1.3>).

*Values:*

##### [` DIGITAL_SIGNATURE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGE17DIGITAL_SIGNATUREE>)

enumerator DIGITAL\_SIGNATURE = 0

The key is used for digital signature.

##### [` NON_REPUDIATION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGE15NON_REPUDIATIONE>)

enumerator NON\_REPUDIATION

The key is used for digital signature AND to protect against falsely denying some action.

##### [` KEY_ENCIPHERMENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGE16KEY_ENCIPHERMENTE>)

enumerator KEY\_ENCIPHERMENT

The key is used for enciphering private or secret keys.

##### [` DATA_ENCIPHERMENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGE17DATA_ENCIPHERMENTE>)

enumerator DATA\_ENCIPHERMENT

The key is used for directly enciphering raw user data without the use of an intermediate symmetric cipher.

##### [` KEY_AGREEMENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGE13KEY_AGREEMENTE>)

enumerator KEY\_AGREEMENT

The Key is used for key agreement. (e.g. with Diffie-Hellman).

##### [` KEY_CERT_SIGN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGE13KEY_CERT_SIGNE>)

enumerator KEY\_CERT\_SIGN

The key is used for verifying signatures on public key certificates.

##### [` CRL_SIGN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGE8CRL_SIGNE>)

enumerator CRL\_SIGN

The key is used for verifying signatures on certificate revocation lists.

##### [` ENCIPHER_ONLY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGE13ENCIPHER_ONLYE>)

enumerator ENCIPHER\_ONLY

In **association with** KEY\_AGREEMENT (otherwise the meaning is undefined), the key is only used for enciphering data while performing key agreement.

##### [` DECIPHER_ONLY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGE13DECIPHER_ONLYE>)

enumerator DECIPHER\_ONLY

In **association with** KEY\_AGREEMENT (otherwise the meaning is undefined), the key is only used for deciphering data while performing key agreement.

#### [` date_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5096date_tE>)

using date\_t = std::array&lt;int32\_t, 6&gt;

Tuple (Year, Month, Day, Hour, Minute, Second).

#### [` certificates_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50914certificates_tE>)

using certificates\_t = std::vector&lt;[x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509")&gt;

Public Functions

#### [` x509 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5094x509EP16mbedtls_x509_crt>)

x509(mbedtls\_x509\_crt \*ca)

#### [` x509 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5094x509ERK4x509>)

x509(const [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5094x509ERK4x509> "LIEF::PE::x509::x509") &amp;other)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509aSE4x509>)

[x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") &amp;operator=([x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") other)

#### [` swap `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5094swapER4x509>)

void swap([x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") &amp;other)

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5097versionEv>)

uint32\_t version() const

X.509 version. (1=v1, 2=v2, 3=v3).

#### [` serial_number `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x50913serial_numberEv>)

std::vector&lt;uint8\_t&gt; serial\_number() const

Unique id for certificate issued by a specific CA.

#### [` signature_algorithm `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x50919signature_algorithmEv>)

oid\_t signature\_algorithm() const

[Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>) algorithm (OID).

#### [` valid_from `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x50910valid_fromEv>)

[date\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5096date_tE> "LIEF::PE::x509::date_t") valid\_from() const

Start time of certificate validity.

#### [` valid_to `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5098valid_toEv>)

[date\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5096date_tE> "LIEF::PE::x509::date_t") valid\_to() const

End time of certificate validity.

#### [` issuer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5096issuerEv>)

std::string issuer() const

Issuer information.

#### [` subject `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5097subjectEv>)

std::string subject() const

Subject information.

#### [` check_signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x50915check_signatureERKNSt6vectorI7uint8_tEERKNSt6vectorI7uint8_tEE10ALGORITHMS>)

bool check\_signature(const std::vector&lt;uint8\_t&gt; &amp;hash, const std::vector&lt;uint8\_t&gt; &amp;signature, [ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") digest) const

Try to decrypt the given signature and check if it matches the given hash according to the hash algorithm provided.

#### [` raw `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5093rawEv>)

std::vector&lt;uint8\_t&gt; raw() const

The raw [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) bytes (DER encoded).

#### [` key_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5098key_typeEv>)

[KEY\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_TYPESE> "LIEF::PE::x509::KEY_TYPES") key\_type() const

Return the underlying public-key scheme.

#### [` rsa_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5098rsa_infoEv>)

std::unique\_ptr&lt;[RsaInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7RsaInfoE> "LIEF::PE::RsaInfo")&gt; rsa\_info() const

**If** the underlying public-key scheme is RSA, return the RSA information. Otherwise, return a nullptr

#### [` verify `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5096verifyERK4x509>)

[VERIFICATION\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGSE> "LIEF::PE::x509::VERIFICATION_FLAGS") verify(const [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") &amp;ca) const

Verify that this certificate has been used **to trust** the given certificate.

#### [` is_trusted_by `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x50913is_trusted_byERKNSt6vectorI4x509EE>)

[VERIFICATION\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50918VERIFICATION_FLAGSE> "LIEF::PE::x509::VERIFICATION_FLAGS") is\_trusted\_by(const std::vector&lt;[x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509")&gt; &amp;ca) const

Verify that this certificate **is trusted** by the given CA list.

#### [` certificate_policies `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x50920certificate_policiesEv>)

std::vector&lt;oid\_t&gt; certificate\_policies() const

Policy information terms as OID (see RFC #5280).

#### [` key_usage `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5099key_usageEv>)

std::vector&lt;[KEY\_USAGE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5099KEY_USAGEE> "LIEF::PE::x509::KEY_USAGE")&gt; key\_usage() const

Purpose of the key contained in the certificate.

#### [` ext_key_usage `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x50913ext_key_usageEv>)

std::vector&lt;oid\_t&gt; ext\_key\_usage() const

Indicates one or more purposes for which the certified public key may be used (OID types).

#### [` is_ca `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5095is_caEv>)

bool is\_ca() const

#### [` signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5099signatureEv>)

std::vector&lt;uint8\_t&gt; signature() const

The signature of the certificate.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4x5096acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~x509 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509D0Ev>)

~x509() override

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5095parseERKNSt6stringE>)

static [certificates\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50914certificates_tE> "LIEF::PE::x509::certificates_t") parse(const std::string &amp;path)

Parse [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate(s) from file path.

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5095parseERKNSt6vectorI7uint8_tEE>)

static [certificates\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50914certificates_tE> "LIEF::PE::x509::certificates_t") parse(const std::vector&lt;uint8\_t&gt; &amp;content)

Parse [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate(s) from raw blob.

#### [` check_time `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50910check_timeERK6date_tRK6date_t>)

static bool check\_time(const [date\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5096date_tE> "LIEF::PE::x509::date_t") &amp;before, const [date\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5096date_tE> "LIEF::PE::x509::date_t") &amp;after)

Return True if `before` is *before* than `after`. False otherwise.

#### [` time_is_past `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50912time_is_pastERK6date_t>)

static bool time\_is\_past(const [date\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5096date_tE> "LIEF::PE::x509::date_t") &amp;to)

True if the given time is in the **past** according to the clock’s system.

#### [` time_is_future `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x50914time_is_futureERK6date_t>)

static bool time\_is\_future(const [date\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x5096date_tE> "LIEF::PE::x509::date_t") &amp;from)

True if the given time is in the future according to the clock’s system.

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509lsERNSt7ostreamERK4x509>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") &amp;x509\_cert)

---

## [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#contentinfo>)

### [` ContentInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE>)

class ContentInfo : public LIEF::Object

[ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ContentInfo>) as described in the RFC2315 ([https://tools.ietf.org/html/rfc2315#section-7](<https://tools.ietf.org/html/rfc2315#section-7>))

```text
ContentInfo ::= SEQUENCE {
  contentType ContentType,
  content     [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL
}

ContentType ::= OBJECT IDENTIFIER
```

In the case of PE signature, [ContentType](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ContentType>) **must** be set to SPC\_INDIRECT\_DATA\_OBJID OID: `1.3.6.1.4.1.311.2.1.4` and content is defined by the structure: `SpcIndirectDataContent`

```text
SpcIndirectDataContent ::= SEQUENCE {
 data          SpcAttributeTypeAndOptionalValue,
 messageDigest DigestInfo
}

SpcAttributeTypeAndOptionalValue ::= SEQUENCE {
 type  ObjectID,
 value [0] EXPLICIT ANY OPTIONAL
}
```

For PE signature, `SpcAttributeTypeAndOptionalValue.type` is set to `SPC_PE_IMAGE_DATAOBJ` (OID: `1.3.6.1.4.1.311.2.1.15`) and the value is defined by `SpcPeImageData`

```text
DigestInfo ::= SEQUENCE {
 digestAlgorithm  AlgorithmIdentifier,
 digest           OCTETSTRING
}

AlgorithmIdentifier ::= SEQUENCE {
 algorithm  ObjectID,
 parameters [0] EXPLICIT ANY OPTIONAL
}
```

Public Functions

#### [` ContentInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo11ContentInfoEv>)

ContentInfo()

#### [` ContentInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo11ContentInfoERK11ContentInfo>)

ContentInfo(const [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo11ContentInfoERK11ContentInfo> "LIEF::PE::ContentInfo::ContentInfo") &amp;other)

#### [` ContentInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo11ContentInfoERR11ContentInfo>)

ContentInfo([ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo11ContentInfoERR11ContentInfo> "LIEF::PE::ContentInfo::ContentInfo") &amp;&amp;other) noexcept = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoaSE11ContentInfo>)

[ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo") &amp;operator=([ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo") other)

#### [` swap `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo4swapER11ContentInfo>)

void swap([ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo") &amp;other) noexcept

#### [` content_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentInfo12content_typeEv>)

inline oid\_t content\_type() const

Return the OID that describes the content wrapped by this object. It should match SPC\_INDIRECT\_DATA\_OBJID (1.3.6.1.4.1.311.2.1.4).

#### [` value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo5valueEv>)

inline [Content](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE> "LIEF::PE::ContentInfo::Content") &amp;value()

#### [` value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentInfo5valueEv>)

inline const [Content](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE> "LIEF::PE::ContentInfo::Content") &amp;value() const

#### [` digest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentInfo6digestEv>)

std::vector&lt;uint8\_t&gt; digest() const

Return the digest (authentihash) if the underlying content type is `SPC_INDIRECT_DATA_OBJID` Otherwise, return an empty vector.

#### [` digest_algorithm `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentInfo16digest_algorithmEv>)

[ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") digest\_algorithm() const

Return the digest used to hash the file.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentInfo6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~ContentInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoD0Ev>)

~ContentInfo() override = default

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfolsERNSt7ostreamERK11ContentInfo>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo") &amp;content\_info)

#### [` Content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE>)

class Content : public LIEF::Object

Subclassed by [LIEF::PE::GenericContent](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1GenericContent>), [LIEF::PE::PKCS9TSTInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1PKCS9TSTInfo>), [LIEF::PE::SpcIndirectData](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SpcIndirectData>)

Public Functions

##### [` Content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7Content7ContentE5oid_t>)

inline Content(oid\_t oid)

##### [` content_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentInfo7Content12content_typeEv>)

inline const oid\_t &amp;content\_type() const

##### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentInfo7Content5cloneEv>)

virtual std::unique\_ptr&lt;[Content](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE> "LIEF::PE::ContentInfo::Content")&gt; clone() const = 0

##### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ContentInfo7Content5printERNSt7ostreamE>)

virtual void print(std::ostream &amp;os) const = 0

##### [` Tcast `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE11ContentInfo7Content4castEPK1Tv>)

template&lt;class T&gt;  
inline const [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE11ContentInfo7Content4castEPK1Tv> "LIEF::PE::ContentInfo::Content::cast::T") \*cast() const

##### [` Tcast `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE11ContentInfo7Content4castEP1Tv>)

template&lt;class T&gt;  
inline [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE11ContentInfo7Content4castEP1Tv> "LIEF::PE::ContentInfo::Content::cast::T") \*cast()

##### [` ~Content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentD0Ev>)

~Content() override = default

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentlsERNSt7ostreamERK7Content>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Content](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE> "LIEF::PE::ContentInfo::Content") &amp;content)

---

## [SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#signerinfo>)

### [` SignerInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE>)

class SignerInfo : public LIEF::Object

[SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo>) as described in the [RFC 2315](<https://tools.ietf.org/html/rfc2315#section-9.2>)

```text
SignerInfo ::= SEQUENCE {
 version Version,
 issuerAndSerialNumber     IssuerAndSerialNumber,
 digestAlgorithm           DigestAlgorithmIdentifier,
 authenticatedAttributes   [0] IMPLICIT Attributes OPTIONAL,
 digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
 encryptedDigest           EncryptedDigest,
 unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
}

EncryptedDigest ::= OCTET STRING
```

Public Types

#### [` encrypted_digest_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo18encrypted_digest_tE>)

using encrypted\_digest\_t = std::vector&lt;uint8\_t&gt;

#### [` attributes_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo12attributes_tE>)

using attributes\_t = std::vector&lt;std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt;&gt;

Internal container used to store both authenticated and unauthenticated attributes.

#### [` it_const_attributes_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo21it_const_attributes_tE>)

using it\_const\_attributes\_t = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [attributes\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo12attributes_tE> "LIEF::PE::SignerInfo::attributes_t")&amp;, const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")\*&gt;

Iterator which outputs const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Attribute>)&amp;.

Public Functions

#### [` SignerInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo10SignerInfoEv>)

SignerInfo()

#### [` SignerInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo10SignerInfoERK10SignerInfo>)

SignerInfo(const [SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo10SignerInfoERK10SignerInfo> "LIEF::PE::SignerInfo::SignerInfo") &amp;other)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoaSE10SignerInfo>)

[SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo") &amp;operator=([SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo") other)

#### [` SignerInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo10SignerInfoERR10SignerInfo>)

SignerInfo([SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo10SignerInfoERR10SignerInfo> "LIEF::PE::SignerInfo::SignerInfo")&amp;&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoaSERR10SignerInfo>)

[SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo") &amp;operator=([SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo")&amp;&amp;)

#### [` swap `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo4swapER10SignerInfo>)

void swap([SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo") &amp;other)

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo7versionEv>)

inline uint32\_t version() const

Should be 1.

#### [` serial_number `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo13serial_numberEv>)

inline span&lt;const uint8\_t&gt; serial\_number() const

Return the serial number associated with the [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate used by this signer.

> **See also**
> 
> [LIEF::PE::x509::serial\_number](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509_1a1efd4c89ea429fd2a6e46197c7936ecb>) [SignerInfo::issuer](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo_1ac856b6196faf85c38e0189167217d703>)

#### [` issuer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo6issuerEv>)

inline std::string\_view issuer() const

Return the [x509::issuer](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509_1a01ea8e8f52e2e7aaef5bc0c03ed9c37d>) used by this signer.

#### [` digest_algorithm `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo16digest_algorithmEv>)

inline [ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") digest\_algorithm() const

Algorithm (OID) used to hash the file.

This value should match [LIEF::PE::ContentInfo::digest\_algorithm](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ContentInfo_1a0cafef41530fb92cdcae310e7dd0bdf9>) and [LIEF::PE::Signature::digest\_algorithm](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature_1aede85ccb45c1ea86f50b55aea5fa2dc2>)

#### [` encryption_algorithm `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo20encryption_algorithmEv>)

inline [ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") encryption\_algorithm() const

Return the (public-key) algorithm used to encrypt the signature.

#### [` encrypted_digest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo16encrypted_digestEv>)

inline const [encrypted\_digest\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo18encrypted_digest_tE> "LIEF::PE::SignerInfo::encrypted_digest_t") &amp;encrypted\_digest() const

Return the signature created by the signing certificate’s private key.

#### [` authenticated_attributes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo24authenticated_attributesEv>)

inline [it\_const\_attributes\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo21it_const_attributes_tE> "LIEF::PE::SignerInfo::it_const_attributes_t") authenticated\_attributes() const

Iterator over [LIEF::PE::Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Attribute>) for **authenticated** attributes.

#### [` unauthenticated_attributes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo26unauthenticated_attributesEv>)

inline [it\_const\_attributes\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo21it_const_attributes_tE> "LIEF::PE::SignerInfo::it_const_attributes_t") unauthenticated\_attributes() const

Iterator over [LIEF::PE::Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Attribute>) for **unauthenticated** attributes.

#### [` get_attribute `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo13get_attributeEN9Attribute4TYPEE>)

const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*get\_attribute([Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")::[TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPEE> "LIEF::PE::Attribute::TYPE") type) const

Return the authenticated or unauthenticated attribute matching the given PE::SIG\_ATTRIBUTE\_TYPES.

It returns **the first** entry that matches the given type. If it can’t be found, it returns a nullptr.

#### [` get_auth_attribute `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo18get_auth_attributeEN9Attribute4TYPEE>)

const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*get\_auth\_attribute([Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")::[TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPEE> "LIEF::PE::Attribute::TYPE") type) const

Return the authenticated attribute matching the given PE::SIG\_ATTRIBUTE\_TYPES.

It returns **the first** entry that matches the given type. If it can’t be found, it returns a nullptr.

#### [` get_unauth_attribute `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo20get_unauth_attributeEN9Attribute4TYPEE>)

const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*get\_unauth\_attribute([Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")::[TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9Attribute4TYPEE> "LIEF::PE::Attribute::TYPE") type) const

Return the unauthenticated attribute matching the given PE::SIG\_ATTRIBUTE\_TYPES.

It returns **the first** entry that matches the given type. If it can’t be found, it returns a nullptr.

#### [` cert `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo4certEv>)

inline const [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") \*cert() const

[x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate used by this signer. If it can’t be found, it returns a nullptr

#### [` cert `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfo4certEv>)

inline [x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509") \*cert()

[x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificate used by this signer. If it can’t be found, it returns a nullptr

#### [` raw_auth_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo13raw_auth_dataEv>)

inline span&lt;const uint8\_t&gt; raw\_auth\_data() const

Raw blob that is signed by the signer certificate.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10SignerInfo6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~SignerInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoD0Ev>)

~SignerInfo() override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfolsERNSt7ostreamERK10SignerInfo>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo") &amp;signer\_info)

---

## [MsCounterSign](<https://lief.re/doc/latest/formats/pe/cpp.html#mscountersign>)

### [` MsCounterSign `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSignE>)

class MsCounterSign : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

This class exposes the MS Counter [Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>) attribute.

Public Types

#### [` certificates_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign14certificates_tE>)

using certificates\_t = std::vector&lt;[x509](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4x509E> "LIEF::PE::x509")&gt;

#### [` it_const_certificates `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign21it_const_certificatesE>)

using it\_const\_certificates = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [certificates\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign14certificates_tE> "LIEF::PE::MsCounterSign::certificates_t")&amp;&gt;

#### [` it_certificates `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign15it_certificatesE>)

using it\_certificates = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[certificates\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign14certificates_tE> "LIEF::PE::MsCounterSign::certificates_t")&amp;&gt;

#### [` signers_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign9signers_tE>)

using signers\_t = std::vector&lt;[SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10SignerInfoE> "LIEF::PE::SignerInfo")&gt;

#### [` it_const_signers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign16it_const_signersE>)

using it\_const\_signers = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [signers\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign9signers_tE> "LIEF::PE::MsCounterSign::signers_t")&amp;&gt;

#### [` it_signers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign10it_signersE>)

using it\_signers = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[signers\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign9signers_tE> "LIEF::PE::MsCounterSign::signers_t")&amp;&gt;

Public Functions

#### [` MsCounterSign `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign13MsCounterSignEv>)

inline MsCounterSign()

#### [` MsCounterSign `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign13MsCounterSignERK13MsCounterSign>)

MsCounterSign(const [MsCounterSign](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign13MsCounterSignERK13MsCounterSign> "LIEF::PE::MsCounterSign::MsCounterSign")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSignaSERK13MsCounterSign>)

[MsCounterSign](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSignE> "LIEF::PE::MsCounterSign") &amp;operator=(const [MsCounterSign](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSignE> "LIEF::PE::MsCounterSign")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13MsCounterSign5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13MsCounterSign7versionEv>)

inline uint32\_t version() const

#### [` certificates `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13MsCounterSign12certificatesEv>)

inline [it\_const\_certificates](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign21it_const_certificatesE> "LIEF::PE::MsCounterSign::it_const_certificates") certificates() const

Iterator over the [LIEF::PE::x509](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1x509>) certificates of this counter signature.

#### [` certificates `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign12certificatesEv>)

inline [it\_certificates](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign15it_certificatesE> "LIEF::PE::MsCounterSign::it_certificates") certificates()

#### [` signers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13MsCounterSign7signersEv>)

inline [it\_const\_signers](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign16it_const_signersE> "LIEF::PE::MsCounterSign::it_const_signers") signers() const

Signer iterator (same as [LIEF::PE::SignerInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SignerInfo>)).

#### [` signers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign7signersEv>)

inline [it\_signers](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign10it_signersE> "LIEF::PE::MsCounterSign::it_signers") signers()

#### [` digest_algorithm `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13MsCounterSign16digest_algorithmEv>)

inline [ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") digest\_algorithm() const

#### [` content_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13MsCounterSign12content_infoEv>)

inline const [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo") &amp;content\_info() const

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13MsCounterSign5printEv>)

virtual std::string print() const override

Print information about the underlying attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13MsCounterSign6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~MsCounterSign `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSignD0Ev>)

~MsCounterSign() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13MsCounterSign7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [PKCS9TSTInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#pkcs9tstinfo>)

### [` PKCS9TSTInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12PKCS9TSTInfoE>)

class PKCS9TSTInfo : public LIEF::PE::[ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo")::[Content](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE> "LIEF::PE::ContentInfo::Content")

Interface over the structure described by the OID `1.2.840.113549.1.9.16.1.4` (PKCS #9).

The internal structure is described in the [RFC #3161](<https://tools.ietf.org/html/rfc3161>)

```text
TSTInfo ::= SEQUENCE  {
 version        INTEGER  { v1(1) },
 policy         TSAPolicyId,
 messageImprint MessageImprint,
 serialNumber   INTEGER,
 genTime        GeneralizedTime,
 accuracy       Accuracy                OPTIONAL,
 ordering       BOOLEAN                 DEFAULT FALSE,
 nonce          INTEGER                 OPTIONAL,
 tsa            [0] GeneralName         OPTIONAL,
 extensions     [1] IMPLICIT Extensions OPTIONAL
}

TSAPolicyId    ::= OBJECT IDENTIFIER
MessageImprint ::= SEQUENCE {
  hashAlgorithm  AlgorithmIdentifier,
  hashedMessage  OCTET STRING
}

Accuracy ::= SEQUENCE {
  seconds        INTEGER           OPTIONAL,
  millis     [0] INTEGER  (1..999) OPTIONAL,
  micros     [1] INTEGER  (1..999) OPTIONAL
}
```

Public Functions

#### [` PKCS9TSTInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12PKCS9TSTInfo12PKCS9TSTInfoEv>)

inline PKCS9TSTInfo()

#### [` PKCS9TSTInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12PKCS9TSTInfo12PKCS9TSTInfoERK12PKCS9TSTInfo>)

PKCS9TSTInfo(const [PKCS9TSTInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12PKCS9TSTInfo12PKCS9TSTInfoERK12PKCS9TSTInfo> "LIEF::PE::PKCS9TSTInfo::PKCS9TSTInfo")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12PKCS9TSTInfoaSERK12PKCS9TSTInfo>)

[PKCS9TSTInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12PKCS9TSTInfoE> "LIEF::PE::PKCS9TSTInfo") &amp;operator=(const [PKCS9TSTInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12PKCS9TSTInfoE> "LIEF::PE::PKCS9TSTInfo")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12PKCS9TSTInfo5cloneEv>)

inline virtual std::unique\_ptr&lt;Content&gt; clone() const override

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12PKCS9TSTInfo5printERNSt7ostreamE>)

inline virtual void print(std::ostream&amp;) const override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12PKCS9TSTInfo6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~PKCS9TSTInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12PKCS9TSTInfoD0Ev>)

~PKCS9TSTInfo() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12PKCS9TSTInfo7classofEPKN11ContentInfo7ContentE>)

static inline bool classof(const [ContentInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfoE> "LIEF::PE::ContentInfo")::[Content](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ContentInfo7ContentE> "LIEF::PE::ContentInfo::Content") \*content)

Public Static Attributes

#### [` PKCS9_TSTINFO_OBJID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12PKCS9TSTInfo19PKCS9_TSTINFO_OBJIDE>)

static auto PKCS9\_TSTINFO\_OBJID = "1.2.840.113549.1.9.16.1.4"

---

## [MsManifestBinaryID](<https://lief.re/doc/latest/formats/pe/cpp.html#msmanifestbinaryid>)

### [` MsManifestBinaryID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryIDE>)

class MsManifestBinaryID : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Interface over the structure described by the OID `1.3.6.1.4.1.311.10.3.28` (szOID\_PLATFORM\_MANIFEST\_BINARY\_ID).

The internal structure is not documented but we can infer the following structure:

```text
szOID_PLATFORM_MANIFEST_BINARY_ID ::= SET OF BinaryID
```

`BinaryID` being an alias of UTF8STRING

Public Functions

#### [` MsManifestBinaryID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryID18MsManifestBinaryIDEv>)

MsManifestBinaryID() = delete

#### [` MsManifestBinaryID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryID18MsManifestBinaryIDENSt6stringE>)

inline MsManifestBinaryID(std::string binid)

#### [` MsManifestBinaryID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryID18MsManifestBinaryIDERK18MsManifestBinaryID>)

MsManifestBinaryID(const [MsManifestBinaryID](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryID18MsManifestBinaryIDERK18MsManifestBinaryID> "LIEF::PE::MsManifestBinaryID::MsManifestBinaryID")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryIDaSERK18MsManifestBinaryID>)

[MsManifestBinaryID](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryIDE> "LIEF::PE::MsManifestBinaryID") &amp;operator=(const [MsManifestBinaryID](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryIDE> "LIEF::PE::MsManifestBinaryID")&amp;) = default

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18MsManifestBinaryID5printEv>)

inline virtual std::string print() const override

Print information about the attribute.

#### [` manifest_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18MsManifestBinaryID11manifest_idEv>)

inline std::string\_view manifest\_id() const

The manifest id as a string.

#### [` manifest_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryID11manifest_idERKNSt6stringE>)

inline void manifest\_id(const std::string &amp;id)

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18MsManifestBinaryID5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18MsManifestBinaryID6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~MsManifestBinaryID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryIDD0Ev>)

~MsManifestBinaryID() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18MsManifestBinaryID7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [SpcRelaxedPeMarkerCheck](<https://lief.re/doc/latest/formats/pe/cpp.html#spcrelaxedpemarkercheck>)

### [` SpcRelaxedPeMarkerCheck `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheckE>)

class SpcRelaxedPeMarkerCheck : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

Public Functions

#### [` SpcRelaxedPeMarkerCheck `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheck23SpcRelaxedPeMarkerCheckEv>)

inline SpcRelaxedPeMarkerCheck()

#### [` SpcRelaxedPeMarkerCheck `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheck23SpcRelaxedPeMarkerCheckE8uint32_t>)

inline SpcRelaxedPeMarkerCheck(uint32\_t value)

#### [` SpcRelaxedPeMarkerCheck `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheck23SpcRelaxedPeMarkerCheckERK23SpcRelaxedPeMarkerCheck>)

SpcRelaxedPeMarkerCheck(const [SpcRelaxedPeMarkerCheck](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheck23SpcRelaxedPeMarkerCheckERK23SpcRelaxedPeMarkerCheck> "LIEF::PE::SpcRelaxedPeMarkerCheck::SpcRelaxedPeMarkerCheck")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheckaSERK23SpcRelaxedPeMarkerCheck>)

[SpcRelaxedPeMarkerCheck](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheckE> "LIEF::PE::SpcRelaxedPeMarkerCheck") &amp;operator=(const [SpcRelaxedPeMarkerCheck](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheckE> "LIEF::PE::SpcRelaxedPeMarkerCheck")&amp;) = default

#### [` value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE23SpcRelaxedPeMarkerCheck5valueEv>)

inline uint32\_t value() const

#### [` value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheck5valueE8uint32_t>)

inline void value(uint32\_t v)

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE23SpcRelaxedPeMarkerCheck5cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE23SpcRelaxedPeMarkerCheck5printEv>)

inline virtual std::string print() const override

Print information about the underlying attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE23SpcRelaxedPeMarkerCheck6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~SpcRelaxedPeMarkerCheck `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheckD0Ev>)

~SpcRelaxedPeMarkerCheck() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23SpcRelaxedPeMarkerCheck7classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [SigningCertificateV2](<https://lief.re/doc/latest/formats/pe/cpp.html#signingcertificatev2>)

### [` SigningCertificateV2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20SigningCertificateV2E>)

class SigningCertificateV2 : public LIEF::PE::[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")

[SigningCertificateV2](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1SigningCertificateV2>) ::= SEQUENCE { certs SEQUENCE OF ESSCertIDv2, policies SEQUENCE OF PolicyInformation OPTIONAL }.

ESSCertIDv2 ::= SEQUENCE { hashAlgorithm AlgorithmIdentifier DEFAULT {algorithm id-sha256}, certHash OCTET STRING, issuerSerial IssuerSerial OPTIONAL }

IssuerSerial ::= SEQUENCE { issuer GeneralNames, serialNumber CertificateSerialNumber }

PolicyInformation ::= SEQUENCE { policyIdentifier OBJECT IDENTIFIER, policyQualifiers SEQUENCE SIZE (1..MAX) OF PolicyQualifierInfo OPTIONAL }

Public Functions

#### [` SigningCertificateV2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20SigningCertificateV220SigningCertificateV2Ev>)

inline SigningCertificateV2()

#### [` SigningCertificateV2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20SigningCertificateV220SigningCertificateV2ERK20SigningCertificateV2>)

SigningCertificateV2(const [SigningCertificateV2](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20SigningCertificateV220SigningCertificateV2ERK20SigningCertificateV2> "LIEF::PE::SigningCertificateV2::SigningCertificateV2")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20SigningCertificateV2aSERK20SigningCertificateV2>)

[SigningCertificateV2](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20SigningCertificateV2E> "LIEF::PE::SigningCertificateV2") &amp;operator=(const [SigningCertificateV2](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20SigningCertificateV2E> "LIEF::PE::SigningCertificateV2")&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20SigningCertificateV25cloneEv>)

inline virtual std::unique\_ptr&lt;[Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute")&gt; clone() const override

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20SigningCertificateV25printEv>)

virtual std::string print() const override

Print information about the underlying attribute.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20SigningCertificateV26acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~SigningCertificateV2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20SigningCertificateV2D0Ev>)

~SigningCertificateV2() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20SigningCertificateV27classofEPK9Attribute>)

static inline bool classof(const [Attribute](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9AttributeE> "LIEF::PE::Attribute") \*attr)

---

## [Builder](<https://lief.re/doc/latest/formats/pe/cpp.html#builder>)

### [` Builder `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7BuilderE>)

class Builder

Class that is used to rebuild a raw PE binary from a [PE::Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary>) object.

Public Functions

#### [` Builder `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder7BuilderEv>)

Builder() = delete

#### [` Builder `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder7BuilderER6Binary8config_t>)

inline Builder([Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary") &amp;binary, [config\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_tE> "LIEF::PE::Builder::config_t") config)

#### [` ~Builder `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7BuilderD0Ev>)

~Builder()

#### [` build `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder5buildEv>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build()

Perform the build process.

#### [` get_build `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder9get_buildEv>)

inline const std::vector&lt;uint8\_t&gt; &amp;get\_build()

Return the build result.

#### [` write `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Builder5writeERKNSt6stringE>)

void write(const std::string &amp;filename) const

Write the build result into the `output` file.

#### [` write `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Builder5writeERNSt7ostreamE>)

void write(std::ostream &amp;os) const

Write the build result into the `os` stream.

#### [` build `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder5buildERK9DosHeader>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build(const [DosHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9DosHeaderE> "LIEF::PE::DosHeader") &amp;dos\_header)

#### [` build `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder5buildERK6Header>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build(const [Header](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderE> "LIEF::PE::Header") &amp;header)

#### [` build `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder5buildERK14OptionalHeader>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build(const [OptionalHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14OptionalHeaderE> "LIEF::PE::OptionalHeader") &amp;optional\_header)

#### [` build `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder5buildERK13DataDirectory>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build(const [DataDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13DataDirectoryE> "LIEF::PE::DataDirectory") &amp;data\_directory)

#### [` build `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder5buildERK7Section>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build(const [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") &amp;section)

#### [` build_overlay `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder13build_overlayEv>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build\_overlay()

#### [` build_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder17build_relocationsEv>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build\_relocations()

#### [` build_resources `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder15build_resourcesEv>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build\_resources()

#### [` build_debug_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder16build_debug_infoEv>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build\_debug\_info()

#### [` build_exports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder13build_exportsEv>)

[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build\_exports()

#### [` PE_Tbuild_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE7Builder13build_importsE10ok_error_tv>)

template&lt;typename PE\_T&gt;  
[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build\_imports()

#### [` PE_Tbuild_tls `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE7Builder9build_tlsE10ok_error_tv>)

template&lt;typename PE\_T&gt;  
[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build\_tls()

#### [` PE_Tbuild_load_config `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE7Builder17build_load_configE10ok_error_tv>)

template&lt;typename PE\_T&gt;  
[ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") build\_load\_config()

#### [` rsrc_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE7Builder9rsrc_dataEv>)

inline const std::vector&lt;uint8\_t&gt; &amp;rsrc\_data() const

#### [` config_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_tE>)

struct config\_t

This structure is used to configure the build operation.

The default value of these attributes is set to `false` if the operation modifies the binary layout even though nothing changed. For instance, building the import table **always** requires relocating the table to another place. Thus, the default value is false and must be explicitly set to true.

Public Types

##### [` resolved_iat_cbk_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t18resolved_iat_cbk_tE>)

using resolved\_iat\_cbk\_t = std::function&lt;void([Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary")\*, const [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import")\*, const [ImportEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ImportEntryE> "LIEF::PE::ImportEntry")\*, uint32\_t)&gt;

Public Members

##### [` imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t7importsE>)

bool imports = false

Whether the builder should reconstruct the imports table. This option should be turned on if you modify imports.

Please check LIEF website for more details

##### [` exports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t7exportsE>)

bool exports = false

Whether the builder should reconstruct the export table This option should be turned on if you modify exports.

Please check LIEF website for more details

##### [` resources `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t9resourcesE>)

bool resources = true

Whether the builder should regenerate the resources tree.

##### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t11relocationsE>)

bool relocations = true

Whether the builder should regenerate relocations.

##### [` load_configuration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t18load_configurationE>)

bool load\_configuration = true

Whether the builder should regenerate the load config.

##### [` tls `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t3tlsE>)

bool tls = true

Whether the builder should regenerate the [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) info.

##### [` overlay `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t7overlayE>)

bool overlay = true

Whether the builder should write back any overlay data.

##### [` debug `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t5debugE>)

bool debug = true

Whether the builder should regenerate debug entries.

##### [` dos_stub `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t8dos_stubE>)

bool dos\_stub = true

Whether the builder should write back dos stub (including the rich header).

##### [` rsrc_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t12rsrc_sectionE>)

std::string rsrc\_section = ".rsrc"

If the resources tree needs to be relocated, this defines the name of the new section that contains the relocated tree.

##### [` idata_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t13idata_sectionE>)

std::string idata\_section = ".idata"

[Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>) that holds the relocated import table (IAT/ILT).

##### [` tls_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t11tls_sectionE>)

std::string tls\_section = ".tls"

[Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>) that holds the relocated [TLS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1TLS>) info.

##### [` reloc_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t13reloc_sectionE>)

std::string reloc\_section = ".reloc"

[Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>) that holds the relocated relocations.

##### [` export_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t14export_sectionE>)

std::string export\_section = ".edata"

[Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>) that holds the export table.

##### [` debug_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t13debug_sectionE>)

std::string debug\_section = ".debug"

[Section](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Section>) that holds the debug entries.

##### [` resolved_iat_cbk `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t16resolved_iat_cbkE>)

[resolved\_iat\_cbk\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7Builder8config_t18resolved_iat_cbk_tE> "LIEF::PE::Builder::config_t::resolved_iat_cbk_t") resolved\_iat\_cbk = nullptr

---

## [Resources Manager](<https://lief.re/doc/latest/formats/pe/cpp.html#resources-manager>)

### [` ResourcesManager `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManagerE>)

class ResourcesManager : public LIEF::Object

The Resource Manager provides an enhanced API to manipulate the resource tree.

Public Types

#### [` TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPEE>)

enum class TYPE

The different types of resources From [https://learn.microsoft.com/en-us/windows/win32/menurc/resource-types](<https://learn.microsoft.com/en-us/windows/win32/menurc/resource-types>).

*Values:*

##### [` CURSOR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE6CURSORE>)

enumerator CURSOR = 1

##### [` BITMAP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE6BITMAPE>)

enumerator BITMAP = 2

##### [` ICON `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE4ICONE>)

enumerator ICON = 3

##### [` MENU `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE4MENUE>)

enumerator MENU = 4

##### [` DIALOG `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE6DIALOGE>)

enumerator DIALOG = 5

##### [` STRING `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE6STRINGE>)

enumerator STRING = 6

##### [` FONTDIR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE7FONTDIRE>)

enumerator FONTDIR = 7

##### [` FONT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE4FONTE>)

enumerator FONT = 8

##### [` ACCELERATOR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE11ACCELERATORE>)

enumerator ACCELERATOR = 9

##### [` RCDATA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE6RCDATAE>)

enumerator RCDATA = 10

##### [` MESSAGETABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE12MESSAGETABLEE>)

enumerator MESSAGETABLE = 11

##### [` GROUP_CURSOR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE12GROUP_CURSORE>)

enumerator GROUP\_CURSOR = 12

##### [` GROUP_ICON `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE10GROUP_ICONE>)

enumerator GROUP\_ICON = 14

##### [` VERSION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE7VERSIONE>)

enumerator VERSION = 16

##### [` DLGINCLUDE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE10DLGINCLUDEE>)

enumerator DLGINCLUDE = 17

##### [` PLUGPLAY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE8PLUGPLAYE>)

enumerator PLUGPLAY = 19

##### [` VXD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE3VXDE>)

enumerator VXD = 20

##### [` ANICURSOR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE9ANICURSORE>)

enumerator ANICURSOR = 21

##### [` ANIICON `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE7ANIICONE>)

enumerator ANIICON = 22

##### [` HTML `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE4HTMLE>)

enumerator HTML = 23

##### [` MANIFEST `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPE8MANIFESTE>)

enumerator MANIFEST = 24

#### [` dialogs_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager9dialogs_tE>)

using dialogs\_t = [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")::[dialogs\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog9dialogs_tE> "LIEF::PE::ResourceDialog::dialogs_t")

#### [` it_const_dialogs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager16it_const_dialogsE>)

using it\_const\_dialogs = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [dialogs\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager9dialogs_tE> "LIEF::PE::ResourcesManager::dialogs_t")&amp;, const [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")\*&gt;

#### [` icons_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager7icons_tE>)

using icons\_t = std::vector&lt;[ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon")&gt;

#### [` it_const_icons `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager14it_const_iconsE>)

using it\_const\_icons = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;[icons\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager7icons_tE> "LIEF::PE::ResourcesManager::icons_t")&gt;

#### [` accelerators_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager14accelerators_tE>)

using accelerators\_t = std::vector&lt;[ResourceAccelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorE> "LIEF::PE::ResourceAccelerator")&gt;

#### [` it_const_accelerators `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager21it_const_acceleratorsE>)

using it\_const\_accelerators = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;[accelerators\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager14accelerators_tE> "LIEF::PE::ResourcesManager::accelerators_t")&gt;

#### [` strings_table_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager15strings_table_tE>)

using strings\_table\_t = std::vector&lt;[string\_entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager14string_entry_tE> "LIEF::PE::ResourcesManager::string_entry_t")&gt;

Public Functions

#### [` ResourcesManager `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager16ResourcesManagerEv>)

ResourcesManager() = delete

#### [` ResourcesManager `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager16ResourcesManagerER12ResourceNode>)

inline ResourcesManager([ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;rsrc)

#### [` ResourcesManager `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager16ResourcesManagerERK16ResourcesManager>)

inline ResourcesManager(const [ResourcesManager](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager16ResourcesManagerERK16ResourcesManager> "LIEF::PE::ResourcesManager::ResourcesManager") &amp;other)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManageraSERK16ResourcesManager>)

inline [ResourcesManager](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManagerE> "LIEF::PE::ResourcesManager") &amp;operator=(const [ResourcesManager](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManagerE> "LIEF::PE::ResourcesManager") &amp;other)

#### [` ResourcesManager `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager16ResourcesManagerERR16ResourcesManager>)

ResourcesManager([ResourcesManager](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager16ResourcesManagerERR16ResourcesManager> "LIEF::PE::ResourcesManager::ResourcesManager")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManageraSERR16ResourcesManager>)

[ResourcesManager](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManagerE> "LIEF::PE::ResourcesManager") &amp;operator=([ResourcesManager](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManagerE> "LIEF::PE::ResourcesManager")&amp;&amp;) = default

#### [` ~ResourcesManager `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManagerD0Ev>)

~ResourcesManager() override = default

#### [` get_node_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager13get_node_typeE4TYPE>)

inline [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") \*get\_node\_type([TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPEE> "LIEF::PE::ResourcesManager::TYPE") type)

Return the [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceNode>) associated with the given [TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourcesManager_1aae25bf71c626aefc4b20e4b4a99e35d3>) or a nullptr if not found;.

#### [` get_node_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager13get_node_typeE4TYPE>)

const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") \*get\_node\_type([TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPEE> "LIEF::PE::ResourcesManager::TYPE") type) const

#### [` get_types `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager9get_typesEv>)

std::vector&lt;[TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPEE> "LIEF::PE::ResourcesManager::TYPE")&gt; get\_types() const

List of [TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourcesManager_1aae25bf71c626aefc4b20e4b4a99e35d3>) present in the resources.

#### [` has_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager8has_typeE4TYPE>)

inline bool has\_type([TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager4TYPEE> "LIEF::PE::ResourcesManager::TYPE") type) const

`true` if the resource has the given [TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourcesManager_1aae25bf71c626aefc4b20e4b4a99e35d3>) node

#### [` has_manifest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager12has_manifestEv>)

inline bool has\_manifest() const

`true` if resources contain the Manifest element

#### [` manifest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager8manifestEv>)

std::string manifest() const

Return the manifest as a std::string or an empty string if not found or corrupted.

#### [` manifest `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager8manifestERKNSt6stringE>)

void manifest(const std::string &amp;manifest)

Change or set the manifest. If the manifest node path does not exist, all required nodes are created.

#### [` has_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager11has_versionEv>)

inline bool has\_version() const

`true` if resources contain a [LIEF::PE::ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceVersion>)

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager7versionEv>)

std::vector&lt;[ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion")&gt; version() const

Return a list of version info (`VS_VERSIONINFO`).

#### [` has_icons `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager9has_iconsEv>)

inline bool has\_icons() const

`true` if resources contain a [LIEF::PE::ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceIcon>)

#### [` icons `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager5iconsEv>)

[it\_const\_icons](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager14it_const_iconsE> "LIEF::PE::ResourcesManager::it_const_icons") icons() const

Return the list of the icons present in the resources.

#### [` add_icon `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager8add_iconERK12ResourceIcon>)

void add\_icon(const [ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon") &amp;icon)

Add an icon to the resources.

#### [` change_icon `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager11change_iconERK12ResourceIconRK12ResourceIcon>)

void change\_icon(const [ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon") &amp;original, const [ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon") &amp;newone)

#### [` has_dialogs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager11has_dialogsEv>)

inline bool has\_dialogs() const

`true` if resources contain dialogs

#### [` dialogs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager7dialogsEv>)

[it\_const\_dialogs](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager16it_const_dialogsE> "LIEF::PE::ResourcesManager::it_const_dialogs") dialogs() const

Return the list of the dialogs present in the resource.

#### [` has_string_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager16has_string_tableEv>)

inline bool has\_string\_table() const

`true` if the resources contain a string table

#### [` string_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager12string_tableEv>)

[strings\_table\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager15strings_table_tE> "LIEF::PE::ResourcesManager::strings_table_t") string\_table() const

Return the list of the strings embedded in the string table (`RT_STRING`).

#### [` has_html `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager8has_htmlEv>)

inline bool has\_html() const

`true` if the resources contain html

#### [` html `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager4htmlEv>)

std::vector&lt;std::string&gt; html() const

Return the list of the html resources.

#### [` has_accelerator `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager15has_acceleratorEv>)

inline bool has\_accelerator() const

`true` if the resources contain accelerator info

#### [` accelerator `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager11acceleratorEv>)

[it\_const\_accelerators](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager21it_const_acceleratorsE> "LIEF::PE::ResourcesManager::it_const_accelerators") accelerator() const

Return the list of the accelerator in the resource.

#### [` print `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager5printE8uint32_t>)

std::string print(uint32\_t depth = 0) const

Print the resource tree to the given depth.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManagerlsERNSt7ostreamERK16ResourcesManager>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ResourcesManager](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManagerE> "LIEF::PE::ResourcesManager") &amp;m)

#### [` string_entry_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager14string_entry_tE>)

struct string\_entry\_t

This structure represent an entry in the string table (`RT_STRING`).

Public Functions

##### [` string_u8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager14string_entry_t9string_u8Ev>)

std::string string\_u8() const

##### [` is_defined `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager14string_entry_t10is_definedEv>)

inline bool is\_defined() const

##### [` operator bool `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16ResourcesManager14string_entry_tcvbEv>)

inline operator bool() const

Public Members

##### [` string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager14string_entry_t6stringE>)

std::u16string string

##### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager14string_entry_t2idE>)

uint32\_t id = 0

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager14string_entry_tlsERNSt7ostreamERK14string_entry_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [string\_entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16ResourcesManager14string_entry_tE> "LIEF::PE::ResourcesManager::string_entry_t") &amp;str)

---

## [Resource Node](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-node>)

### [` ResourceNode `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE>)

class ResourceNode : public LIEF::Object

Class which represents a Node in the resource tree.

Subclassed by [LIEF::PE::ResourceData](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceData>), [LIEF::PE::ResourceDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDirectory>)

Public Types

#### [` TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode4TYPEE>)

enum class TYPE

Enum that identifies the type of a node in the resource tree.

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode4TYPE7UNKNOWNE>)

enumerator UNKNOWN = 0

##### [` DATA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode4TYPE4DATAE>)

enumerator DATA

##### [` DIRECTORY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode4TYPE9DIRECTORYE>)

enumerator DIRECTORY

#### [` childs_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode8childs_tE>)

using childs\_t = std::vector&lt;std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt;&gt;

#### [` it_childs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode9it_childsE>)

using it\_childs = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[childs\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode8childs_tE> "LIEF::PE::ResourceNode::childs_t")&amp;, [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")\*&gt;

#### [` it_const_childs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode15it_const_childsE>)

using it\_const\_childs = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [childs\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode8childs_tE> "LIEF::PE::ResourceNode::childs_t")&amp;, [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")\*&gt;

Public Functions

#### [` ResourceNode `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode12ResourceNodeERK12ResourceNode>)

ResourceNode(const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode12ResourceNodeERK12ResourceNode> "LIEF::PE::ResourceNode::ResourceNode") &amp;other)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeaSERK12ResourceNode>)

[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;operator=(const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;other)

#### [` ResourceNode `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode12ResourceNodeERR12ResourceNode>)

ResourceNode([ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode12ResourceNodeERR12ResourceNode> "LIEF::PE::ResourceNode::ResourceNode") &amp;&amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeaSERR12ResourceNode>)

[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;operator=([ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;&amp;other) = default

#### [` swap `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode4swapER12ResourceNode>)

void swap([ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;other)

#### [` ~ResourceNode `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeD0Ev>)

~ResourceNode() override

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode5cloneEv>)

virtual std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; clone() const = 0

#### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode2idEv>)

inline uint32\_t id() const

Integer that identifies the Type, Name, or Language ID of the entry depending on its depth in the tree.

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode4nameEv>)

inline const std::u16string &amp;name() const

Name of the entry (if any).

#### [` utf8_name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode9utf8_nameEv>)

std::string utf8\_name() const

UTF-8 representation of the [name()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceNode_1a2aeb7d69724ff6e5f096a6f39bd8d70a>).

#### [` childs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode6childsEv>)

inline [it\_childs](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode9it_childsE> "LIEF::PE::ResourceNode::it_childs") childs()

Iterator on node’s children.

#### [` childs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode6childsEv>)

inline [it\_const\_childs](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode15it_const_childsE> "LIEF::PE::ResourceNode::it_const_childs") childs() const

#### [` has_name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode8has_nameEv>)

inline bool has\_name() const

`True` if the entry uses a name as ID

#### [` depth `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode5depthEv>)

inline uint32\_t depth() const

Current depth of the Node in the resource tree.

#### [` is_directory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode12is_directoryEv>)

inline bool is\_directory() const

`True` if the current entry is a [ResourceDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDirectory>).

It can be safely cast with:

```cpp
const auto* dir_node = node.cast<ResourceDirectory>();
```

#### [` is_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode7is_dataEv>)

inline bool is\_data() const

`True` if the current entry is a [ResourceData](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceData>).

It can be safely cast with:

```cpp
const auto* data_node = node.cast<ResourceData>();
```

#### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode2idE8uint32_t>)

inline void id(uint32\_t id)

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode4nameERKNSt6stringE>)

void name(const std::string &amp;name)

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode4nameENSt9u16stringE>)

inline void name(std::u16string name)

#### [` add_child `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode9add_childENSt10unique_ptrI12ResourceNodeEE>)

[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;add\_child(std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; child)

Add a new child to the current node, taking the ownership of the provided `unique_ptr`.

#### [` add_child `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode9add_childERK12ResourceNode>)

inline [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;add\_child(const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;child)

Add a new child to the current node.

#### [` delete_child `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode12delete_childE8uint32_t>)

void delete\_child(uint32\_t id)

Delete the node with the given `id`.

#### [` delete_child `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode12delete_childERK12ResourceNode>)

void delete\_child(const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;node)

Delete the given node from the node’s children.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` Tcast `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE12ResourceNode4castEPK1Tv>)

template&lt;class T&gt;  
inline const [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE12ResourceNode4castEPK1Tv> "LIEF::PE::ResourceNode::cast::T") \*cast() const

#### [` Tcast `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE12ResourceNode4castEP1Tv>)

template&lt;class T&gt;  
inline [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE12ResourceNode4castEP1Tv> "LIEF::PE::ResourceNode::cast::T") \*cast()

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceNode9to_stringEv>)

inline std::string to\_string() const

#### [` push_child `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode10push_childENSt10unique_ptrI12ResourceNodeEE>)

inline void push\_child(std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; node)

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode5parseER12BinaryStream8uint64_t>)

static std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; parse([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream, uint64\_t rva)

Parse the resource tree from the provided [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#classLIEF_1_1BinaryStream>) stream and with the original RVA provided in the second parameter.

The RVA value should come from the [DataDirectory::RVA](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DataDirectory_1a22d466ecb48152b89db82557179c52aa>) associated with the resource tree.

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode5parseEPK7uint8_t6size_t8uint64_t>)

static std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; parse(const uint8\_t \*buffer, size\_t size, uint64\_t rva)

Parse the resource tree from the provided buffer referenced by a pointer and the size. The second parameter is the RVA where the resource is (or was) located.

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode5parseERKNSt6vectorI7uint8_tEE8uint64_t>)

static inline std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; parse(const std::vector&lt;uint8\_t&gt; &amp;buffer, uint64\_t rva)

See doc from other parse functions.

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode5parseE4spanIK7uint8_tE8uint64_t>)

static inline std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; parse(span&lt;const uint8\_t&gt; buffer, uint64\_t rva)

See doc from other parse functions.

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNode5parseER12BinaryStreamRK6Binary>)

static std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; parse([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream, const [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary") &amp;bin)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodelsERNSt7ostreamERK12ResourceNode>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;node)

#### [` operator== `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeeqERK12ResourceNodeRK12ResourceNode>)

friend bool operator==(const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;LHS, const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;RHS)

#### [` operator!= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeneERK12ResourceNodeRK12ResourceNode>)

inline friend bool operator!=(const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;LHS, const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") &amp;RHS)

---

## [Resource Directory](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-directory>)

### [` ResourceDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectoryE>)

class ResourceDirectory : public LIEF::PE::[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")

Public Functions

#### [` ResourceDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory17ResourceDirectoryEv>)

inline ResourceDirectory()

#### [` ResourceDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory17ResourceDirectoryE8uint32_t>)

inline ResourceDirectory(uint32\_t id)

#### [` ResourceDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory17ResourceDirectoryERKN7details27pe_resource_directory_tableE>)

ResourceDirectory(const details::pe\_resource\_directory\_table &amp;header)

#### [` ResourceDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory17ResourceDirectoryERK17ResourceDirectory>)

ResourceDirectory(const [ResourceDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory17ResourceDirectoryERK17ResourceDirectory> "LIEF::PE::ResourceDirectory::ResourceDirectory") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectoryaSERK17ResourceDirectory>)

[ResourceDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectoryE> "LIEF::PE::ResourceDirectory") &amp;operator=(const [ResourceDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectoryE> "LIEF::PE::ResourceDirectory") &amp;other) = default

#### [` swap `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory4swapER17ResourceDirectory>)

void swap([ResourceDirectory](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectoryE> "LIEF::PE::ResourceDirectory") &amp;other) noexcept

#### [` ~ResourceDirectory `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectoryD0Ev>)

~ResourceDirectory() override = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17ResourceDirectory5cloneEv>)

inline virtual std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; clone() const override

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17ResourceDirectory15characteristicsEv>)

inline uint32\_t characteristics() const

Resource characteristics. This field is reserved for future use. It is currently set to zero.

#### [` time_date_stamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17ResourceDirectory15time_date_stampEv>)

inline uint32\_t time\_date\_stamp() const

The time that the resource data was created by the resource compiler.

#### [` major_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17ResourceDirectory13major_versionEv>)

inline uint16\_t major\_version() const

The major version number, set by the user.

#### [` minor_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17ResourceDirectory13minor_versionEv>)

inline uint16\_t minor\_version() const

The minor version number, set by the user.

#### [` numberof_name_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17ResourceDirectory21numberof_name_entriesEv>)

inline uint16\_t numberof\_name\_entries() const

The number of directory entries immediately following the table that use strings to identify Type, Name, or Language entries (depending on the level of the table).

#### [` numberof_id_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17ResourceDirectory19numberof_id_entriesEv>)

inline uint16\_t numberof\_id\_entries() const

The number of directory entries immediately following the Name entries that use numeric IDs for Type, Name, or Language entries.

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory15characteristicsE8uint32_t>)

inline void characteristics(uint32\_t characteristics)

#### [` time_date_stamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory15time_date_stampE8uint32_t>)

inline void time\_date\_stamp(uint32\_t time\_date\_stamp)

#### [` major_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory13major_versionE8uint16_t>)

inline void major\_version(uint16\_t major\_version)

#### [` minor_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory13minor_versionE8uint16_t>)

inline void minor\_version(uint16\_t minor\_version)

#### [` numberof_name_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory21numberof_name_entriesE8uint16_t>)

inline void numberof\_name\_entries(uint16\_t numberof\_name\_entries)

#### [` numberof_id_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory19numberof_id_entriesE8uint16_t>)

inline void numberof\_id\_entries(uint16\_t numberof\_id\_entries)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17ResourceDirectory6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ResourceDirectory7classofEPK12ResourceNode>)

static inline bool classof(const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") \*node)

---

## [Resource Data](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-data>)

### [` ResourceData `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceDataE>)

class ResourceData : public LIEF::PE::[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")

Class which represents a Data Node in the PE resources tree.

Public Functions

#### [` ResourceData `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData12ResourceDataEv>)

inline ResourceData()

#### [` ResourceData `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData12ResourceDataENSt6vectorI7uint8_tEE8uint32_t>)

inline ResourceData(std::vector&lt;uint8\_t&gt; content, uint32\_t code\_page = 0)

#### [` ResourceData `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData12ResourceDataERKNSt6stringE8uint32_t>)

inline ResourceData(const std::string &amp;str, uint32\_t code\_page = 0)

#### [` ResourceData `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData12ResourceDataERK12ResourceData>)

ResourceData(const [ResourceData](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData12ResourceDataERK12ResourceData> "LIEF::PE::ResourceData::ResourceData") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceDataaSERK12ResourceData>)

[ResourceData](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceDataE> "LIEF::PE::ResourceData") &amp;operator=(const [ResourceData](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceDataE> "LIEF::PE::ResourceData") &amp;other) = default

#### [` swap `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData4swapER12ResourceData>)

void swap([ResourceData](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceDataE> "LIEF::PE::ResourceData") &amp;other) noexcept

#### [` ~ResourceData `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceDataD0Ev>)

~ResourceData() override = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceData5cloneEv>)

inline virtual std::unique\_ptr&lt;[ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode")&gt; clone() const override

#### [` code_page `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceData9code_pageEv>)

inline uint32\_t code\_page() const

Return the code page that is used to decode code point values within the resource data. Typically, the code page is the unicode code page.

#### [` content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceData7contentEv>)

inline span&lt;const uint8\_t&gt; content() const

Resource content.

#### [` content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData7contentEv>)

inline span&lt;uint8\_t&gt; content()

#### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceData8reservedEv>)

inline uint32\_t reserved() const

Reserved value. Should be `0`.

#### [` offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceData6offsetEv>)

inline uint32\_t offset() const

Offset of the content within the resource.

> **Warning**
> 
> This value may change when rebuilding resource table

#### [` code_page `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData9code_pageE8uint32_t>)

inline void code\_page(uint32\_t code\_page)

#### [` content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData7contentENSt6vectorI7uint8_tEE>)

inline void content(std::vector&lt;uint8\_t&gt; content)

#### [` content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData7contentERKNSt6stringE>)

inline void content(const std::string &amp;string)

#### [` content `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData7contentEPK7uint8_t6size_t>)

inline void content(const uint8\_t \*buffer, size\_t size)

#### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData8reservedE8uint32_t>)

inline void reserved(uint32\_t value)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceData6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceData7classofEPK12ResourceNode>)

static inline bool classof(const [ResourceNode](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceNodeE> "LIEF::PE::ResourceNode") \*node)

---

## [Resource Icon](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-icon>)

### [` ResourceIcon `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE>)

class ResourceIcon : public LIEF::Object

Public Functions

#### [` ResourceIcon `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon12ResourceIconEv>)

ResourceIcon() = default

#### [` ResourceIcon `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon12ResourceIconERKN7details22pe_resource_icon_groupE>)

ResourceIcon(const details::pe\_resource\_icon\_group &amp;header)

#### [` ResourceIcon `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon12ResourceIconERKN7details14pe_icon_headerE>)

ResourceIcon(const details::pe\_icon\_header &amp;header)

#### [` ResourceIcon `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon12ResourceIconERK12ResourceIcon>)

ResourceIcon(const [ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon12ResourceIconERK12ResourceIcon> "LIEF::PE::ResourceIcon::ResourceIcon")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconaSERK12ResourceIcon>)

[ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon") &amp;operator=(const [ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon")&amp;) = default

#### [` ResourceIcon `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon12ResourceIconERR12ResourceIcon>)

ResourceIcon([ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon12ResourceIconERR12ResourceIcon> "LIEF::PE::ResourceIcon::ResourceIcon")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconaSERR12ResourceIcon>)

[ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon") &amp;operator=([ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon")&amp;&amp;) = default

#### [` ~ResourceIcon `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconD0Ev>)

~ResourceIcon() override = default

#### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon2idEv>)

inline uint32\_t id() const

Id associated with the icon.

#### [` lang `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon4langEv>)

inline uint32\_t lang() const

Language associated with the icon.

#### [` sublang `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon7sublangEv>)

inline uint32\_t sublang() const

Sub language associated with the icon.

#### [` width `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon5widthEv>)

inline uint8\_t width() const

Width in pixels of the image.

#### [` height `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon6heightEv>)

inline uint8\_t height() const

Height in pixels of the image.

#### [` color_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon11color_countEv>)

inline uint8\_t color\_count() const

Number of colors in image (0 if &gt;=8bpp).

#### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon8reservedEv>)

inline uint8\_t reserved() const

Reserved (must be 0).

#### [` planes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon6planesEv>)

inline uint16\_t planes() const

Color Planes.

#### [` bit_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon9bit_countEv>)

inline uint16\_t bit\_count() const

Bits per pixel.

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon4sizeEv>)

inline uint32\_t size() const

Size in bytes of the image.

#### [` pixels `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon6pixelsEv>)

inline span&lt;const uint8\_t&gt; pixels() const

Pixels of the image (as bytes).

#### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon2idE8uint32_t>)

inline void id(uint32\_t id)

#### [` lang `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon4langE8uint32_t>)

inline void lang(uint32\_t lang)

#### [` sublang `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon7sublangE8uint32_t>)

inline void sublang(uint32\_t sublang)

#### [` width `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon5widthE7uint8_t>)

inline void width(uint8\_t width)

#### [` height `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon6heightE7uint8_t>)

inline void height(uint8\_t height)

#### [` color_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon11color_countE7uint8_t>)

inline void color\_count(uint8\_t color\_count)

#### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon8reservedE7uint8_t>)

inline void reserved(uint8\_t reserved)

#### [` planes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon6planesE8uint16_t>)

inline void planes(uint16\_t planes)

#### [` bit_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon9bit_countE8uint16_t>)

inline void bit\_count(uint16\_t bit\_count)

#### [` pixels `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon6pixelsENSt6vectorI7uint8_tEE>)

inline void pixels(std::vector&lt;uint8\_t&gt; pixels)

#### [` save `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon4saveERKNSt6stringE>)

void save(const std::string &amp;filename) const

Save the icon to the given filename.

**Parameters:**

**filename** – **[in]** Path to file in which the icon will be saved

#### [` serialize `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon9serializeEv>)

std::vector&lt;uint8\_t&gt; serialize() const

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12ResourceIcon6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` from_serialization `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon18from_serializationEPK7uint8_t6size_t>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon")&gt; from\_serialization(const uint8\_t \*buffer, size\_t size)

#### [` from_serialization `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon18from_serializationERKNSt6vectorI7uint8_tEE>)

static inline [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon")&gt; from\_serialization(const std::vector&lt;uint8\_t&gt; &amp;bytes)

#### [` from_bytes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIcon10from_bytesEN4LIEF4spanIK7uint8_tEE>)

static inline [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon")&gt; from\_bytes(LIEF::span&lt;const uint8\_t&gt; bytes)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconlsERNSt7ostreamERK12ResourceIcon>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ResourceIcon](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceIconE> "LIEF::PE::ResourceIcon") &amp;entry)

---

## [Resource Dialog](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-dialog>)

### [` ResourceDialog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE>)

class ResourceDialog : public LIEF::Object

This class is the base class for either a regular (legacy) Dialog or an extended Dialog. These different kinds of Dialogs are documented by MS at the following addresses:

- [https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-dlgtemplate](<https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-dlgtemplate>)
- [https://learn.microsoft.com/fr-fr/windows/win32/dlgbox/dlgitemtemplateex](<https://learn.microsoft.com/fr-fr/windows/win32/dlgbox/dlgitemtemplateex>)

Subclassed by [LIEF::PE::ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialogExtended>), [LIEF::PE::ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialogRegular>)

Public Types

#### [` TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4TYPEE>)

enum class TYPE

Enum for discriminating the kind of the Dialog (regular vs extended).

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4TYPE7UNKNOWNE>)

enumerator UNKNOWN = 0

##### [` REGULAR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4TYPE7REGULARE>)

enumerator REGULAR

##### [` EXTENDED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4TYPE8EXTENDEDE>)

enumerator EXTENDED

#### [` DIALOG_STYLES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLESE>)

enum class DIALOG\_STYLES : uint32\_t

From: [https://learn.microsoft.com/en-us/windows/win32/dlgbox/dialog-box-styles](<https://learn.microsoft.com/en-us/windows/win32/dlgbox/dialog-box-styles>).

*Values:*

##### [` ABSALIGN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES8ABSALIGNE>)

enumerator ABSALIGN = 0x0001

##### [` SYSMODAL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES8SYSMODALE>)

enumerator SYSMODAL = 0x0002

##### [` LOCALEDIT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES9LOCALEDITE>)

enumerator LOCALEDIT = 0x0020

##### [` SETFONT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES7SETFONTE>)

enumerator SETFONT = 0x0040

##### [` MODALFRAME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES10MODALFRAMEE>)

enumerator MODALFRAME = 0x0080

##### [` NOIDLEMSG `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES9NOIDLEMSGE>)

enumerator NOIDLEMSG = 0x0100

##### [` SETFOREGROUND `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES13SETFOREGROUNDE>)

enumerator SETFOREGROUND = 0x0200

##### [` S3DLOOK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES7S3DLOOKE>)

enumerator S3DLOOK = 0x0004

##### [` FIXEDSYS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES8FIXEDSYSE>)

enumerator FIXEDSYS = 0x0008

##### [` NOFAILCREATE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES12NOFAILCREATEE>)

enumerator NOFAILCREATE = 0x0010

##### [` CONTROL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES7CONTROLE>)

enumerator CONTROL = 0x0400

##### [` CENTER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES6CENTERE>)

enumerator CENTER = 0x0800

##### [` CENTERMOUSE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES11CENTERMOUSEE>)

enumerator CENTERMOUSE = 0x1000

##### [` CONTEXTHELP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES11CONTEXTHELPE>)

enumerator CONTEXTHELP = 0x2000

##### [` SHELLFONT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES9SHELLFONTE>)

enumerator SHELLFONT = [SETFONT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES7SETFONTE> "LIEF::PE::ResourceDialog::DIALOG_STYLES::SETFONT") | [FIXEDSYS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLES8FIXEDSYSE> "LIEF::PE::ResourceDialog::DIALOG_STYLES::FIXEDSYS")

#### [` WINDOW_STYLES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLESE>)

enum class WINDOW\_STYLES : uint32\_t

From: [https://docs.microsoft.com/en-us/windows/win32/winmsg/window-styles](<https://docs.microsoft.com/en-us/windows/win32/winmsg/window-styles>).

*Values:*

##### [` OVERLAPPED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES10OVERLAPPEDE>)

enumerator OVERLAPPED = 0x00000000

##### [` POPUP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES5POPUPE>)

enumerator POPUP = 0x80000000

##### [` CHILD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES5CHILDE>)

enumerator CHILD = 0x40000000

##### [` MINIMIZE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES8MINIMIZEE>)

enumerator MINIMIZE = 0x20000000

##### [` VISIBLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES7VISIBLEE>)

enumerator VISIBLE = 0x10000000

##### [` DISABLED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES8DISABLEDE>)

enumerator DISABLED = 0x08000000

##### [` CLIPSIBLINGS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES12CLIPSIBLINGSE>)

enumerator CLIPSIBLINGS = 0x04000000

##### [` CLIPCHILDREN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES12CLIPCHILDRENE>)

enumerator CLIPCHILDREN = 0x02000000

##### [` MAXIMIZE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES8MAXIMIZEE>)

enumerator MAXIMIZE = 0x01000000

##### [` CAPTION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES7CAPTIONE>)

enumerator CAPTION = 0x00C00000

##### [` BORDER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES6BORDERE>)

enumerator BORDER = 0x00800000

##### [` DLGFRAME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES8DLGFRAMEE>)

enumerator DLGFRAME = 0x00400000

##### [` VSCROLL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES7VSCROLLE>)

enumerator VSCROLL = 0x00200000

##### [` HSCROLL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES7HSCROLLE>)

enumerator HSCROLL = 0x00100000

##### [` SYSMENU `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES7SYSMENUE>)

enumerator SYSMENU = 0x00080000

##### [` THICKFRAME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES10THICKFRAMEE>)

enumerator THICKFRAME = 0x00040000

##### [` GROUP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES5GROUPE>)

enumerator GROUP = 0x00020000

##### [` TABSTOP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLES7TABSTOPE>)

enumerator TABSTOP = 0x00010000

#### [` WINDOW_EXTENDED_STYLES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLESE>)

enum class WINDOW\_EXTENDED\_STYLES : uint32\_t

From [https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles](<https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles>).

*Values:*

##### [` DLGMODALFRAME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES13DLGMODALFRAMEE>)

enumerator DLGMODALFRAME = 0x00000001

##### [` NOPARENTNOTIFY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES14NOPARENTNOTIFYE>)

enumerator NOPARENTNOTIFY = 0x00000004

##### [` TOPMOST `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES7TOPMOSTE>)

enumerator TOPMOST = 0x00000008

##### [` ACCEPTFILES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES11ACCEPTFILESE>)

enumerator ACCEPTFILES = 0x00000010

##### [` TRANSPARENT_STY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES15TRANSPARENT_STYE>)

enumerator TRANSPARENT\_STY = 0x00000020

##### [` MDICHILD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES8MDICHILDE>)

enumerator MDICHILD = 0x00000040

##### [` TOOLWINDOW `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES10TOOLWINDOWE>)

enumerator TOOLWINDOW = 0x00000080

##### [` WINDOWEDGE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES10WINDOWEDGEE>)

enumerator WINDOWEDGE = 0x00000100

##### [` CLIENTEDGE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES10CLIENTEDGEE>)

enumerator CLIENTEDGE = 0x00000200

##### [` CONTEXTHELP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES11CONTEXTHELPE>)

enumerator CONTEXTHELP = 0x00000400

##### [` RIGHT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES5RIGHTE>)

enumerator RIGHT = 0x00001000

##### [` LEFT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES4LEFTE>)

enumerator LEFT = 0x00000000

##### [` RTLREADING `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES10RTLREADINGE>)

enumerator RTLREADING = 0x00002000

##### [` LEFTSCROLLBAR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES13LEFTSCROLLBARE>)

enumerator LEFTSCROLLBAR = 0x00004000

##### [` CONTROLPARENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES13CONTROLPARENTE>)

enumerator CONTROLPARENT = 0x00010000

##### [` STATICEDGE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES10STATICEDGEE>)

enumerator STATICEDGE = 0x00020000

##### [` APPWINDOW `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLES9APPWINDOWE>)

enumerator APPWINDOW = 0x00040000

#### [` CONTROL_STYLES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLESE>)

enum class CONTROL\_STYLES : uint32\_t

From: [https://learn.microsoft.com/en-us/windows/win32/controls/common-control-styles](<https://learn.microsoft.com/en-us/windows/win32/controls/common-control-styles>).

*Values:*

##### [` TOP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES3TOPE>)

enumerator TOP = 0x00000001

##### [` NOMOVEY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES7NOMOVEYE>)

enumerator NOMOVEY = 0x00000002

##### [` BOTTOM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES6BOTTOME>)

enumerator BOTTOM = 0x00000003

##### [` NORESIZE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES8NORESIZEE>)

enumerator NORESIZE = 0x00000004

##### [` NOPARENTALIGN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES13NOPARENTALIGNE>)

enumerator NOPARENTALIGN = 0x00000008

##### [` ADJUSTABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES10ADJUSTABLEE>)

enumerator ADJUSTABLE = 0x00000020

##### [` NODIVIDER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES9NODIVIDERE>)

enumerator NODIVIDER = 0x00000040

##### [` VERT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES4VERTE>)

enumerator VERT = 0x00000080

##### [` LEFT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES4LEFTE>)

enumerator LEFT = [VERT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES4VERTE> "LIEF::PE::ResourceDialog::CONTROL_STYLES::VERT") | [TOP](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES3TOPE> "LIEF::PE::ResourceDialog::CONTROL_STYLES::TOP")

##### [` RIGHT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES5RIGHTE>)

enumerator RIGHT = [VERT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES4VERTE> "LIEF::PE::ResourceDialog::CONTROL_STYLES::VERT") | [BOTTOM](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES6BOTTOME> "LIEF::PE::ResourceDialog::CONTROL_STYLES::BOTTOM")

##### [` NOMOVEX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES7NOMOVEXE>)

enumerator NOMOVEX = [VERT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES4VERTE> "LIEF::PE::ResourceDialog::CONTROL_STYLES::VERT") | [NOMOVEY](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLES7NOMOVEYE> "LIEF::PE::ResourceDialog::CONTROL_STYLES::NOMOVEY")

#### [` dialogs_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog9dialogs_tE>)

using dialogs\_t = std::vector&lt;std::unique\_ptr&lt;[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")&gt;&gt;

Public Functions

#### [` ResourceDialog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14ResourceDialogEv>)

ResourceDialog() = default

#### [` ResourceDialog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14ResourceDialogERK14ResourceDialog>)

ResourceDialog(const [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14ResourceDialogERK14ResourceDialog> "LIEF::PE::ResourceDialog::ResourceDialog")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogaSERK14ResourceDialog>)

[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;operator=(const [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")&amp;) = default

#### [` ResourceDialog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14ResourceDialogERR14ResourceDialog>)

ResourceDialog([ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14ResourceDialogERR14ResourceDialog> "LIEF::PE::ResourceDialog::ResourceDialog")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogaSERR14ResourceDialog>)

[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;operator=([ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")&amp;&amp;) = default

#### [` ResourceDialog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14ResourceDialogE4TYPE>)

inline ResourceDialog([TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4TYPEE> "LIEF::PE::ResourceDialog::TYPE") ty)

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog5cloneEv>)

virtual std::unique\_ptr&lt;[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")&gt; clone() const = 0

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4typeEv>)

inline [TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4TYPEE> "LIEF::PE::ResourceDialog::TYPE") type() const

#### [` style `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog5styleEv>)

inline uint32\_t style() const

The style of the dialog box. This member can be a combination of window style values (such as [WINDOW\_STYLES::CAPTION](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1aad84190693091472d28929ff57f4c18ca4e817727ebb5d8566c54ee5ba9a1e2dd>) and [WINDOW\_STYLES::SYSMENU](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1aad84190693091472d28929ff57f4c18ca48d72f461ca3d374f2c289b891996c38>)) and dialog box style values (such as [DIALOG\_STYLES::CENTER](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1a513fe6ee6a802c83284be212924f91c1ac397289ee45877be0cd49811fe245b4e>)).

#### [` extended_style `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog14extended_styleEv>)

inline uint32\_t extended\_style() const

The extended styles for a window. This member is not used to create dialog boxes, but applications that use dialog box templates can use it to create other types of windows. For a list of values, see [WINDOW\_EXTENDED\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1a26014fc8c57659990c532ee5118e91e6>).

#### [` x `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog1xEv>)

inline int16\_t x() const

The x-coordinate, in dialog box units, of the upper-left corner of the dialog box.

#### [` y `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog1yEv>)

inline int16\_t y() const

The y-coordinate, in dialog box units, of the upper-left corner of the dialog box.

#### [` cx `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog2cxEv>)

inline int16\_t cx() const

The width, in dialog box units, of the dialog box.

#### [` cy `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog2cyEv>)

inline int16\_t cy() const

The height, in dialog box units, of the dialog box.

#### [` style `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog5styleE8uint32_t>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;style(uint32\_t value)

#### [` extended_style `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14extended_styleE8uint32_t>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;extended\_style(uint32\_t value)

#### [` x `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog1xE7int16_t>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;x(int16\_t value)

#### [` y `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog1yE7int16_t>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;y(int16\_t value)

#### [` cx `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog2cxE7int16_t>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;cx(int16\_t value)

#### [` cy `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog2cyE7int16_t>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;cy(int16\_t value)

#### [` menu `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4menuENSt9u16stringE>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;menu(std::u16string title)

#### [` menu `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4menuE8uint16_t>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;menu(uint16\_t ord)

#### [` window_class `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog12window_classENSt9u16stringE>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;window\_class(std::u16string title)

#### [` window_class `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog12window_classE8uint16_t>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;window\_class(uint16\_t ord)

#### [` title `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog5titleENSt9u16stringE>)

inline [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;title(std::u16string value)

#### [` title `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog5titleERKNSt6stringE>)

[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;title(const std::string &amp;title)

#### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog3hasE13DIALOG_STYLES>)

inline bool has([DIALOG\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLESE> "LIEF::PE::ResourceDialog::DIALOG_STYLES") style) const

Check if the dialog uses the given dialog style.

#### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog3hasE13WINDOW_STYLES>)

inline bool has([WINDOW\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLESE> "LIEF::PE::ResourceDialog::WINDOW_STYLES") style) const

Check if the dialog uses the given window style.

#### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog3hasE22WINDOW_EXTENDED_STYLES>)

inline bool has([WINDOW\_EXTENDED\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLESE> "LIEF::PE::ResourceDialog::WINDOW_EXTENDED_STYLES") style) const

Check if the dialog uses the given extended window style.

#### [` styles_list `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog11styles_listEv>)

std::vector&lt;[DIALOG\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13DIALOG_STYLESE> "LIEF::PE::ResourceDialog::DIALOG_STYLES")&gt; styles\_list() const

List of [DIALOG\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1a513fe6ee6a802c83284be212924f91c1>) used by this dialog.

#### [` windows_styles_list `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog19windows_styles_listEv>)

std::vector&lt;[WINDOW\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLESE> "LIEF::PE::ResourceDialog::WINDOW_STYLES")&gt; windows\_styles\_list() const

List of [WINDOW\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1aad84190693091472d28929ff57f4c18c>) used by this dialog.

#### [` windows_ext_styles_list `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog23windows_ext_styles_listEv>)

std::vector&lt;[WINDOW\_EXTENDED\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog22WINDOW_EXTENDED_STYLESE> "LIEF::PE::ResourceDialog::WINDOW_EXTENDED_STYLES")&gt; windows\_ext\_styles\_list() const

List of [WINDOW\_EXTENDED\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1a26014fc8c57659990c532ee5118e91e6>) used by this dialog.

#### [` title `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog5titleEv>)

inline const std::u16string &amp;title() const

title of the dialog box

#### [` title_utf8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog10title_utf8Ev>)

std::string title\_utf8() const

title of the dialog box

#### [` menu `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4menuEv>)

inline const [ordinal\_or\_str\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog16ordinal_or_str_tE> "LIEF::PE::ResourceDialog::ordinal_or_str_t") &amp;menu() const

ordinal or name value of a menu resource.

#### [` window_class `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog12window_classEv>)

inline const [ordinal\_or\_str\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog16ordinal_or_str_tE> "LIEF::PE::ResourceDialog::ordinal_or_str_t") &amp;window\_class() const

ordinal of a predefined system window class or name of a registered window class

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog9to_stringEv>)

virtual std::string to\_string() const = 0

#### [` ~ResourceDialog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogD0Ev>)

~ResourceDialog() override = default

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE14ResourceDialog2asEPK1Tv>)

template&lt;class T&gt;  
inline const [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE14ResourceDialog2asEPK1Tv> "LIEF::PE::ResourceDialog::as::T") \*as() const

Helper to **downcast** a [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog>) into a [ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialogRegular>) or a [ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialogExtended>).

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog5parseERK12ResourceData>)

static [dialogs\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog9dialogs_tE> "LIEF::PE::ResourceDialog::dialogs_t") parse(const [ResourceData](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceDataE> "LIEF::PE::ResourceData") &amp;node)

Parse dialogs from the given resource data node.

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog5parseEPK7uint8_t6size_t>)

static [dialogs\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog9dialogs_tE> "LIEF::PE::ResourceDialog::dialogs_t") parse(const uint8\_t \*buffer, size\_t size)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialoglsERNSt7ostreamERK14ResourceDialog>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") &amp;dialog)

#### [` ordinal_or_str_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog16ordinal_or_str_tE>)

struct ordinal\_or\_str\_t

This structure wraps either an ordinal value (`uint16_t`) or a string. The ordinal value should refer to an existing resource id in the resource tree.

Public Functions

##### [` is_defined `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog16ordinal_or_str_t10is_definedEv>)

inline bool is\_defined() const

##### [` operator bool `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog16ordinal_or_str_tcvbEv>)

inline operator bool() const

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog16ordinal_or_str_t9to_stringEv>)

std::string to\_string() const

Public Members

##### [` ordinal `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog16ordinal_or_str_t7ordinalE>)

[result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;uint16\_t&gt; ordinal = make\_error\_code([lief\_errors](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv411lief_errors> "lief_errors")::[not\_found](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N11lief_errors9not_foundE> "lief_errors::not_found"))

##### [` string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog16ordinal_or_str_t6stringE>)

std::u16string string

#### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE>)

class Item

This class represents an element of the dialog. It can be for instance, a button, or a caption.

This class is inherited by the regular or extended dialog’s item:

- [ResourceDialogRegular::Item](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialogRegular_1_1Item>)
- [ResourceDialogExtended::Item](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialogExtended_1_1Item>)

Subclassed by [LIEF::PE::ResourceDialogExtended::Item](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialogExtended_1_1Item>), [LIEF::PE::ResourceDialogRegular::Item](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialogRegular_1_1Item>)

Public Types

##### [` WINDOW_CLASS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item12WINDOW_CLASSE>)

enum class WINDOW\_CLASS : uint32\_t

*Values:*

###### [` BUTTON `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item12WINDOW_CLASS6BUTTONE>)

enumerator BUTTON = 0x0080

###### [` EDIT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item12WINDOW_CLASS4EDITE>)

enumerator EDIT = 0x0081

###### [` STATIC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item12WINDOW_CLASS6STATICE>)

enumerator STATIC = 0x0082

###### [` LIST_BOX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item12WINDOW_CLASS8LIST_BOXE>)

enumerator LIST\_BOX = 0x0083

###### [` SCROLL_BAR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item12WINDOW_CLASS10SCROLL_BARE>)

enumerator SCROLL\_BAR = 0x0084

###### [` COMBO_BOX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item12WINDOW_CLASS9COMBO_BOXE>)

enumerator COMBO\_BOX = 0x0085

Public Functions

##### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item4ItemEv>)

Item() = default

##### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item4ItemERK4Item>)

Item(const [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item4ItemERK4Item> "LIEF::PE::ResourceDialog::Item::Item")&amp;) = default

##### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemaSERK4Item>)

[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;operator=(const [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item")&amp;) = default

##### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item4ItemERR4Item>)

Item([Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item4ItemERR4Item> "LIEF::PE::ResourceDialog::Item::Item")&amp;&amp;) = default

##### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemaSERR4Item>)

[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;operator=([Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item")&amp;&amp;) = default

##### [` style `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item5styleEv>)

inline uint32\_t style() const

The style of the control. This can be a combination of [WINDOW\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1aad84190693091472d28929ff57f4c18c>) or [CONTROL\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1a213a3726706ddfa613da7842113c485d>).

##### [` extended_style `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item14extended_styleEv>)

inline uint32\_t extended\_style() const

The extended styles for a window. This member is not used to create controls in dialog boxes, but applications that use dialog box templates can use it to create other types of windows.

It can take a combination of [WINDOW\_EXTENDED\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1a26014fc8c57659990c532ee5118e91e6>)

##### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item2idEv>)

inline int32\_t id() const

The control identifier.

##### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item3hasE13WINDOW_STYLES>)

inline bool has([WINDOW\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLESE> "LIEF::PE::ResourceDialog::WINDOW_STYLES") style) const

Check if this item has the given [WINDOW\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1aad84190693091472d28929ff57f4c18c>).

##### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item3hasE14CONTROL_STYLES>)

inline bool has([CONTROL\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLESE> "LIEF::PE::ResourceDialog::CONTROL_STYLES") style) const

Check if this item has the given [CONTROL\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1a213a3726706ddfa613da7842113c485d>).

##### [` window_styles `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item13window_stylesEv>)

std::vector&lt;[WINDOW\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog13WINDOW_STYLESE> "LIEF::PE::ResourceDialog::WINDOW_STYLES")&gt; window\_styles() const

List of [WINDOW\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1aad84190693091472d28929ff57f4c18c>) used by this item.

##### [` control_styles `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item14control_stylesEv>)

std::vector&lt;[CONTROL\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog14CONTROL_STYLESE> "LIEF::PE::ResourceDialog::CONTROL_STYLES")&gt; control\_styles() const

List of [CONTROL\_STYLES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceDialog_1a213a3726706ddfa613da7842113c485d>) used by this item.

##### [` x `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item1xEv>)

inline int16\_t x() const

The x-coordinate, in dialog box units, of the upper-left corner of the control. This coordinate is always relative to the upper-left corner of the dialog box’s client area.

##### [` y `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item1yEv>)

inline int16\_t y() const

The y-coordinate, in dialog box units, of the upper-left corner of the control. This coordinate is always relative to the upper-left corner of the dialog box’s client area.

##### [` cx `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item2cxEv>)

inline int16\_t cx() const

The width, in dialog box units, of the control.

##### [` cy `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item2cyEv>)

inline int16\_t cy() const

The height, in dialog box units, of the control.

##### [` style `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item5styleE8uint32_t>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;style(uint32\_t value)

##### [` extended_style `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item14extended_styleE8uint32_t>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;extended\_style(uint32\_t value)

##### [` x `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item1xE7int16_t>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;x(int16\_t value)

##### [` y `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item1yE7int16_t>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;y(int16\_t value)

##### [` cx `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item2cxE7int16_t>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;cx(int16\_t value)

##### [` cy `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item2cyE7int16_t>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;cy(int16\_t value)

##### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item2idE7int32_t>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;id(int32\_t value)

##### [` data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item4dataENSt6vectorI7uint8_tEE>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;data(std::vector&lt;uint8\_t&gt; creation\_data)

##### [` clazz `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item5clazzENSt9u16stringE>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;clazz(std::u16string title)

##### [` clazz `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item5clazzE8uint16_t>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;clazz(uint16\_t ord)

##### [` title `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item5titleENSt9u16stringE>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;title(std::u16string value)

##### [` title `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item5titleE8uint16_t>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;title(uint16\_t ord)

##### [` clazz `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item5clazzEv>)

inline const [ordinal\_or\_str\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog16ordinal_or_str_tE> "LIEF::PE::ResourceDialog::ordinal_or_str_t") &amp;clazz() const

Window class of the control. This can be either: a string that specifies the name of a registered window class or an ordinal value of a predefined system class.

##### [` title `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item5titleEv>)

inline const [ordinal\_or\_str\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog16ordinal_or_str_tE> "LIEF::PE::ResourceDialog::ordinal_or_str_t") &amp;title() const

Title of the item which can be either: a string that specifies the initial text or an ordinal value of a resource, such as an icon, in an executable file.

##### [` creation_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item13creation_dataEv>)

inline span&lt;const uint8\_t&gt; creation\_data() const

Creation data that is passed to the control’s window procedure.

##### [` creation_data `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4Item13creation_dataEv>)

inline span&lt;uint8\_t&gt; creation\_data()

##### [` ~Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemD0Ev>)

virtual ~Item() = default

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14ResourceDialog4Item9to_stringEv>)

virtual std::string to\_string() const = 0

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemlsERNSt7ostreamERK4Item>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item") &amp;item)

---

## [Resource Dialog – Regular](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-dialog-regular>)

### [` ResourceDialogRegular `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularE>)

class ResourceDialogRegular : public LIEF::PE::[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")

Implementation for a regular/legacy dialog box.

See: [https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-dlgtemplate](<https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-dlgtemplate>)

Public Types

#### [` items_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular7items_tE>)

using items\_t = std::vector&lt;[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemE> "LIEF::PE::ResourceDialogRegular::Item")&gt;

#### [` it_items `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular8it_itemsE>)

using it\_items = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[items\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular7items_tE> "LIEF::PE::ResourceDialogRegular::items_t")&amp;&gt;

#### [` it_const_items `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular14it_const_itemsE>)

using it\_const\_items = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [items\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular7items_tE> "LIEF::PE::ResourceDialogRegular::items_t")&amp;&gt;

Public Functions

#### [` ResourceDialogRegular `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular21ResourceDialogRegularEv>)

inline ResourceDialogRegular()

#### [` ResourceDialogRegular `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular21ResourceDialogRegularERK21ResourceDialogRegular>)

ResourceDialogRegular(const [ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular21ResourceDialogRegularERK21ResourceDialogRegular> "LIEF::PE::ResourceDialogRegular::ResourceDialogRegular")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularaSERK21ResourceDialogRegular>)

[ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularE> "LIEF::PE::ResourceDialogRegular") &amp;operator=(const [ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularE> "LIEF::PE::ResourceDialogRegular")&amp;) = default

#### [` ResourceDialogRegular `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular21ResourceDialogRegularERR21ResourceDialogRegular>)

ResourceDialogRegular([ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular21ResourceDialogRegularERR21ResourceDialogRegular> "LIEF::PE::ResourceDialogRegular::ResourceDialogRegular")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularaSERR21ResourceDialogRegular>)

[ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularE> "LIEF::PE::ResourceDialogRegular") &amp;operator=([ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularE> "LIEF::PE::ResourceDialogRegular")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21ResourceDialogRegular5cloneEv>)

inline virtual std::unique\_ptr&lt;[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21ResourceDialogRegular9to_stringEv>)

virtual std::string to\_string() const override

#### [` nb_items `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21ResourceDialogRegular8nb_itemsEv>)

inline uint32\_t nb\_items() const

Number of control items.

#### [` items `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular5itemsEv>)

inline [it\_items](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular8it_itemsE> "LIEF::PE::ResourceDialogRegular::it_items") items()

Iterator over the different control items.

#### [` items `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21ResourceDialogRegular5itemsEv>)

inline [it\_const\_items](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular14it_const_itemsE> "LIEF::PE::ResourceDialogRegular::it_const_items") items() const

#### [` add_item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular8add_itemERK4Item>)

inline void add\_item(const [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemE> "LIEF::PE::ResourceDialogRegular::Item") &amp;item)

Add a new control item to the dialog.

#### [` font `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21ResourceDialogRegular4fontEv>)

inline const [font\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular6font_tE> "LIEF::PE::ResourceDialogRegular::font_t") &amp;font() const

Additional font information.

#### [` font `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4fontE8uint16_tNSt9u16stringE>)

inline [ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularE> "LIEF::PE::ResourceDialogRegular") &amp;font(uint16\_t pointsize, std::u16string name)

#### [` font `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4fontE6font_t>)

inline [ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularE> "LIEF::PE::ResourceDialogRegular") &amp;font([font\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular6font_tE> "LIEF::PE::ResourceDialogRegular::font_t") f)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21ResourceDialogRegular6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` ~ResourceDialogRegular `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularD0Ev>)

~ResourceDialogRegular() override = default

Public Static Functions

#### [` create `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular6createER12BinaryStream>)

static std::unique\_ptr&lt;[ResourceDialogRegular](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegularE> "LIEF::PE::ResourceDialogRegular")&gt; create([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular7classofEPK14ResourceDialog>)

static inline bool classof(const [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") \*dialog)

#### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemE>)

class Item : public LIEF::PE::[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")::[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item")

This class represents a `DLGTEMPLATE` item: `DLGITEMTEMPLATE`.

See: [https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-dlgitemtemplate](<https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-dlgitemtemplate>)

Public Functions

##### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4Item4ItemEv>)

Item() = default

##### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4Item4ItemERK4Item>)

Item(const [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4Item4ItemERK4Item> "LIEF::PE::ResourceDialogRegular::Item::Item")&amp;) = default

##### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemaSERK4Item>)

[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemE> "LIEF::PE::ResourceDialogRegular::Item") &amp;operator=(const [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemE> "LIEF::PE::ResourceDialogRegular::Item")&amp;) = default

##### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4Item4ItemERR4Item>)

Item([Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4Item4ItemERR4Item> "LIEF::PE::ResourceDialogRegular::Item::Item")&amp;&amp;) = default

##### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemaSERR4Item>)

[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemE> "LIEF::PE::ResourceDialogRegular::Item") &amp;operator=([Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemE> "LIEF::PE::ResourceDialogRegular::Item")&amp;&amp;) = default

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21ResourceDialogRegular4Item9to_stringEv>)

virtual std::string to\_string() const override

##### [` ~Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemD0Ev>)

virtual ~Item() override = default

Public Static Functions

##### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4Item5parseER12BinaryStream>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular4ItemE> "LIEF::PE::ResourceDialogRegular::Item")&gt; parse([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

#### [` font_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular6font_tE>)

struct font\_t

This structure represents additional font information that might be embedded at the end of the DLGTEMPLATE stream.

Public Functions

##### [` is_defined `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21ResourceDialogRegular6font_t10is_definedEv>)

inline bool is\_defined() const

##### [` operator bool `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21ResourceDialogRegular6font_tcvbEv>)

inline operator bool() const

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE21ResourceDialogRegular6font_t9to_stringEv>)

std::string to\_string() const

Public Members

##### [` point_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular6font_t10point_sizeE>)

uint16\_t point\_size = 0

##### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular6font_t4nameE>)

std::u16string name

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular6font_tlsERNSt7ostreamERK6font_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [font\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE21ResourceDialogRegular6font_tE> "LIEF::PE::ResourceDialogRegular::font_t") &amp;font)

---

## [Resource Dialog – Extended](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-dialog-extended>)

### [` ResourceDialogExtended `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE>)

class ResourceDialogExtended : public LIEF::PE::[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")

Implementation for the new extended dialogbox format.

See: [https://learn.microsoft.com/en-us/windows/win32/dlgbox/dlgtemplateex](<https://learn.microsoft.com/en-us/windows/win32/dlgbox/dlgtemplateex>)

Public Types

#### [` items_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended7items_tE>)

using items\_t = std::vector&lt;[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemE> "LIEF::PE::ResourceDialogExtended::Item")&gt;

#### [` it_items `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended8it_itemsE>)

using it\_items = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[items\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended7items_tE> "LIEF::PE::ResourceDialogExtended::items_t")&amp;&gt;

#### [` it_const_items `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended14it_const_itemsE>)

using it\_const\_items = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [items\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended7items_tE> "LIEF::PE::ResourceDialogExtended::items_t")&amp;&gt;

Public Functions

#### [` ResourceDialogExtended `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended22ResourceDialogExtendedEv>)

inline ResourceDialogExtended()

#### [` ResourceDialogExtended `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended22ResourceDialogExtendedERK22ResourceDialogExtended>)

ResourceDialogExtended(const [ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended22ResourceDialogExtendedERK22ResourceDialogExtended> "LIEF::PE::ResourceDialogExtended::ResourceDialogExtended")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedaSERK22ResourceDialogExtended>)

[ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE> "LIEF::PE::ResourceDialogExtended") &amp;operator=(const [ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE> "LIEF::PE::ResourceDialogExtended")&amp;) = default

#### [` ResourceDialogExtended `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended22ResourceDialogExtendedERR22ResourceDialogExtended>)

ResourceDialogExtended([ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended22ResourceDialogExtendedERR22ResourceDialogExtended> "LIEF::PE::ResourceDialogExtended::ResourceDialogExtended")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedaSERR22ResourceDialogExtended>)

[ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE> "LIEF::PE::ResourceDialogExtended") &amp;operator=([ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE> "LIEF::PE::ResourceDialogExtended")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended5cloneEv>)

inline virtual std::unique\_ptr&lt;[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")&gt; clone() const override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended9to_stringEv>)

virtual std::string to\_string() const override

#### [` ~ResourceDialogExtended `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedD0Ev>)

~ResourceDialogExtended() override = default

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended7versionEv>)

inline uint16\_t version() const

The version number of the extended dialog box template. This member must be set to 1.

#### [` signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended9signatureEv>)

inline uint16\_t signature() const

Indicates whether a template is an extended dialog box template. If signature is 0xFFFF, this is an extended dialog box template. In this case, the dlgVer member specifies the template version number.

#### [` help_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended7help_idEv>)

inline uint32\_t help\_id() const

The help context identifier for the dialog box window. When the system sends a `WM_HELP` message, it passes the `helpID` value in the `dwContextId` member of the `HELPINFO` structure.

#### [` items `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended5itemsEv>)

inline [it\_items](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended8it_itemsE> "LIEF::PE::ResourceDialogExtended::it_items") items()

Iterator over the control items of this dialog box.

#### [` items `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended5itemsEv>)

inline [it\_const\_items](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended14it_const_itemsE> "LIEF::PE::ResourceDialogExtended::it_const_items") items() const

#### [` add_item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended8add_itemERK4Item>)

inline void add\_item(const [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemE> "LIEF::PE::ResourceDialogExtended::Item") &amp;item)

Add a new control item to the dialog.

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended7versionE8uint16_t>)

inline [ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE> "LIEF::PE::ResourceDialogExtended") &amp;version(uint16\_t value)

#### [` signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended9signatureE8uint16_t>)

inline [ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE> "LIEF::PE::ResourceDialogExtended") &amp;signature(uint16\_t value)

#### [` help_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended7help_idE8uint32_t>)

inline [ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE> "LIEF::PE::ResourceDialogExtended") &amp;help\_id(uint32\_t value)

#### [` font `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended4fontEv>)

inline const [font\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6font_tE> "LIEF::PE::ResourceDialogExtended::font_t") &amp;font() const

Additional font information.

#### [` font `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4fontE8uint16_t8uint16_tb7uint8_tNSt9u16stringE>)

inline [ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE> "LIEF::PE::ResourceDialogExtended") &amp;font(uint16\_t point\_size, uint16\_t weight, bool italic, uint8\_t charset, std::u16string typeface)

#### [` font `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4fontE6font_t>)

inline [ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE> "LIEF::PE::ResourceDialogExtended") &amp;font([font\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6font_tE> "LIEF::PE::ResourceDialogExtended::font_t") f)

Public Static Functions

#### [` create `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6createER12BinaryStream>)

static std::unique\_ptr&lt;[ResourceDialogExtended](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtendedE> "LIEF::PE::ResourceDialogExtended")&gt; create([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended7classofEPK14ResourceDialog>)

static inline bool classof(const [ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog") \*dialog)

#### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemE>)

class Item : public LIEF::PE::[ResourceDialog](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialogE> "LIEF::PE::ResourceDialog")::[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14ResourceDialog4ItemE> "LIEF::PE::ResourceDialog::Item")

This class represents a `DLGTEMPLATEEX` item (`DLGITEMTEMPLATEEX`).

See: [https://learn.microsoft.com/en-us/windows/win32/dlgbox/dlgitemtemplateex](<https://learn.microsoft.com/en-us/windows/win32/dlgbox/dlgitemtemplateex>)

Public Functions

##### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4Item4ItemEv>)

Item() = default

##### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4Item4ItemERK4Item>)

Item(const [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4Item4ItemERK4Item> "LIEF::PE::ResourceDialogExtended::Item::Item")&amp;) = default

##### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemaSERK4Item>)

[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemE> "LIEF::PE::ResourceDialogExtended::Item") &amp;operator=(const [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemE> "LIEF::PE::ResourceDialogExtended::Item")&amp;) = default

##### [` Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4Item4ItemERR4Item>)

Item([Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4Item4ItemERR4Item> "LIEF::PE::ResourceDialogExtended::Item::Item")&amp;&amp;) = default

##### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemaSERR4Item>)

[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemE> "LIEF::PE::ResourceDialogExtended::Item") &amp;operator=([Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemE> "LIEF::PE::ResourceDialogExtended::Item")&amp;&amp;) = default

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended4Item9to_stringEv>)

virtual std::string to\_string() const override

##### [` help_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended4Item7help_idEv>)

inline uint32\_t help\_id() const

The help context identifier for the control. When the system sends a `WM_HELP` message, it passes the `helpID` value in the `dwContextId` member of the `HELPINFO` structure.

##### [` help_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4Item7help_idE8uint32_t>)

inline [Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemE> "LIEF::PE::ResourceDialogExtended::Item") &amp;help\_id(uint32\_t value)

##### [` ~Item `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemD0Ev>)

virtual ~Item() override = default

Public Static Functions

##### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4Item5parseER12BinaryStream>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[Item](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended4ItemE> "LIEF::PE::ResourceDialogExtended::Item")&gt; parse([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

#### [` font_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6font_tE>)

struct font\_t

Font information for the font to use for the text in the dialog box and its controls.

Public Functions

##### [` is_defined `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended6font_t10is_definedEv>)

inline bool is\_defined() const

##### [` operator bool `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended6font_tcvbEv>)

inline operator bool() const

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceDialogExtended6font_t9to_stringEv>)

std::string to\_string() const

Public Members

##### [` point_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6font_t10point_sizeE>)

uint16\_t point\_size = 0

The point size of the font.

##### [` weight `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6font_t6weightE>)

uint16\_t weight = 0

The weight of the font.

##### [` italic `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6font_t6italicE>)

bool italic = false

Indicates whether the font is italic.

##### [` charset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6font_t7charsetE>)

uint8\_t charset = false

The character set to be used.

##### [` typeface `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6font_t8typefaceE>)

std::u16string typeface

The name of the typeface for the font.

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6font_tlsERNSt7ostreamERK6font_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [font\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceDialogExtended6font_tE> "LIEF::PE::ResourceDialogExtended::font_t") &amp;font)

---

## [Resource Version](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-version>)

### [` ResourceVersion `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE>)

class ResourceVersion : public LIEF::Object

Representation of the data associated with the `RT_VERSION` entry.

See: `VS_VERSIONINFO` at [https://learn.microsoft.com/en-us/windows/win32/menurc/vs-versioninfo](<https://learn.microsoft.com/en-us/windows/win32/menurc/vs-versioninfo>)

Public Functions

#### [` ResourceVersion `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion15ResourceVersionERK15ResourceVersion>)

ResourceVersion(const [ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion15ResourceVersionERK15ResourceVersion> "LIEF::PE::ResourceVersion::ResourceVersion")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionaSERK15ResourceVersion>)

[ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion") &amp;operator=(const [ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion")&amp;) = default

#### [` ResourceVersion `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion15ResourceVersionERR15ResourceVersion>)

ResourceVersion([ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion15ResourceVersionERR15ResourceVersion> "LIEF::PE::ResourceVersion::ResourceVersion")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionaSERR15ResourceVersion>)

[ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion") &amp;operator=([ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion")&amp;&amp;) = default

#### [` ~ResourceVersion `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionD0Ev>)

~ResourceVersion() override = default

#### [` file_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion9file_infoEv>)

inline const [fixed\_file\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_tE> "LIEF::PE::ResourceVersion::fixed_file_info_t") &amp;file\_info() const

Return the fixed file info (`VS_FIXEDFILEINFO`).

#### [` file_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion9file_infoEv>)

inline [fixed\_file\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_tE> "LIEF::PE::ResourceVersion::fixed_file_info_t") &amp;file\_info()

#### [` string_file_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion16string_file_infoEv>)

inline [ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo") \*string\_file\_info()

Return the `StringFileInfo` element.

#### [` string_file_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion16string_file_infoEv>)

inline const [ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo") \*string\_file\_info() const

#### [` var_file_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion13var_file_infoEv>)

inline [ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo") \*var\_file\_info()

Return the `VarFileInfo` element.

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion4typeEv>)

inline uint16\_t type() const

The type of data in the version resource.

- `1` if it contains text data
- `0` if it contains binary data

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion3keyEv>)

inline const std::u16string &amp;key() const

The Unicode string `L"VS_VERSION_INFO"`.

#### [` key_u8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion6key_u8Ev>)

std::string key\_u8() const

The key as an utf8 string.

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion4typeE8uint16_t>)

inline [ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion") &amp;type(uint16\_t value)

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion3keyENSt9u16stringE>)

inline [ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion") &amp;key(std::u16string value)

#### [` var_file_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion13var_file_infoEv>)

inline const [ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo") \*var\_file\_info() const

#### [` var_file_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion13var_file_infoE19ResourceVarFileInfo>)

inline [ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion") &amp;var\_file\_info([ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo") info)

#### [` string_file_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion16string_file_infoE22ResourceStringFileInfo>)

inline [ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion") &amp;string\_file\_info([ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo") info)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion5parseERK12ResourceData>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion")&gt; parse(const [ResourceData](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12ResourceDataE> "LIEF::PE::ResourceData") &amp;node)

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion5parseEPK7uint8_t6size_t>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion")&gt; parse(const uint8\_t \*p, size\_t sz)

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion5parseER12BinaryStream>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion")&gt; parse([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionlsERNSt7ostreamERK15ResourceVersion>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ResourceVersion](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersionE> "LIEF::PE::ResourceVersion") &amp;version)

#### [` fixed_file_info_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_tE>)

struct fixed\_file\_info\_t

This structure represents the `VS_FIXEDFILEINFO` structure defined in `verrsrc.h`.

Public Types

##### [` VERSION_OS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OSE>)

enum class VERSION\_OS : uint32\_t

*Values:*

###### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS7UNKNOWNE>)

enumerator UNKNOWN = 0x00000000

The operating system for which the file was designed is unknown to the system.

###### [` DOS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS3DOSE>)

enumerator DOS = 0x00010000

The file was designed for MS-DOS.

###### [` OS216 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS5OS216E>)

enumerator OS216 = 0x00020000

The file was designed for 16-bit OS/2.

###### [` OS232 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS5OS232E>)

enumerator OS232 = 0x00030000

The file was designed for 32-bit OS/2.

###### [` NT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS2NTE>)

enumerator NT = 0x00040000

The file was designed for Windows NT.

###### [` WINCE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS5WINCEE>)

enumerator WINCE = 0x00050000

The file was designed for Windows CE (Windows Embedded Compact).

###### [` WINDOWS16 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS9WINDOWS16E>)

enumerator WINDOWS16 = 0x00000001

The file was designed for 16-bit Windows.

###### [` PM16 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS4PM16E>)

enumerator PM16 = 0x00000002

The file was designed for 16-bit Presentation Manager.

###### [` PM32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS4PM32E>)

enumerator PM32 = 0x00000003

The file was designed for 32-bit Presentation Manager.

###### [` WINDOWS32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS9WINDOWS32E>)

enumerator WINDOWS32 = 0x00000004

The file was designed for 32-bit Windows.

###### [` DOS_WINDOWS16 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS13DOS_WINDOWS16E>)

enumerator DOS\_WINDOWS16 = [DOS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS3DOSE> "LIEF::PE::ResourceVersion::fixed_file_info_t::VERSION_OS::DOS") | [WINDOWS16](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS9WINDOWS16E> "LIEF::PE::ResourceVersion::fixed_file_info_t::VERSION_OS::WINDOWS16")

The file was designed for 16-bit Windows running on MS-DOS.

###### [` DOS_WINDOWS32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS13DOS_WINDOWS32E>)

enumerator DOS\_WINDOWS32 = [DOS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS3DOSE> "LIEF::PE::ResourceVersion::fixed_file_info_t::VERSION_OS::DOS") | [WINDOWS32](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS9WINDOWS32E> "LIEF::PE::ResourceVersion::fixed_file_info_t::VERSION_OS::WINDOWS32")

The file was designed for 32-bit Windows running on MS-DOS.

###### [` OS216_PM16 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS10OS216_PM16E>)

enumerator OS216\_PM16 = [OS216](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS5OS216E> "LIEF::PE::ResourceVersion::fixed_file_info_t::VERSION_OS::OS216") | [PM16](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS4PM16E> "LIEF::PE::ResourceVersion::fixed_file_info_t::VERSION_OS::PM16")

The file was designed for 16-bit Presentation Manager running on 16-bit OS/2.

###### [` OS232_PM32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS10OS232_PM32E>)

enumerator OS232\_PM32 = [OS232](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS5OS232E> "LIEF::PE::ResourceVersion::fixed_file_info_t::VERSION_OS::OS232") | [PM32](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS4PM32E> "LIEF::PE::ResourceVersion::fixed_file_info_t::VERSION_OS::PM32")

The file was designed for 32-bit Presentation Manager running on 32-bit OS/2.

###### [` NT_WINDOWS32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS12NT_WINDOWS32E>)

enumerator NT\_WINDOWS32 = [NT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS2NTE> "LIEF::PE::ResourceVersion::fixed_file_info_t::VERSION_OS::NT") | [WINDOWS32](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10VERSION_OS9WINDOWS32E> "LIEF::PE::ResourceVersion::fixed_file_info_t::VERSION_OS::WINDOWS32")

The file was designed for Windows NT.

##### [` FILE_TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t9FILE_TYPEE>)

enum class FILE\_TYPE : uint32\_t

*Values:*

###### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t9FILE_TYPE7UNKNOWNE>)

enumerator UNKNOWN = 0x00000000

The file type is unknown to the system.

###### [` APP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t9FILE_TYPE3APPE>)

enumerator APP = 0x00000001

The file contains an application.

###### [` DLL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t9FILE_TYPE3DLLE>)

enumerator DLL = 0x00000002

The file contains a DLL.

###### [` DRV `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t9FILE_TYPE3DRVE>)

enumerator DRV = 0x00000003

The file contains a device driver. If dwFileType is VFT\_DRV, dwFileSubtype contains a more specific description of the driver.

###### [` FONT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t9FILE_TYPE4FONTE>)

enumerator FONT = 0x00000004

The file contains a font. If dwFileType is VFT\_FONT, dwFileSubtype contains a more specific description of the font file.

###### [` VXD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t9FILE_TYPE3VXDE>)

enumerator VXD = 0x00000005

The file contains a virtual device.

###### [` STATIC_LIB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t9FILE_TYPE10STATIC_LIBE>)

enumerator STATIC\_LIB = 0x00000007

The file contains a static-link library.

##### [` FILE_TYPE_DETAILS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILSE>)

enum class FILE\_TYPE\_DETAILS : uint64\_t

*Values:*

###### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS7UNKNOWNE>)

enumerator UNKNOWN = 0x00000000

The type is unknown by the system.

###### [` DRV_PRINTER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS11DRV_PRINTERE>)

enumerator DRV\_PRINTER = 0x00000001 | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

The file contains a printer driver.

###### [` DRV_KEYBOARD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS12DRV_KEYBOARDE>)

enumerator DRV\_KEYBOARD = 0x00000002 | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

The file contains a keyboard driver.

###### [` DRV_LANGUAGE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS12DRV_LANGUAGEE>)

enumerator DRV\_LANGUAGE = 0x00000003 | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

The file contains a language driver.

###### [` DRV_DISPLAY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS11DRV_DISPLAYE>)

enumerator DRV\_DISPLAY = 0x00000004 | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

The file contains a display driver.

###### [` DRV_MOUSE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS9DRV_MOUSEE>)

enumerator DRV\_MOUSE = 0x00000005 | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

The file contains a mouse driver.

###### [` DRV_NETWORK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS11DRV_NETWORKE>)

enumerator DRV\_NETWORK = 0x00000006 | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

The file contains a network driver.

###### [` DRV_SYSTEM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS10DRV_SYSTEME>)

enumerator DRV\_SYSTEM = 0x00000007 | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

The file contains a system driver.

###### [` DRV_INSTALLABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS15DRV_INSTALLABLEE>)

enumerator DRV\_INSTALLABLE = 0x00000008 | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

The file contains an installable driver.

###### [` DRV_SOUND `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS9DRV_SOUNDE>)

enumerator DRV\_SOUND = 0x00000009 | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

The file contains a sound driver.

###### [` DRV_COMM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS8DRV_COMME>)

enumerator DRV\_COMM = 0x0000000A | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

The file contains a communications driver.

###### [` DRV_INPUTMETHOD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS15DRV_INPUTMETHODE>)

enumerator DRV\_INPUTMETHOD = 0x0000000B | [DRV\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::DRV_K")

###### [` DRV_VERSIONED_PRINTER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS21DRV_VERSIONED_PRINTERE>)

enumerator DRV\_VERSIONED\_PRINTER = 0x0000000C

The file contains a versioned printer driver.

###### [` FONT_RASTER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS11FONT_RASTERE>)

enumerator FONT\_RASTER = 0x00000001 | [FONT\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t6FONT_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::FONT_K")

The file contains a raster font.

###### [` FONT_VECTOR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS11FONT_VECTORE>)

enumerator FONT\_VECTOR = 0x00000002 | [FONT\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t6FONT_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::FONT_K")

The file contains a vector font.

###### [` FONT_TRUETYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILS13FONT_TRUETYPEE>)

enumerator FONT\_TRUETYPE = 0x00000003 | [FONT\_K](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t6FONT_KE> "LIEF::PE::ResourceVersion::fixed_file_info_t::FONT_K")

The file contains a TrueType font.

##### [` FILE_FLAGS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10FILE_FLAGSE>)

enum class FILE\_FLAGS : uint32\_t

*Values:*

###### [` DEBUG `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10FILE_FLAGS5DEBUGE>)

enumerator DEBUG = 0x00000001

The file contains debugging information or is compiled with debugging features enabled.

###### [` INFO_INFERRED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10FILE_FLAGS13INFO_INFERREDE>)

enumerator INFO\_INFERRED = 0x00000010

The file’s version structure was created dynamically; therefore, some of the members in this structure may be empty or incorrect. This flag should never be set in a file’s `VS_VERSIONINFO` data.

###### [` PATCHED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10FILE_FLAGS7PATCHEDE>)

enumerator PATCHED = 0x00000004

The file has been modified and is not identical to the original shipping file of the same version number.

###### [` PRERELEASE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10FILE_FLAGS10PRERELEASEE>)

enumerator PRERELEASE = 0x00000002

The file is a development version, not a commercially released product.

###### [` PRIVATEBUILD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10FILE_FLAGS12PRIVATEBUILDE>)

enumerator PRIVATEBUILD = 0x00000008

The file was not built using standard release procedures. If this flag is set, the StringFileInfo structure should contain a PrivateBuild entry.

###### [` SPECIALBUILD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10FILE_FLAGS12SPECIALBUILDE>)

enumerator SPECIALBUILD = 0x00000020

The file was built by the original company using standard release procedures but is a variation of the normal file of the same version number. If this flag is set, the StringFileInfo structure should contain a SpecialBuild entry.

Public Functions

##### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion17fixed_file_info_t3hasE10FILE_FLAGS>)

inline bool has([FILE\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10FILE_FLAGSE> "LIEF::PE::ResourceVersion::fixed_file_info_t::FILE_FLAGS") f) const

Check if the given [FILE\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#structLIEF_1_1PE_1_1ResourceVersion_1_1fixed__file__info__t_1a048d2149602823fd4d97830906bc50fe>) is present.

##### [` flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion17fixed_file_info_t5flagsEv>)

std::vector&lt;[FILE\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10FILE_FLAGSE> "LIEF::PE::ResourceVersion::fixed_file_info_t::FILE_FLAGS")&gt; flags() const

List of [FILE\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#structLIEF_1_1PE_1_1ResourceVersion_1_1fixed__file__info__t_1a048d2149602823fd4d97830906bc50fe>).

##### [` file_type_details `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion17fixed_file_info_t17file_type_detailsEv>)

inline [FILE\_TYPE\_DETAILS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t17FILE_TYPE_DETAILSE> "LIEF::PE::ResourceVersion::fixed_file_info_t::FILE_TYPE_DETAILS") file\_type\_details() const

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15ResourceVersion17fixed_file_info_t9to_stringEv>)

std::string to\_string() const

Public Members

##### [` signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t9signatureE>)

uint32\_t signature = 0

Contains the value `0xFEEF04BD`. This is used with the `szKey` member of the `VS_VERSIONINFO` structure when searching a file for the `VS_FIXEDFILEINFO` structure.

##### [` struct_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t14struct_versionE>)

uint32\_t struct\_version = 0

The binary version number of this structure. The high-order word of this member contains the major version number, and the low-order word contains the minor version number.

##### [` file_version_ms `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t15file_version_msE>)

uint32\_t file\_version\_ms = 0

The most significant 32 bits of the file’s binary version number. This member is used with file\_version\_ls to form a 64-bit value used for numeric comparisons.

##### [` file_version_ls `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t15file_version_lsE>)

uint32\_t file\_version\_ls = 0

The least significant 32 bits of the file’s binary version number. This member is used with file\_version\_ms to form a 64-bit value used for numeric comparisons.

##### [` product_version_ms `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t18product_version_msE>)

uint32\_t product\_version\_ms = 0

The most significant 32 bits of the binary version number of the product with which this file was distributed. This member is used with product\_version\_ls to form a 64-bit value used for numeric comparisons.

##### [` product_version_ls `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t18product_version_lsE>)

uint32\_t product\_version\_ls = 0

The least significant 32 bits of the binary version number of the product with which this file was distributed. This member is used with product\_version\_ms to form a 64-bit value used for numeric comparisons.

##### [` file_flags_mask `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t15file_flags_maskE>)

uint32\_t file\_flags\_mask = 0

Contains a bitmask that specifies the valid bits in file\_flags. A bit is valid only if it was defined when the file was created.

##### [` file_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t10file_flagsE>)

uint32\_t file\_flags = 0

Contains a bitmask that specifies the Boolean attributes of the file. This member can include one or more of the values specified in [FILE\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#structLIEF_1_1PE_1_1ResourceVersion_1_1fixed__file__info__t_1a048d2149602823fd4d97830906bc50fe>).

##### [` file_os `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t7file_osE>)

uint32\_t file\_os = 0

The operating system for which this file was designed. This member can be one of the values specified in [VERSION\_OS](<https://lief.re/doc/latest/formats/pe/cpp.html#structLIEF_1_1PE_1_1ResourceVersion_1_1fixed__file__info__t_1a0796072b66a19ce71a5a619d95e2ad05>).

##### [` file_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t9file_typeE>)

uint32\_t file\_type = 0

The general type of file. This member can be one of the values specified in [FILE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#structLIEF_1_1PE_1_1ResourceVersion_1_1fixed__file__info__t_1a88e986c617c98cea3137a8015aef297f>). All other values are reserved.

##### [` file_subtype `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t12file_subtypeE>)

uint32\_t file\_subtype = 0

The function of the file. The possible values depend on the value of file\_type.

##### [` file_date_ms `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t12file_date_msE>)

uint32\_t file\_date\_ms = 0

The most significant 32 bits of the file’s 64-bit binary creation date and time stamp.

##### [` file_date_ls `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t12file_date_lsE>)

uint32\_t file\_date\_ls = 0

The least significant 32 bits of the file’s 64-bit binary creation date and time stamp.

Public Static Attributes

##### [` DRV_K `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t5DRV_KE>)

static auto DRV\_K = uint64\_t(1) &lt;&lt; 33

##### [` FONT_K `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t6FONT_KE>)

static auto FONT\_K = uint64\_t(1) &lt;&lt; 34

##### [` SIGNATURE_VALUE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_t15SIGNATURE_VALUEE>)

static auto SIGNATURE\_VALUE = 0xFEEF04BD

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_tlsERNSt7ostreamERK17fixed_file_info_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [fixed\_file\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15ResourceVersion17fixed_file_info_tE> "LIEF::PE::ResourceVersion::fixed_file_info_t") &amp;info)

---

## [Resource Var File Info](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-var-file-info>)

### [` ResourceVarFileInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE>)

class ResourceVarFileInfo : public LIEF::Object

Representation of the `VarFileInfo` structure.

This structure represents the organization of data in a file-version resource. It contains version information not dependent on a particular language and code page combination.

See: [https://learn.microsoft.com/en-us/windows/win32/menurc/varfileinfo](<https://learn.microsoft.com/en-us/windows/win32/menurc/varfileinfo>)

Public Types

#### [` vars_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo6vars_tE>)

using vars\_t = std::vector&lt;[ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE> "LIEF::PE::ResourceVar")&gt;

#### [` it_vars `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo7it_varsE>)

using it\_vars = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[vars\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo6vars_tE> "LIEF::PE::ResourceVarFileInfo::vars_t")&amp;&gt;

#### [` it_const_vars `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo13it_const_varsE>)

using it\_const\_vars = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [vars\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo6vars_tE> "LIEF::PE::ResourceVarFileInfo::vars_t")&amp;&gt;

Public Functions

#### [` ResourceVarFileInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo19ResourceVarFileInfoEv>)

ResourceVarFileInfo() = default

#### [` ResourceVarFileInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo19ResourceVarFileInfoERK19ResourceVarFileInfo>)

ResourceVarFileInfo(const [ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo19ResourceVarFileInfoERK19ResourceVarFileInfo> "LIEF::PE::ResourceVarFileInfo::ResourceVarFileInfo")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoaSERK19ResourceVarFileInfo>)

[ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo") &amp;operator=(const [ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo")&amp;) = default

#### [` ResourceVarFileInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo19ResourceVarFileInfoERR19ResourceVarFileInfo>)

ResourceVarFileInfo([ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo19ResourceVarFileInfoERR19ResourceVarFileInfo> "LIEF::PE::ResourceVarFileInfo::ResourceVarFileInfo")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoaSERR19ResourceVarFileInfo>)

[ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo") &amp;operator=([ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo")&amp;&amp;) = default

#### [` ~ResourceVarFileInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoD0Ev>)

~ResourceVarFileInfo() override = default

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceVarFileInfo4typeEv>)

inline uint16\_t type() const

The type of data in the version resource.

- `1` if it contains text data
- `0` if it contains binary data

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceVarFileInfo3keyEv>)

inline const std::u16string &amp;key() const

[Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>) of the structure. Must be the unicode string “VarFileInfo”.

#### [` key_u8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceVarFileInfo6key_u8Ev>)

std::string key\_u8() const

Key as an utf8 string.

#### [` vars `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo4varsEv>)

inline [it\_vars](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo7it_varsE> "LIEF::PE::ResourceVarFileInfo::it_vars") vars()

Iterator over the embedded variables associated to the structure.

#### [` vars `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceVarFileInfo4varsEv>)

inline [it\_const\_vars](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo13it_const_varsE> "LIEF::PE::ResourceVarFileInfo::it_const_vars") vars() const

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo4typeE8uint16_t>)

inline [ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo") &amp;type(uint16\_t type)

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo3keyENSt9u16stringE>)

inline [ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo") &amp;key(std::u16string key)

#### [` add_var `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo7add_varE11ResourceVar>)

inline void add\_var([ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE> "LIEF::PE::ResourceVar") var)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceVarFileInfo6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfo5parseER12BinaryStream>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo")&gt; parse([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfolsERNSt7ostreamERK19ResourceVarFileInfo>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceVarFileInfoE> "LIEF::PE::ResourceVarFileInfo") &amp;entry)

---

## [Resource Var](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-var>)

### [` ResourceVar `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE>)

class ResourceVar

This class represents an element of the [ResourceVarFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ResourceVarFileInfo>) structure It typically contains a list of language and code page identifier pairs that the version of the application or DLL supports.

See: [https://learn.microsoft.com/en-us/windows/win32/menurc/var-str](<https://learn.microsoft.com/en-us/windows/win32/menurc/var-str>)

Public Types

#### [` values_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar8values_tE>)

using values\_t = std::vector&lt;uint32\_t&gt;

Translation values as a vector of `uint32_t`.

Public Functions

#### [` ResourceVar `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar11ResourceVarEv>)

ResourceVar() = default

#### [` ResourceVar `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar11ResourceVarERK11ResourceVar>)

ResourceVar(const [ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar11ResourceVarERK11ResourceVar> "LIEF::PE::ResourceVar::ResourceVar")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVaraSERK11ResourceVar>)

[ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE> "LIEF::PE::ResourceVar") &amp;operator=(const [ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE> "LIEF::PE::ResourceVar")&amp;) = default

#### [` ResourceVar `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar11ResourceVarERR11ResourceVar>)

ResourceVar([ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar11ResourceVarERR11ResourceVar> "LIEF::PE::ResourceVar::ResourceVar")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVaraSERR11ResourceVar>)

[ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE> "LIEF::PE::ResourceVar") &amp;operator=([ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE> "LIEF::PE::ResourceVar")&amp;&amp;) = default

#### [` ~ResourceVar `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarD0Ev>)

~ResourceVar() = default

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ResourceVar3keyEv>)

inline const std::u16string &amp;key() const

The Unicode string `L"Translation"`.

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ResourceVar4typeEv>)

inline uint16\_t type() const

The type of data in the version resource:

- `1` if it contains text data
- `0` if it contains binary

#### [` key_u8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ResourceVar6key_u8Ev>)

std::string key\_u8() const

The key as an utf8 string.

#### [` values `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11ResourceVar6valuesEv>)

inline const [values\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar8values_tE> "LIEF::PE::ResourceVar::values_t") &amp;values() const

Return the translation values.

The low-order word of each uint32\_t must contain a Microsoft language identifier, and the high-order word must contain the IBM code page number. Either high-order or low-order word can be zero, indicating that the file is language or code page independent

#### [` values `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar6valuesEv>)

inline [values\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar8values_tE> "LIEF::PE::ResourceVar::values_t") &amp;values()

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar3keyENSt9u16stringE>)

inline [ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE> "LIEF::PE::ResourceVar") &amp;key(std::u16string key)

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar4typeE8uint16_t>)

inline [ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE> "LIEF::PE::ResourceVar") &amp;type(uint16\_t ty)

#### [` add_value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar9add_valueE8uint32_t>)

inline void add\_value(uint32\_t val)

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVar5parseER12BinaryStream>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE> "LIEF::PE::ResourceVar")&gt; parse([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarlsERNSt7ostreamERK11ResourceVar>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ResourceVar](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11ResourceVarE> "LIEF::PE::ResourceVar") &amp;entry)

---

## [Resource String File Info](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-string-file-info>)

### [` ResourceStringFileInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE>)

class ResourceStringFileInfo : public LIEF::Object

Representation of the `StringFileInfo` structure.

It contains version information that can be displayed for a particular language and code page.

See: [https://learn.microsoft.com/en-us/windows/win32/menurc/stringfileinfo](<https://learn.microsoft.com/en-us/windows/win32/menurc/stringfileinfo>)

Public Types

#### [` elements_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo10elements_tE>)

using elements\_t = std::vector&lt;[ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE> "LIEF::PE::ResourceStringTable")&gt;

#### [` it_const_elements `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo17it_const_elementsE>)

using it\_const\_elements = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [elements\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo10elements_tE> "LIEF::PE::ResourceStringFileInfo::elements_t")&amp;&gt;

#### [` it_elements `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo11it_elementsE>)

using it\_elements = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[elements\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo10elements_tE> "LIEF::PE::ResourceStringFileInfo::elements_t")&amp;&gt;

Public Functions

#### [` ResourceStringFileInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo22ResourceStringFileInfoEv>)

ResourceStringFileInfo() = default

#### [` ResourceStringFileInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo22ResourceStringFileInfoERK22ResourceStringFileInfo>)

ResourceStringFileInfo(const [ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo22ResourceStringFileInfoERK22ResourceStringFileInfo> "LIEF::PE::ResourceStringFileInfo::ResourceStringFileInfo")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoaSERK22ResourceStringFileInfo>)

[ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo") &amp;operator=(const [ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo")&amp;) = default

#### [` ResourceStringFileInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo22ResourceStringFileInfoERR22ResourceStringFileInfo>)

ResourceStringFileInfo([ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo22ResourceStringFileInfoERR22ResourceStringFileInfo> "LIEF::PE::ResourceStringFileInfo::ResourceStringFileInfo")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoaSERR22ResourceStringFileInfo>)

[ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo") &amp;operator=([ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo")&amp;&amp;) = default

#### [` ~ResourceStringFileInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoD0Ev>)

~ResourceStringFileInfo() override = default

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceStringFileInfo4typeEv>)

inline uint16\_t type() const

The type of data in the version resource.

- `1` if it contains text data
- `0` if it contains binary data

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceStringFileInfo3keyEv>)

inline const std::u16string &amp;key() const

[Signature](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Signature>) of the structure. Must be the unicode string “StringFileInfo”.

#### [` children `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceStringFileInfo8childrenEv>)

inline [it\_const\_elements](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo17it_const_elementsE> "LIEF::PE::ResourceStringFileInfo::it_const_elements") children() const

Iterator over the children values.

#### [` children `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo8childrenEv>)

inline [it\_elements](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo11it_elementsE> "LIEF::PE::ResourceStringFileInfo::it_elements") children()

#### [` key_u8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceStringFileInfo6key_u8Ev>)

std::string key\_u8() const

The key as an utf8 string.

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo4typeE8uint16_t>)

inline [ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo") &amp;type(uint16\_t type)

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo3keyENSt9u16stringE>)

inline [ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo") &amp;key(std::u16string key)

#### [` add_child `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo9add_childE19ResourceStringTable>)

inline void add\_child([ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE> "LIEF::PE::ResourceStringTable") table)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22ResourceStringFileInfo6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfo5parseER12BinaryStream>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo")&gt; parse([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfolsERNSt7ostreamERK22ResourceStringFileInfo>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ResourceStringFileInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22ResourceStringFileInfoE> "LIEF::PE::ResourceStringFileInfo") &amp;info)

---

## [Resource String Table](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-string-table>)

### [` ResourceStringTable `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE>)

class ResourceStringTable : public LIEF::Object

This class represents the `StringTable` structure. This structure can be seen as a dictionary of key-value pairs with keys and values defined as UTF-16 strings.

Public Types

#### [` entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable9entries_tE>)

using entries\_t = std::vector&lt;[entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable7entry_tE> "LIEF::PE::ResourceStringTable::entry_t")&gt;

#### [` it_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable10it_entriesE>)

using it\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable9entries_tE> "LIEF::PE::ResourceStringTable::entries_t")&amp;&gt;

#### [` it_const_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable16it_const_entriesE>)

using it\_const\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable9entries_tE> "LIEF::PE::ResourceStringTable::entries_t")&amp;&gt;

Public Functions

#### [` ResourceStringTable `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable19ResourceStringTableEv>)

ResourceStringTable() = default

#### [` ResourceStringTable `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable19ResourceStringTableERK19ResourceStringTable>)

ResourceStringTable(const [ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable19ResourceStringTableERK19ResourceStringTable> "LIEF::PE::ResourceStringTable::ResourceStringTable")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableaSERK19ResourceStringTable>)

[ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE> "LIEF::PE::ResourceStringTable") &amp;operator=(const [ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE> "LIEF::PE::ResourceStringTable")&amp;) = default

#### [` ResourceStringTable `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable19ResourceStringTableERR19ResourceStringTable>)

ResourceStringTable([ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable19ResourceStringTableERR19ResourceStringTable> "LIEF::PE::ResourceStringTable::ResourceStringTable")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableaSERR19ResourceStringTable>)

[ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE> "LIEF::PE::ResourceStringTable") &amp;operator=([ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE> "LIEF::PE::ResourceStringTable")&amp;&amp;) = default

#### [` ~ResourceStringTable `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableD0Ev>)

~ResourceStringTable() override = default

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable3keyEv>)

inline const std::u16string &amp;key() const

An 8-digit hexadecimal number stored as a Unicode string. The four most significant digits represent the language identifier. The four least significant digits represent the code page for which the data is formatted. Each Microsoft Standard Language identifier contains two parts: the low-order 10 bits specify the major language, and the high-order 6 bits specify the sublanguage.

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable4typeEv>)

inline uint16\_t type() const

The type of data in the version resource:

- `1` if it contains text data
- `0` if it contains binary

#### [` key_u8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable6key_u8Ev>)

std::string key\_u8() const

The key as an utf8 string.

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable7entriesEv>)

inline [it\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable10it_entriesE> "LIEF::PE::ResourceStringTable::it_entries") entries()

Iterator over the different [entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#structLIEF_1_1PE_1_1ResourceStringTable_1_1entry__t>) element of this table.

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable7entriesEv>)

inline [it\_const\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable16it_const_entriesE> "LIEF::PE::ResourceStringTable::it_const_entries") entries() const

#### [` get `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable3getERKNSt9u16stringE>)

inline std::optional&lt;std::u16string&gt; get(const std::u16string &amp;key) const

#### [` get `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable3getERKNSt6stringE>)

std::optional&lt;std::string&gt; get(const std::string &amp;key) const

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable3keyENSt9u16stringE>)

inline [ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE> "LIEF::PE::ResourceStringTable") &amp;key(std::u16string value)

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable4typeE8uint16_t>)

inline [ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE> "LIEF::PE::ResourceStringTable") &amp;type(uint16\_t value)

#### [` add_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable9add_entryE7entry_t>)

inline void add\_entry([entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable7entry_tE> "LIEF::PE::ResourceStringTable::entry_t") entry)

#### [` add_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable9add_entryENSt9u16stringENSt9u16stringE>)

inline void add\_entry(std::u16string key, std::u16string value)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` operator[] `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTableixERKNSt6stringE>)

inline std::optional&lt;std::string&gt; operator[](const std::string &amp;str) const

#### [` operator[] `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTableixERKNSt9u16stringE>)

inline std::optional&lt;std::u16string&gt; operator[](const std::u16string &amp;str) const

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable5parseER12BinaryStream>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE> "LIEF::PE::ResourceStringTable")&gt; parse([BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTablelsERNSt7ostreamERK19ResourceStringTable>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ResourceStringTable](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTableE> "LIEF::PE::ResourceStringTable") &amp;table)

#### [` entry_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable7entry_tE>)

struct entry\_t

An entry in this table which is composed of an UTF-16 key and an UTF-16 value.

Public Functions

##### [` key_u8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable7entry_t6key_u8Ev>)

std::string key\_u8() const

Key in utf8 representation.

##### [` value_u8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable7entry_t8value_u8Ev>)

std::string value\_u8() const

Value in utf8 representation.

##### [` is_defined `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable7entry_t10is_definedEv>)

inline bool is\_defined() const

##### [` operator bool `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable7entry_tcvbEv>)

inline operator bool() const

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceStringTable7entry_t9to_stringEv>)

inline std::string to\_string() const

Public Members

##### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable7entry_t3keyE>)

std::u16string key

##### [` value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable7entry_t5valueE>)

std::u16string value

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable7entry_tlsERNSt7ostreamERK7entry_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceStringTable7entry_tE> "LIEF::PE::ResourceStringTable::entry_t") &amp;entry)

---

## [Resource Accelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#resource-accelerator>)

### [` ResourceAccelerator `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorE>)

class ResourceAccelerator : public LIEF::Object

Public Types

#### [` FLAGS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGSE>)

enum class FLAGS : uint32\_t

From: [https://docs.microsoft.com/en-us/windows/win32/menurc/acceltableentry](<https://docs.microsoft.com/en-us/windows/win32/menurc/acceltableentry>).

*Values:*

##### [` VIRTKEY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGS7VIRTKEYE>)

enumerator VIRTKEY = 0x01

The accelerator key is a virtual-key code. If this flag is not specified, the accelerator key is assumed to specify an ASCII character code.

##### [` NOINVERT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGS8NOINVERTE>)

enumerator NOINVERT = 0x02

A menu item on the menu bar is not highlighted when an accelerator is used. This attribute is obsolete and retained only for backward compatibility with resource files designed for 16-bit Windows.

##### [` SHIFT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGS5SHIFTE>)

enumerator SHIFT = 0x04

The accelerator is activated only if the user presses the SHIFT key. This flag applies only to virtual keys.

##### [` CONTROL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGS7CONTROLE>)

enumerator CONTROL = 0x08

The accelerator is activated only if the user presses the CTRL key. This flag applies only to virtual keys.

##### [` ALT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGS3ALTE>)

enumerator ALT = 0x10

The accelerator is activated only if the user presses the ALT key. This flag applies only to virtual keys.

##### [` END `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGS3ENDE>)

enumerator END = 0x80

The entry is last in an accelerator table.

Public Functions

#### [` ResourceAccelerator `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator19ResourceAcceleratorEv>)

ResourceAccelerator() = default

#### [` ResourceAccelerator `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator19ResourceAcceleratorERKN7details27pe_resource_acceltableentryE>)

explicit ResourceAccelerator(const details::pe\_resource\_acceltableentry&amp;)

#### [` ResourceAccelerator `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator19ResourceAcceleratorERK19ResourceAccelerator>)

ResourceAccelerator(const [ResourceAccelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator19ResourceAcceleratorERK19ResourceAccelerator> "LIEF::PE::ResourceAccelerator::ResourceAccelerator")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratoraSERK19ResourceAccelerator>)

[ResourceAccelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorE> "LIEF::PE::ResourceAccelerator") &amp;operator=(const [ResourceAccelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorE> "LIEF::PE::ResourceAccelerator")&amp;) = default

#### [` ResourceAccelerator `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator19ResourceAcceleratorERR19ResourceAccelerator>)

ResourceAccelerator([ResourceAccelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator19ResourceAcceleratorERR19ResourceAccelerator> "LIEF::PE::ResourceAccelerator::ResourceAccelerator")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratoraSERR19ResourceAccelerator>)

[ResourceAccelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorE> "LIEF::PE::ResourceAccelerator") &amp;operator=([ResourceAccelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorE> "LIEF::PE::ResourceAccelerator")&amp;&amp;) = default

#### [` ~ResourceAccelerator `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorD0Ev>)

~ResourceAccelerator() override = default

#### [` flags_list `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceAccelerator10flags_listEv>)

std::vector&lt;[FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGSE> "LIEF::PE::ResourceAccelerator::FLAGS")&gt; flags\_list() const

#### [` ansi_str `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceAccelerator8ansi_strEv>)

inline const char \*ansi\_str() const

#### [` flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceAccelerator5flagsEv>)

inline int16\_t flags() const

Describe the keyboard accelerator characteristics.

#### [` ansi `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceAccelerator4ansiEv>)

inline int16\_t ansi() const

An ANSI character value or a virtual-key code that identifies the accelerator key.

#### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceAccelerator2idEv>)

inline uint16\_t id() const

An identifier for the keyboard accelerator.

#### [` padding `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceAccelerator7paddingEv>)

inline int16\_t padding() const

The number of bytes inserted to ensure that the structure is aligned on a DWORD boundary.

#### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceAccelerator3hasE5FLAGS>)

inline bool has([FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGSE> "LIEF::PE::ResourceAccelerator::FLAGS") flag) const

Whether the entry has the given flag.

#### [` add `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator3addE5FLAGS>)

inline [ResourceAccelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorE> "LIEF::PE::ResourceAccelerator") &amp;add([FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGSE> "LIEF::PE::ResourceAccelerator::FLAGS") flag)

#### [` remove `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator6removeE5FLAGS>)

inline [ResourceAccelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorE> "LIEF::PE::ResourceAccelerator") &amp;remove([FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAccelerator5FLAGSE> "LIEF::PE::ResourceAccelerator::FLAGS") flag)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19ResourceAccelerator6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorlsERNSt7ostreamERK19ResourceAccelerator>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ResourceAccelerator](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19ResourceAcceleratorE> "LIEF::PE::ResourceAccelerator") &amp;acc)

---

## [Rich Header](<https://lief.re/doc/latest/formats/pe/cpp.html#rich-header>)

### [` RichHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeaderE>)

class RichHeader : public LIEF::Object

Class which represents the not-so-documented rich header.

This structure is usually located at the end of the [Binary::dos\_stub](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary_1abeb8e5858a33ee2d4dfde78984862f2c>) and contains information about the build environment. It is generated by the Microsoft linker `link.exe` and there are no options to disable or remove this information.

Public Types

#### [` entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader9entries_tE>)

using entries\_t = std::vector&lt;[RichEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntryE> "LIEF::PE::RichEntry")&gt;

#### [` it_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader10it_entriesE>)

using it\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader9entries_tE> "LIEF::PE::RichHeader::entries_t")&amp;&gt;

#### [` it_const_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader16it_const_entriesE>)

using it\_const\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader9entries_tE> "LIEF::PE::RichHeader::entries_t")&amp;&gt;

Public Functions

#### [` RichHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader10RichHeaderEv>)

RichHeader() = default

#### [` RichHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader10RichHeaderERK10RichHeader>)

RichHeader(const [RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader10RichHeaderERK10RichHeader> "LIEF::PE::RichHeader::RichHeader")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeaderaSERK10RichHeader>)

[RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeaderE> "LIEF::PE::RichHeader") &amp;operator=(const [RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeaderE> "LIEF::PE::RichHeader")&amp;) = default

#### [` ~RichHeader `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeaderD0Ev>)

~RichHeader() override = default

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10RichHeader3keyEv>)

inline uint32\_t key() const

Key used to encode the header (xor operation).

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader7entriesEv>)

inline [it\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader10it_entriesE> "LIEF::PE::RichHeader::it_entries") entries()

Return an iterator over the [PE::RichEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RichEntry>) within the header.

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10RichHeader7entriesEv>)

inline [it\_const\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader16it_const_entriesE> "LIEF::PE::RichHeader::it_const_entries") entries() const

#### [` key `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader3keyE8uint32_t>)

inline void key(uint32\_t key)

#### [` add_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader9add_entryE9RichEntry>)

inline void add\_entry([RichEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntryE> "LIEF::PE::RichEntry") entry)

Add a new [PE::RichEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RichEntry>).

#### [` add_entry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader9add_entryE8uint16_t8uint16_t8uint32_t>)

inline void add\_entry(uint16\_t id, uint16\_t build\_id, uint32\_t count)

Add a new entry given the id, build\_id and count.

#### [` raw `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10RichHeader3rawEv>)

inline std::vector&lt;uint8\_t&gt; raw() const

The raw structure of the Rich header without xor-encoding.

This function is equivalent as calling RichHeader::raw(uint32\_t) with a `xor_key` set to 0

#### [` raw `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10RichHeader3rawE8uint32_t>)

std::vector&lt;uint8\_t&gt; raw(uint32\_t xor\_key) const

Given this rich header, this function re-computes the raw bytes of the structure with the provided xor-key.

You can access the decoded data’s structure with the `xor_key` set to 0

**Parameters:**

**xor\_key** – **[in]** The key to use for the xor-encoding (can be 0)

#### [` hash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10RichHeader4hashE10ALGORITHMS>)

inline std::vector&lt;uint8\_t&gt; hash([ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") algo) const

Compute the hash of the decoded rich header structure with the given hash algorithm.

#### [` hash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10RichHeader4hashE10ALGORITHMS8uint32_t>)

std::vector&lt;uint8\_t&gt; hash([ALGORITHMS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE> "LIEF::PE::ALGORITHMS") algo, uint32\_t xor\_key) const

Compute the hash of the rich header structure encoded with the provided key.

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10RichHeader6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Attributes

#### [` RICH_MAGIC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader10RICH_MAGICE>)

static uint8\_t RICH\_MAGIC[] = {'R', 'i', 'c', 'h'}

#### [` RICH_MAGIC_INT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader14RICH_MAGIC_INTE>)

static uint32\_t RICH\_MAGIC\_INT = 0x68636952

#### [` DANS_MAGIC_NUMBER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeader17DANS_MAGIC_NUMBERE>)

static uint32\_t DANS\_MAGIC\_NUMBER = 0x536E6144

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeaderlsERNSt7ostreamERK10RichHeader>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RichHeaderE> "LIEF::PE::RichHeader") &amp;rich\_header)

---

## [Rich Entry](<https://lief.re/doc/latest/formats/pe/cpp.html#rich-entry>)

### [` RichEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntryE>)

class RichEntry : public LIEF::Object

Class which represents an entry associated to the [RichHeader](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RichHeader>).

Public Functions

#### [` RichEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntry9RichEntryEv>)

RichEntry() = default

#### [` RichEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntry9RichEntryE8uint16_t8uint16_t8uint32_t>)

inline RichEntry(uint16\_t id, uint16\_t build\_id, uint32\_t count)

#### [` RichEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntry9RichEntryERK9RichEntry>)

RichEntry(const [RichEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntry9RichEntryERK9RichEntry> "LIEF::PE::RichEntry::RichEntry")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntryaSERK9RichEntry>)

[RichEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntryE> "LIEF::PE::RichEntry") &amp;operator=(const [RichEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntryE> "LIEF::PE::RichEntry")&amp;) = default

#### [` ~RichEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntryD0Ev>)

~RichEntry() override = default

#### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9RichEntry2idEv>)

inline uint16\_t id() const

Entry type.

#### [` build_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9RichEntry8build_idEv>)

inline uint16\_t build\_id() const

Build number of the tool (if any).

#### [` count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9RichEntry5countEv>)

inline uint32\_t count() const

*Occurrence* count.

#### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntry2idE8uint16_t>)

inline void id(uint16\_t id)

#### [` build_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntry8build_idE8uint16_t>)

inline void build\_id(uint16\_t build\_id)

#### [` count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntry5countE8uint32_t>)

inline void count(uint32\_t count)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9RichEntry6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntrylsERNSt7ostreamERK9RichEntry>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [RichEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9RichEntryE> "LIEF::PE::RichEntry") &amp;rich\_entry)

---

## [Code Integrity](<https://lief.re/doc/latest/formats/pe/cpp.html#code-integrity>)

### [` CodeIntegrity `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE>)

class CodeIntegrity : public LIEF::Object

Public Functions

#### [` CodeIntegrity `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrity13CodeIntegrityEv>)

CodeIntegrity() = default

#### [` ~CodeIntegrity `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityD0Ev>)

~CodeIntegrity() override = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityaSERK13CodeIntegrity>)

[CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity") &amp;operator=(const [CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity")&amp;) = default

#### [` CodeIntegrity `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrity13CodeIntegrityERK13CodeIntegrity>)

CodeIntegrity(const [CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrity13CodeIntegrityERK13CodeIntegrity> "LIEF::PE::CodeIntegrity::CodeIntegrity")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityaSERR13CodeIntegrity>)

[CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity") &amp;operator=([CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity")&amp;&amp;) = default

#### [` CodeIntegrity `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrity13CodeIntegrityERR13CodeIntegrity>)

CodeIntegrity([CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrity13CodeIntegrityERR13CodeIntegrity> "LIEF::PE::CodeIntegrity::CodeIntegrity")&amp;&amp;) = default

#### [` flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13CodeIntegrity5flagsEv>)

inline uint16\_t flags() const

Flags to indicate if CI information is available, etc.

#### [` catalog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13CodeIntegrity7catalogEv>)

inline uint16\_t catalog() const

0xFFFF means not available

#### [` catalog_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13CodeIntegrity14catalog_offsetEv>)

inline uint32\_t catalog\_offset() const

#### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13CodeIntegrity8reservedEv>)

inline uint32\_t reserved() const

Additional bitmask to be defined later.

#### [` flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrity5flagsE8uint16_t>)

inline [CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity") &amp;flags(uint16\_t flags)

#### [` catalog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrity7catalogE8uint16_t>)

inline [CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity") &amp;catalog(uint16\_t catalog)

#### [` catalog_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrity14catalog_offsetE8uint32_t>)

inline [CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity") &amp;catalog\_offset(uint32\_t catalog\_offset)

#### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrity8reservedE8uint32_t>)

inline [CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity") &amp;reserved(uint32\_t reserved)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13CodeIntegrity6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrity5parseER6ParserR12BinaryStream>)

static [result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity")&gt; parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegritylsERNSt7ostreamERK13CodeIntegrity>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity") &amp;entry)

---

## [Pogo](<https://lief.re/doc/latest/formats/pe/cpp.html#pogo>)

### [` Pogo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4PogoE>)

class Pogo : public LIEF::PE::[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")

This class represents a *Profile Guided Optimization* entry from the debug directory (`IMAGE_DEBUG_TYPE_POGO`).

Public Types

#### [` SIGNATURES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURESE>)

enum class SIGNATURES

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURES7UNKNOWNE>)

enumerator UNKNOWN = 0x0fffffff

##### [` ZERO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURES4ZEROE>)

enumerator ZERO = 0x00000000

##### [` LCTG `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURES4LCTGE>)

enumerator LCTG = 0x4C544347

##### [` PGI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURES3PGIE>)

enumerator PGI = 0x50474900

##### [` PGO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURES3PGOE>)

enumerator PGO = 0x50474F00

##### [` PGU `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURES3PGUE>)

enumerator PGU = 0x50475500

##### [` SPGO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURES4SPGOE>)

enumerator SPGO = 0x5350474f

#### [` entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo9entries_tE>)

using entries\_t = std::vector&lt;[PogoEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryE> "LIEF::PE::PogoEntry")&gt;

#### [` it_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10it_entriesE>)

using it\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo9entries_tE> "LIEF::PE::Pogo::entries_t")&amp;&gt;

#### [` it_const_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo16it_const_entriesE>)

using it\_const\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo9entries_tE> "LIEF::PE::Pogo::entries_t")&amp;&gt;

Public Functions

#### [` Pogo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo4PogoEv>)

inline Pogo()

#### [` Pogo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo4PogoE10SIGNATURES>)

inline Pogo([SIGNATURES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURESE> "LIEF::PE::Pogo::SIGNATURES") sig)

#### [` Pogo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo4PogoERKN7details8pe_debugE10SIGNATURESP7Section>)

inline Pogo(const details::pe\_debug &amp;debug, [SIGNATURES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURESE> "LIEF::PE::Pogo::SIGNATURES") sig, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*sec)

#### [` Pogo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo4PogoERK4Pogo>)

Pogo(const [Pogo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo4PogoERK4Pogo> "LIEF::PE::Pogo::Pogo")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4PogoaSERK4Pogo>)

[Pogo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4PogoE> "LIEF::PE::Pogo") &amp;operator=(const [Pogo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4PogoE> "LIEF::PE::Pogo")&amp;) = default

#### [` Pogo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo4PogoERR4Pogo>)

Pogo([Pogo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo4PogoERR4Pogo> "LIEF::PE::Pogo::Pogo")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4PogoaSERR4Pogo>)

[Pogo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4PogoE> "LIEF::PE::Pogo") &amp;operator=([Pogo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4PogoE> "LIEF::PE::Pogo")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4Pogo5cloneEv>)

inline virtual std::unique\_ptr&lt;[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&gt; clone() const override

#### [` signature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4Pogo9signatureEv>)

inline [SIGNATURES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10SIGNATURESE> "LIEF::PE::Pogo::SIGNATURES") signature() const

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo7entriesEv>)

inline [it\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo10it_entriesE> "LIEF::PE::Pogo::it_entries") entries()

An iterator over the different POGO elements.

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4Pogo7entriesEv>)

inline [it\_const\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo16it_const_entriesE> "LIEF::PE::Pogo::it_const_entries") entries() const

#### [` add `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo3addE9PogoEntry>)

inline void add([PogoEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryE> "LIEF::PE::PogoEntry") entry)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4Pogo6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE4Pogo9to_stringEv>)

virtual std::string to\_string() const override

#### [` ~Pogo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4PogoD0Ev>)

~Pogo() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE4Pogo7classofEPK5Debug>)

static inline bool classof(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") \*debug)

---

## [Pogo Entry](<https://lief.re/doc/latest/formats/pe/cpp.html#pogo-entry>)

### [` PogoEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryE>)

class PogoEntry : public LIEF::Object

Public Functions

#### [` PogoEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntry9PogoEntryEv>)

PogoEntry() = default

#### [` PogoEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntry9PogoEntryERR9PogoEntry>)

PogoEntry([PogoEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntry9PogoEntryERR9PogoEntry> "LIEF::PE::PogoEntry::PogoEntry") &amp;&amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryaSERR9PogoEntry>)

[PogoEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryE> "LIEF::PE::PogoEntry") &amp;operator=([PogoEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryE> "LIEF::PE::PogoEntry") &amp;&amp;other) = default

#### [` PogoEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntry9PogoEntryERK9PogoEntry>)

PogoEntry(const [PogoEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntry9PogoEntryERK9PogoEntry> "LIEF::PE::PogoEntry::PogoEntry")&amp;) = default

#### [` PogoEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntry9PogoEntryE8uint32_t8uint32_tNSt6stringE>)

inline PogoEntry(uint32\_t start\_rva, uint32\_t size, std::string name)

#### [` PogoEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntry9PogoEntryE8uint32_t8uint32_t>)

inline PogoEntry(uint32\_t start\_rva, uint32\_t size)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryaSERK9PogoEntry>)

[PogoEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryE> "LIEF::PE::PogoEntry") &amp;operator=(const [PogoEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryE> "LIEF::PE::PogoEntry")&amp;) = default

#### [` ~PogoEntry `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryD0Ev>)

~PogoEntry() override = default

#### [` start_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9PogoEntry9start_rvaEv>)

inline uint32\_t start\_rva() const

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9PogoEntry4sizeEv>)

inline uint32\_t size() const

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9PogoEntry4nameEv>)

inline std::string\_view name() const

#### [` start_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntry9start_rvaE8uint32_t>)

inline void start\_rva(uint32\_t start\_rva)

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntry4sizeE8uint32_t>)

inline void size(uint32\_t size)

#### [` name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntry4nameENSt6stringE>)

inline void name(std::string name)

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9PogoEntry6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntrylsERNSt7ostreamERK9PogoEntry>)

friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [PogoEntry](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9PogoEntryE> "LIEF::PE::PogoEntry") &amp;entry)

---

## [Repro](<https://lief.re/doc/latest/formats/pe/cpp.html#repro>)

### [` Repro `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5ReproE>)

class Repro : public LIEF::PE::[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")

This class represents a reproducible build entry from the debug directory. (`IMAGE_DEBUG_TYPE_REPRO`). This entry is usually generated with the undocumented `/Brepro` linker flag.

See: [https://nikhilism.com/post/2020/windows-deterministic-builds/](<https://nikhilism.com/post/2020/windows-deterministic-builds/>)

Public Functions

#### [` Repro `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro5ReproEv>)

inline Repro()

#### [` Repro `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro5ReproENSt6vectorI7uint8_tEE>)

inline Repro(std::vector&lt;uint8\_t&gt; hash)

#### [` Repro `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro5ReproERKN7details8pe_debugENSt6vectorI7uint8_tEEP7Section>)

inline Repro(const details::pe\_debug &amp;dbg, std::vector&lt;uint8\_t&gt; hash, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*sec)

#### [` Repro `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro5ReproERKN7details8pe_debugEP7Section>)

inline Repro(const details::pe\_debug &amp;dbg, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*sec)

#### [` Repro `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro5ReproERK5Repro>)

Repro(const [Repro](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro5ReproERK5Repro> "LIEF::PE::Repro::Repro") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5ReproaSERK5Repro>)

[Repro](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5ReproE> "LIEF::PE::Repro") &amp;operator=(const [Repro](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5ReproE> "LIEF::PE::Repro") &amp;other) = default

#### [` Repro `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro5ReproERR5Repro>)

Repro([Repro](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro5ReproERR5Repro> "LIEF::PE::Repro::Repro")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5ReproaSERR5Repro>)

[Repro](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5ReproE> "LIEF::PE::Repro") &amp;operator=([Repro](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5ReproE> "LIEF::PE::Repro") &amp;&amp;other) = default

#### [` hash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Repro4hashEv>)

inline span&lt;const uint8\_t&gt; hash() const

The hash associated with the reproducible build.

#### [` hash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro4hashEv>)

inline span&lt;uint8\_t&gt; hash()

#### [` hash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro4hashENSt6vectorI7uint8_tEE>)

inline void hash(std::vector&lt;uint8\_t&gt; h)

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Repro5cloneEv>)

inline virtual std::unique\_ptr&lt;[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&gt; clone() const override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Repro6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE5Repro9to_stringEv>)

virtual std::string to\_string() const override

#### [` ~Repro `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5ReproD0Ev>)

~Repro() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5Repro7classofEPK5Debug>)

static inline bool classof(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") \*debug)

---

## [PDBChecksum](<https://lief.re/doc/latest/formats/pe/cpp.html#pdbchecksum>)

### [` PDBChecksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksumE>)

class PDBChecksum : public LIEF::PE::[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")

This class represents the PDB Checksum debug entry which is essentially an array of bytes representing the checksum of the PDB content.

Public Types

#### [` HASH_ALGO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum9HASH_ALGOE>)

enum class HASH\_ALGO : uint32\_t

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum9HASH_ALGO7UNKNOWNE>)

enumerator UNKNOWN = 0

##### [` SHA256 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum9HASH_ALGO6SHA256E>)

enumerator SHA256

Public Functions

#### [` PDBChecksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum11PDBChecksumE9HASH_ALGONSt6vectorI7uint8_tEE>)

inline PDBChecksum([HASH\_ALGO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum9HASH_ALGOE> "LIEF::PE::PDBChecksum::HASH_ALGO") algo, std::vector&lt;uint8\_t&gt; hash)

#### [` PDBChecksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum11PDBChecksumERKN7details8pe_debugEP7Section9HASH_ALGONSt6vectorI7uint8_tEE>)

inline PDBChecksum(const details::pe\_debug &amp;dbg, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*sec, [HASH\_ALGO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum9HASH_ALGOE> "LIEF::PE::PDBChecksum::HASH_ALGO") algo, std::vector&lt;uint8\_t&gt; hash)

#### [` PDBChecksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum11PDBChecksumERK11PDBChecksum>)

PDBChecksum(const [PDBChecksum](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum11PDBChecksumERK11PDBChecksum> "LIEF::PE::PDBChecksum::PDBChecksum") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksumaSERK11PDBChecksum>)

[PDBChecksum](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksumE> "LIEF::PE::PDBChecksum") &amp;operator=(const [PDBChecksum](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksumE> "LIEF::PE::PDBChecksum") &amp;other) = default

#### [` PDBChecksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum11PDBChecksumERR11PDBChecksum>)

PDBChecksum([PDBChecksum](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum11PDBChecksumERR11PDBChecksum> "LIEF::PE::PDBChecksum::PDBChecksum")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksumaSERR11PDBChecksum>)

[PDBChecksum](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksumE> "LIEF::PE::PDBChecksum") &amp;operator=([PDBChecksum](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksumE> "LIEF::PE::PDBChecksum") &amp;&amp;other) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11PDBChecksum5cloneEv>)

inline virtual std::unique\_ptr&lt;[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&gt; clone() const override

#### [` hash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11PDBChecksum4hashEv>)

inline span&lt;const uint8\_t&gt; hash() const

Hash of the PDB content.

#### [` hash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum4hashEv>)

inline span&lt;uint8\_t&gt; hash()

#### [` hash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum4hashENSt6vectorI7uint8_tEE>)

inline void hash(std::vector&lt;uint8\_t&gt; h)

#### [` algorithm `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11PDBChecksum9algorithmEv>)

inline [HASH\_ALGO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum9HASH_ALGOE> "LIEF::PE::PDBChecksum::HASH_ALGO") algorithm() const

Algorithm used for hashing the PDB content.

#### [` algorithm `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum9algorithmE9HASH_ALGO>)

inline void algorithm([HASH\_ALGO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum9HASH_ALGOE> "LIEF::PE::PDBChecksum::HASH_ALGO") algo)

#### [` ~PDBChecksum `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksumD0Ev>)

~PDBChecksum() override = default

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE11PDBChecksum9to_stringEv>)

virtual std::string to\_string() const override

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum5parseERKN7details8pe_debugEP7Section4spanI7uint8_tE>)

static std::unique\_ptr&lt;[PDBChecksum](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksumE> "LIEF::PE::PDBChecksum")&gt; parse(const details::pe\_debug &amp;hdr, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section, span&lt;uint8\_t&gt; payload)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11PDBChecksum7classofEPK5Debug>)

static inline bool classof(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") \*debug)

---

## [VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#vcfeature>)

### [` VCFeature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE>)

class VCFeature : public LIEF::PE::[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")

This class represents the `IMAGE_DEBUG_TYPE_VC_FEATURE` debug entry.

Public Functions

#### [` VCFeature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature9VCFeatureERKN7details8pe_debugEP7Section8uint32_t8uint32_t8uint32_t8uint32_t8uint32_t>)

inline VCFeature(const details::pe\_debug &amp;debug, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*sec, uint32\_t pre\_vc, uint32\_t c\_cpp, uint32\_t gs, uint32\_t sdl, uint32\_t guards)

#### [` VCFeature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature9VCFeatureERK9VCFeature>)

VCFeature(const [VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature9VCFeatureERK9VCFeature> "LIEF::PE::VCFeature::VCFeature") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureaSERK9VCFeature>)

[VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE> "LIEF::PE::VCFeature") &amp;operator=(const [VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE> "LIEF::PE::VCFeature") &amp;other) = default

#### [` VCFeature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature9VCFeatureERR9VCFeature>)

VCFeature([VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature9VCFeatureERR9VCFeature> "LIEF::PE::VCFeature::VCFeature")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureaSERR9VCFeature>)

[VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE> "LIEF::PE::VCFeature") &amp;operator=([VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE> "LIEF::PE::VCFeature") &amp;&amp;other) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9VCFeature5cloneEv>)

inline virtual std::unique\_ptr&lt;[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&gt; clone() const override

#### [` pre_vcpp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9VCFeature8pre_vcppEv>)

inline uint32\_t pre\_vcpp() const

Count for `Pre-VC++ 11.00`.

#### [` c_cpp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9VCFeature5c_cppEv>)

inline uint32\_t c\_cpp() const

Count for `C/C++`.

#### [` gs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9VCFeature2gsEv>)

inline uint32\_t gs() const

Count for `/GS` (number of guard stack).

#### [` sdl `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9VCFeature3sdlEv>)

inline uint32\_t sdl() const

Whether `/sdl` was enabled for this binary.

`sdl` stands for Security Development Lifecycle and provides enhanced security features like changing security-relevant warnings into errors or enforcing guard stack.

#### [` guards `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9VCFeature6guardsEv>)

inline uint32\_t guards() const

Count for `/guardN`.

#### [` pre_vcpp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature8pre_vcppE8uint32_t>)

inline [VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE> "LIEF::PE::VCFeature") &amp;pre\_vcpp(uint32\_t value)

#### [` c_cpp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature5c_cppE8uint32_t>)

inline [VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE> "LIEF::PE::VCFeature") &amp;c\_cpp(uint32\_t value)

#### [` gs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature2gsE8uint32_t>)

inline [VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE> "LIEF::PE::VCFeature") &amp;gs(uint32\_t value)

#### [` sdl `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature3sdlE8uint32_t>)

inline [VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE> "LIEF::PE::VCFeature") &amp;sdl(uint32\_t value)

#### [` guards `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature6guardsE8uint32_t>)

inline [VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE> "LIEF::PE::VCFeature") &amp;guards(uint32\_t value)

#### [` ~VCFeature `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureD0Ev>)

~VCFeature() override = default

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE9VCFeature9to_stringEv>)

virtual std::string to\_string() const override

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature5parseERKN7details8pe_debugEP7Section4spanI7uint8_tE>)

static std::unique\_ptr&lt;[VCFeature](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeatureE> "LIEF::PE::VCFeature")&gt; parse(const details::pe\_debug &amp;hdr, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section, span&lt;uint8\_t&gt; payload)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE9VCFeature7classofEPK5Debug>)

static inline bool classof(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") \*debug)

---

## [ExDllCharacteristics](<https://lief.re/doc/latest/formats/pe/cpp.html#exdllcharacteristics>)

### [` ExDllCharacteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristicsE>)

class ExDllCharacteristics : public LIEF::PE::[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")

This class represents the `IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS` debug entry.

Public Types

#### [` CHARACTERISTICS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICSE>)

enum class CHARACTERISTICS : uint32\_t

Extended DLL Characteristics.

*Values:*

##### [` CET_COMPAT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICS10CET_COMPATE>)

enumerator CET\_COMPAT = 0x01

##### [` CET_COMPAT_STRICT_MODE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICS22CET_COMPAT_STRICT_MODEE>)

enumerator CET\_COMPAT\_STRICT\_MODE = 0x02

##### [` CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICS42CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODEE>)

enumerator CET\_SET\_CONTEXT\_IP\_VALIDATION\_RELAXED\_MODE = 0x04

##### [` CET_DYNAMIC_APIS_ALLOW_IN_PROC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICS30CET_DYNAMIC_APIS_ALLOW_IN_PROCE>)

enumerator CET\_DYNAMIC\_APIS\_ALLOW\_IN\_PROC = 0x08

##### [` CET_RESERVED_1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICS14CET_RESERVED_1E>)

enumerator CET\_RESERVED\_1 = 0x10

##### [` CET_RESERVED_2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICS14CET_RESERVED_2E>)

enumerator CET\_RESERVED\_2 = 0x20

##### [` FORWARD_CFI_COMPAT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICS18FORWARD_CFI_COMPATE>)

enumerator FORWARD\_CFI\_COMPAT = 0x40

##### [` HOTPATCH_COMPATIBLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICS19HOTPATCH_COMPATIBLEE>)

enumerator HOTPATCH\_COMPATIBLE = 0x80

Public Functions

#### [` ExDllCharacteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics20ExDllCharacteristicsERKN7details8pe_debugEP7Section8uint32_t>)

inline ExDllCharacteristics(const details::pe\_debug &amp;debug, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*sec, uint32\_t characteristics)

#### [` ExDllCharacteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics20ExDllCharacteristicsERK20ExDllCharacteristics>)

ExDllCharacteristics(const [ExDllCharacteristics](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics20ExDllCharacteristicsERK20ExDllCharacteristics> "LIEF::PE::ExDllCharacteristics::ExDllCharacteristics") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristicsaSERK20ExDllCharacteristics>)

[ExDllCharacteristics](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristicsE> "LIEF::PE::ExDllCharacteristics") &amp;operator=(const [ExDllCharacteristics](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristicsE> "LIEF::PE::ExDllCharacteristics") &amp;other) = default

#### [` ExDllCharacteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics20ExDllCharacteristicsERR20ExDllCharacteristics>)

ExDllCharacteristics([ExDllCharacteristics](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics20ExDllCharacteristicsERR20ExDllCharacteristics> "LIEF::PE::ExDllCharacteristics::ExDllCharacteristics")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristicsaSERR20ExDllCharacteristics>)

[ExDllCharacteristics](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristicsE> "LIEF::PE::ExDllCharacteristics") &amp;operator=([ExDllCharacteristics](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristicsE> "LIEF::PE::ExDllCharacteristics") &amp;&amp;other) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20ExDllCharacteristics5cloneEv>)

inline virtual std::unique\_ptr&lt;[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&gt; clone() const override

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20ExDllCharacteristics15characteristicsEv>)

inline [CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICSE> "LIEF::PE::ExDllCharacteristics::CHARACTERISTICS") characteristics() const

Return the characteristics.

#### [` characteristics_list `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20ExDllCharacteristics20characteristics_listEv>)

std::vector&lt;[CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICSE> "LIEF::PE::ExDllCharacteristics::CHARACTERISTICS")&gt; characteristics\_list() const

Characteristics as a vector.

#### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20ExDllCharacteristics3hasE15CHARACTERISTICS>)

inline bool has([CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics15CHARACTERISTICSE> "LIEF::PE::ExDllCharacteristics::CHARACTERISTICS") c) const

Check if the given [CHARACTERISTICS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ExDllCharacteristics_1a31d41be37affe9ca2c434dc03ef250c9>) is used.

#### [` ~ExDllCharacteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristicsD0Ev>)

~ExDllCharacteristics() override = default

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20ExDllCharacteristics9to_stringEv>)

virtual std::string to\_string() const override

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics5parseERKN7details8pe_debugEP7Section4spanI7uint8_tE>)

static std::unique\_ptr&lt;[ExDllCharacteristics](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristicsE> "LIEF::PE::ExDllCharacteristics")&gt; parse(const details::pe\_debug &amp;hdr, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section, span&lt;uint8\_t&gt; payload)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20ExDllCharacteristics7classofEPK5Debug>)

static inline bool classof(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") \*debug)

---

## [Frame Pointer Omission (FPO)](<https://lief.re/doc/latest/formats/pe/cpp.html#frame-pointer-omission-fpo>)

### [` FPO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPOE>)

class FPO : public LIEF::PE::[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")

This class represents the `IMAGE_DEBUG_TYPE_FPO` debug entry.

Public Types

#### [` FRAME_TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO10FRAME_TYPEE>)

enum class FRAME\_TYPE

*Values:*

##### [` FPO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO10FRAME_TYPE3FPOE>)

enumerator FPO = 0

##### [` TRAP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO10FRAME_TYPE4TRAPE>)

enumerator TRAP = 1

##### [` TSS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO10FRAME_TYPE3TSSE>)

enumerator TSS = 2

##### [` NON_FPO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO10FRAME_TYPE7NON_FPOE>)

enumerator NON\_FPO = 3

#### [` entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO9entries_tE>)

using entries\_t = std::vector&lt;[entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_tE> "LIEF::PE::FPO::entry_t")&gt;

#### [` it_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO10it_entriesE>)

using it\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO9entries_tE> "LIEF::PE::FPO::entries_t")&amp;&gt;

#### [` it_const_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO16it_const_entriesE>)

using it\_const\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO9entries_tE> "LIEF::PE::FPO::entries_t")&amp;&gt;

Public Functions

#### [` FPO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO3FPOERKN7details8pe_debugEP7Section>)

inline FPO(const details::pe\_debug &amp;hdr, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section)

#### [` FPO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO3FPOERK3FPO>)

FPO(const [FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO3FPOERK3FPO> "LIEF::PE::FPO::FPO") &amp;other) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPOaSERK3FPO>)

[FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPOE> "LIEF::PE::FPO") &amp;operator=(const [FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPOE> "LIEF::PE::FPO") &amp;other) = default

#### [` FPO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO3FPOERR3FPO>)

FPO([FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO3FPOERR3FPO> "LIEF::PE::FPO::FPO")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPOaSERR3FPO>)

[FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPOE> "LIEF::PE::FPO") &amp;operator=([FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPOE> "LIEF::PE::FPO") &amp;&amp;other) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3FPO5cloneEv>)

inline virtual std::unique\_ptr&lt;[Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug")&gt; clone() const override

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3FPO7entriesEv>)

inline [it\_const\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO16it_const_entriesE> "LIEF::PE::FPO::it_const_entries") entries() const

Iterator over the [FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1FPO>) entries.

#### [` entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entriesEv>)

inline [it\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO10it_entriesE> "LIEF::PE::FPO::it_entries") entries()

#### [` ~FPO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPOD0Ev>)

~FPO() override = default

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3FPO9to_stringEv>)

virtual std::string to\_string() const override

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO5parseERKN7details8pe_debugEP7Section4spanI7uint8_tE>)

static std::unique\_ptr&lt;[FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPOE> "LIEF::PE::FPO")&gt; parse(const details::pe\_debug &amp;hdr, [Section](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7SectionE> "LIEF::PE::Section") \*section, span&lt;uint8\_t&gt; payload)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7classofEPK5Debug>)

static inline bool classof(const [Debug](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5DebugE> "LIEF::PE::Debug") \*debug)

#### [` entry_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_tE>)

struct entry\_t

Represents the stack frame layout for a x86 function when frame pointer omission ([FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1FPO>)) optimization is used.

Public Functions

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE3FPO7entry_t9to_stringEv>)

std::string to\_string() const

Public Members

##### [` rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_t3rvaE>)

uint32\_t rva = 0

The function RVA.

##### [` proc_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_t9proc_sizeE>)

uint32\_t proc\_size = 0

The number of bytes in the function.

##### [` nb_locals `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_t9nb_localsE>)

uint32\_t nb\_locals = 0

The number of local variables.

##### [` parameters_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_t15parameters_sizeE>)

uint32\_t parameters\_size = 0

The size of the parameters.

##### [` prolog_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_t11prolog_sizeE>)

uint16\_t prolog\_size = 0

The number of bytes in the function prologue code.

##### [` nb_saved_regs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_t13nb_saved_regsE>)

uint16\_t nb\_saved\_regs = 0

Number of registers saved.

##### [` use_seh `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_t7use_sehE>)

bool use\_seh = false

Whether the function uses structured exception handling.

##### [` use_bp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_t6use_bpE>)

bool use\_bp = false

Whether the EBP register has been allocated.

##### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_t8reservedE>)

uint16\_t reserved = 0

Reserved for future use.

##### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_t4typeE>)

[FRAME\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO10FRAME_TYPEE> "LIEF::PE::FPO::FRAME_TYPE") type = [FRAME\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO10FRAME_TYPEE> "LIEF::PE::FPO::FRAME_TYPE")::[FPO](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO10FRAME_TYPE3FPOE> "LIEF::PE::FPO::FRAME_TYPE::FPO")

Variable that indicates the frame type.

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_tlsERNSt7ostreamERK7entry_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE3FPO7entry_tE> "LIEF::PE::FPO::entry_t") &amp;entry)

---

## [Exception Info](<https://lief.re/doc/latest/formats/pe/cpp.html#exception-info>)

### [` ExceptionInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE>)

class ExceptionInfo

This class is the base class for any exception or runtime function entry.

Subclassed by [LIEF::PE::RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RuntimeFunctionAArch64>), [LIEF::PE::RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RuntimeFunctionX64>)

Public Types

#### [` ARCH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo4ARCHE>)

enum class ARCH

Arch discriminator for the subclasses.

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo4ARCH7UNKNOWNE>)

enumerator UNKNOWN = 0

##### [` ARM64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo4ARCH5ARM64E>)

enumerator ARM64

##### [` X86_64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo4ARCH6X86_64E>)

enumerator X86\_64

Public Functions

#### [` ExceptionInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo13ExceptionInfoEv>)

ExceptionInfo() = delete

#### [` ExceptionInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo13ExceptionInfoERK13ExceptionInfo>)

ExceptionInfo(const [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo13ExceptionInfoERK13ExceptionInfo> "LIEF::PE::ExceptionInfo::ExceptionInfo")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoaSERK13ExceptionInfo>)

[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") &amp;operator=(const [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")&amp;) = default

#### [` ExceptionInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo13ExceptionInfoERR13ExceptionInfo>)

ExceptionInfo([ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo13ExceptionInfoERR13ExceptionInfo> "LIEF::PE::ExceptionInfo::ExceptionInfo")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoaSERR13ExceptionInfo>)

[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") &amp;operator=([ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13ExceptionInfo5cloneEv>)

virtual std::unique\_ptr&lt;[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")&gt; clone() const = 0

#### [` ExceptionInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo13ExceptionInfoE4ARCH8uint64_t>)

inline ExceptionInfo([ARCH](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo4ARCHE> "LIEF::PE::ExceptionInfo::ARCH") arch, uint64\_t rva)

#### [` ExceptionInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo13ExceptionInfoE4ARCH>)

inline ExceptionInfo([ARCH](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo4ARCHE> "LIEF::PE::ExceptionInfo::ARCH") arch)

#### [` arch `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13ExceptionInfo4archEv>)

inline [ARCH](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo4ARCHE> "LIEF::PE::ExceptionInfo::ARCH") arch() const

Target architecture of this exception.

#### [` rva_start `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13ExceptionInfo9rva_startEv>)

inline uint32\_t rva\_start() const

[Function](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Function>) start address.

#### [` offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13ExceptionInfo6offsetEv>)

inline uint64\_t offset() const

Offset in the binary where the raw exception information associated with this entry is defined.

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13ExceptionInfo9to_stringEv>)

virtual std::string to\_string() const = 0

#### [` ~ExceptionInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoD0Ev>)

virtual ~ExceptionInfo() = default

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE13ExceptionInfo2asEP1Tv>)

template&lt;class T&gt;  
inline [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE13ExceptionInfo2asEP1Tv> "LIEF::PE::ExceptionInfo::as::T") \*as()

Helper to **downcast** an [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1ExceptionInfo>) into a concrete implementation.

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE13ExceptionInfo2asEPK1Tv>)

template&lt;class T&gt;  
inline const [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE13ExceptionInfo2asEPK1Tv> "LIEF::PE::ExceptionInfo::as::T") \*as() const

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo5parseER6ParserR12BinaryStream>)

static std::unique\_ptr&lt;[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")&gt; parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;strm)

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfo5parseER6ParserR12BinaryStreamN6Header13MACHINE_TYPESE>)

static std::unique\_ptr&lt;[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")&gt; parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;strm, [Header](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6HeaderE> "LIEF::PE::Header")::[MACHINE\_TYPES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6Header13MACHINE_TYPESE> "LIEF::PE::Header::MACHINE_TYPES") arch)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfolsERNSt7ostreamERK13ExceptionInfo>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") &amp;info)

---

## [RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#runtimefunctionx64>)

### [` RuntimeFunctionX64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64E>)

class RuntimeFunctionX64 : public LIEF::PE::[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")

This class represents an entry in the exception table (`.pdata` section) for the x86-64 architecture.

Reference: [https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64](<https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64>)

Public Types

#### [` UNWIND_FLAGS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6412UNWIND_FLAGSE>)

enum class UNWIND\_FLAGS : uint8\_t

*Values:*

##### [` EXCEPTION_HANDLER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6412UNWIND_FLAGS17EXCEPTION_HANDLERE>)

enumerator EXCEPTION\_HANDLER = 1

The function has an exception handler that should be called when looking for functions that need to examine exceptions.

##### [` TERMINATE_HANDLER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6412UNWIND_FLAGS17TERMINATE_HANDLERE>)

enumerator TERMINATE\_HANDLER = 2

The function has a termination handler that should be called when unwinding an exception.

##### [` CHAIN_INFO `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6412UNWIND_FLAGS10CHAIN_INFOE>)

enumerator CHAIN\_INFO = 4

The chained info payload references a previous `RUNTIME_FUNCTION`.

#### [` UNWIND_OPCODES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODESE>)

enum class UNWIND\_OPCODES : uint32\_t

*Values:*

##### [` PUSH_NONVOL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES11PUSH_NONVOLE>)

enumerator PUSH\_NONVOL = 0

Push a nonvolatile integer register, decrementing RSP by 8. The operation info is the number of the register. Because of the constraints on epilogs, `PUSH_NONVOL` unwind codes must appear first in the prolog and correspondingly, last in the unwind code array. This relative ordering applies to all other unwind codes except [UNWIND\_OPCODES::PUSH\_MACHFRAME](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RuntimeFunctionX64_1a39858cfaa3649eb64357cbe510e64881a185efee0428486abbe6794d30cc5fcaa>).

##### [` ALLOC_LARGE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES11ALLOC_LARGEE>)

enumerator ALLOC\_LARGE = 1

Allocate a large-sized area on the stack. There are two forms. If the operation info equals 0, then the size of the allocation divided by 8 is recorded in the next slot, allowing an allocation up to 512K - 8. If the operation info equals 1, then the unscaled size of the allocation is recorded in the next two slots in little-endian format, allowing allocations up to 4GB - 8.

##### [` ALLOC_SMALL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES11ALLOC_SMALLE>)

enumerator ALLOC\_SMALL = 2

Allocate a small-sized area on the stack. The size of the allocation is the operation info field \* 8 + 8, allowing allocations from 8 to 128 bytes.

##### [` SET_FPREG `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES9SET_FPREGE>)

enumerator SET\_FPREG = 3

Establish the frame pointer register by setting the register to some offset of the current RSP. The offset is equal to the Frame Register offset (scaled) field in the UNWIND\_INFO \* 16, allowing offsets from 0 to 240. The use of an offset permits establishing a frame pointer that points to the middle of the fixed stack allocation, helping code density by allowing more accesses to use short instruction forms. The operation info field is reserved and shouldn’t be used.

##### [` SAVE_NONVOL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES11SAVE_NONVOLE>)

enumerator SAVE\_NONVOL = 4

Save a nonvolatile integer register on the stack using a MOV instead of a PUSH. This code is primarily used for shrink-wrapping, where a nonvolatile register is saved to the stack in a position that was previously allocated. The operation info is the number of the register. The scaled-by-8 stack offset is recorded in the next unwind operation code slot, as described in the note above.

##### [` SAVE_NONVOL_FAR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES15SAVE_NONVOL_FARE>)

enumerator SAVE\_NONVOL\_FAR = 5

Save a nonvolatile integer register on the stack with a long offset, using a MOV instead of a PUSH. This code is primarily used for shrink-wrapping, where a nonvolatile register is saved to the stack in a position that was previously allocated. The operation info is the number of the register. The unscaled stack offset is recorded in the next two unwind operation code slots, as described in the note above.

##### [` EPILOG `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES6EPILOGE>)

enumerator EPILOG = 6

This entry is only relevant for version 2. It describes the function epilog.

##### [` SPARE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES5SPAREE>)

enumerator SPARE = 7

Reserved Originally SAVE\_XMM128\_FAR in version 1, but deprecated and removed.

##### [` SAVE_XMM128 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES11SAVE_XMM128E>)

enumerator SAVE\_XMM128 = 8

Save all 128 bits of a nonvolatile XMM register on the stack. The operation info is the number of the register. The scaled-by-16 stack offset is recorded in the next slot.

##### [` SAVE_XMM128_FAR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES15SAVE_XMM128_FARE>)

enumerator SAVE\_XMM128\_FAR = 9

Save all 128 bits of a nonvolatile XMM register on the stack with a long offset. The operation info is the number of the register. The unscaled stack offset is recorded in the next two slots.

##### [` PUSH_MACHFRAME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODES14PUSH_MACHFRAMEE>)

enumerator PUSH\_MACHFRAME = 10

Push a machine frame. This unwind code is used to record the effect of a hardware interrupt or exception.

#### [` UNWIND_REG `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REGE>)

enum class UNWIND\_REG : uint32\_t

*Values:*

##### [` RAX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3RAXE>)

enumerator RAX = 0

##### [` RCX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3RCXE>)

enumerator RCX

##### [` RDX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3RDXE>)

enumerator RDX

##### [` RBX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3RBXE>)

enumerator RBX

##### [` RSP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3RSPE>)

enumerator RSP

##### [` RBP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3RBPE>)

enumerator RBP

##### [` RSI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3RSIE>)

enumerator RSI

##### [` RDI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3RDIE>)

enumerator RDI

##### [` R8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG2R8E>)

enumerator R8

##### [` R9 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG2R9E>)

enumerator R9

##### [` R10 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3R10E>)

enumerator R10

##### [` R11 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3R11E>)

enumerator R11

##### [` R12 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3R12E>)

enumerator R12

##### [` R13 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3R13E>)

enumerator R13

##### [` R14 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3R14E>)

enumerator R14

##### [` R15 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REG3R15E>)

enumerator R15

Public Functions

#### [` RuntimeFunctionX64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6418RuntimeFunctionX64E8uint32_t8uint32_t8uint32_t>)

inline RuntimeFunctionX64(uint32\_t rva\_start, uint32\_t rva\_end, uint32\_t unwind\_rva)

#### [` RuntimeFunctionX64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6418RuntimeFunctionX64ERK18RuntimeFunctionX64>)

RuntimeFunctionX64(const [RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6418RuntimeFunctionX64ERK18RuntimeFunctionX64> "LIEF::PE::RuntimeFunctionX64::RuntimeFunctionX64")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64aSERK18RuntimeFunctionX64>)

[RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64E> "LIEF::PE::RuntimeFunctionX64") &amp;operator=(const [RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64E> "LIEF::PE::RuntimeFunctionX64")&amp;) = default

#### [` RuntimeFunctionX64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6418RuntimeFunctionX64ERR18RuntimeFunctionX64>)

RuntimeFunctionX64([RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6418RuntimeFunctionX64ERR18RuntimeFunctionX64> "LIEF::PE::RuntimeFunctionX64::RuntimeFunctionX64")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64aSERR18RuntimeFunctionX64>)

[RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64E> "LIEF::PE::RuntimeFunctionX64") &amp;operator=([RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64E> "LIEF::PE::RuntimeFunctionX64")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18RuntimeFunctionX645cloneEv>)

inline virtual std::unique\_ptr&lt;[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18RuntimeFunctionX649to_stringEv>)

virtual std::string to\_string() const override

#### [` rva_end `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18RuntimeFunctionX647rva_endEv>)

inline uint32\_t rva\_end() const

[Function](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Function>) end address.

#### [` unwind_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18RuntimeFunctionX6410unwind_rvaEv>)

inline uint32\_t unwind\_rva() const

Unwind info address.

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18RuntimeFunctionX644sizeEv>)

inline uint32\_t size() const

Size of the function (in bytes).

#### [` unwind_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18RuntimeFunctionX6411unwind_infoEv>)

inline const [unwind\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_tE> "LIEF::PE::RuntimeFunctionX64::unwind_info_t") \*unwind\_info() const

Detailed unwind information.

#### [` unwind_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6411unwind_infoEv>)

inline [unwind\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_tE> "LIEF::PE::RuntimeFunctionX64::unwind_info_t") \*unwind\_info()

#### [` unwind_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6411unwind_infoE13unwind_info_t>)

inline void unwind\_info([unwind\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_tE> "LIEF::PE::RuntimeFunctionX64::unwind_info_t") info)

#### [` ~RuntimeFunctionX64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64D0Ev>)

~RuntimeFunctionX64() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX647classofEPK13ExceptionInfo>)

static inline bool classof(const [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") \*info)

#### [` unwind_info_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_tE>)

struct unwind\_info\_t

This structure represents the `UNWIND_INFO` which records the effects a function has on the stack pointer, and where the nonvolatile registers are saved on the stack.

Public Types

##### [` opcodes_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t9opcodes_tE>)

using opcodes\_t = std::vector&lt;std::unique\_ptr&lt;unwind\_x64::[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")&gt;&gt;

Public Functions

##### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18RuntimeFunctionX6413unwind_info_t3hasE12UNWIND_FLAGS>)

inline bool has([UNWIND\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6412UNWIND_FLAGSE> "LIEF::PE::RuntimeFunctionX64::UNWIND_FLAGS") flag) const

Check if the given flag is used.

##### [` opcodes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18RuntimeFunctionX6413unwind_info_t7opcodesEv>)

[opcodes\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t9opcodes_tE> "LIEF::PE::RuntimeFunctionX64::unwind_info_t::opcodes_t") opcodes() const

Enhanced representation of the unwind code.

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18RuntimeFunctionX6413unwind_info_t9to_stringEv>)

std::string to\_string() const

Pretty representation of this structure as a string.

Public Members

##### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t7versionE>)

uint8\_t version = 0

Version number of the unwind data, currently 1 or 2.

##### [` flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t5flagsE>)

uint8\_t flags = 0

See: [UNWIND\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RuntimeFunctionX64_1ab9b314cdce575f0512383a606282d5c3>).

##### [` sizeof_prologue `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t15sizeof_prologueE>)

uint8\_t sizeof\_prologue = 0

Length of the function prolog in bytes.

##### [` count_opcodes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t13count_opcodesE>)

uint8\_t count\_opcodes = 0

The number of slots in the unwind codes array. Some unwind codes, for example, [UNWIND\_OPCODES::SAVE\_NONVOL](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RuntimeFunctionX64_1a39858cfaa3649eb64357cbe510e64881a962160362a1c5ce68dff92792f0c7e2b>), require more than one slot in the array.

##### [` frame_reg `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t9frame_regE>)

uint8\_t frame\_reg = 0

If nonzero, then the function uses a frame pointer (FP), and this field is the number of the nonvolatile register used as the frame pointer, using the same encoding for the operation info field of [UNWIND\_OPCODES](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RuntimeFunctionX64_1a39858cfaa3649eb64357cbe510e64881>) nodes.

##### [` frame_reg_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t16frame_reg_offsetE>)

uint8\_t frame\_reg\_offset = 0

If the frame register field is nonzero, this field is the scaled offset from RSP that is applied to the FP register when it’s established.

##### [` raw_opcodes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t11raw_opcodesE>)

std::vector&lt;uint8\_t&gt; raw\_opcodes

An array of items that explains the effect of the prolog on the nonvolatile registers and RSP.

##### [` handler `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t7handlerE>)

std::optional&lt;uint32\_t&gt; handler

An image-relative pointer to either the function’s language-specific exception or termination handler. This value is set if one of these flags is set: [UNWIND\_FLAGS::EXCEPTION\_HANDLER](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RuntimeFunctionX64_1ab9b314cdce575f0512383a606282d5c3a99f387e3165a99f6add1d6af569a0743>), [UNWIND\_FLAGS::TERMINATE\_HANDLER](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RuntimeFunctionX64_1ab9b314cdce575f0512383a606282d5c3aa451b6c7d7c2dc63f889246c2dcb8f36>).

##### [` chained `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_t7chainedE>)

[RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64E> "LIEF::PE::RuntimeFunctionX64") \*chained = nullptr

If [UNWIND\_FLAGS::CHAIN\_INFO](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1RuntimeFunctionX64_1ab9b314cdce575f0512383a606282d5c3a28547b3599ade6e24b86baf8f5bca737>) is set, this attributes references the chained runtime function.

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_tlsERNSt7ostreamERK13unwind_info_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [unwind\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6413unwind_info_tE> "LIEF::PE::RuntimeFunctionX64::unwind_info_t") &amp;info)

---

## [unwind\_x64 - Code](<https://lief.re/doc/latest/formats/pe/cpp.html#unwind-x64-code>)

### [` Code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE>)

class Code

Base class for all unwind operations.

Subclassed by [LIEF::PE::unwind\_x64::Alloc](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__x64_1_1Alloc>), [LIEF::PE::unwind\_x64::Epilog](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__x64_1_1Epilog>), [LIEF::PE::unwind\_x64::PushMachFrame](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__x64_1_1PushMachFrame>), [LIEF::PE::unwind\_x64::PushNonVol](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__x64_1_1PushNonVol>), [LIEF::PE::unwind\_x64::SaveNonVolatile](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__x64_1_1SaveNonVolatile>), [LIEF::PE::unwind\_x64::SaveXMM128](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__x64_1_1SaveXMM128>), [LIEF::PE::unwind\_x64::SetFPReg](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__x64_1_1SetFPReg>), [LIEF::PE::unwind\_x64::Spare](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__x64_1_1Spare>)

Public Types

#### [` OPCODE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code6OPCODEE>)

using OPCODE = [RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64E> "LIEF::PE::RuntimeFunctionX64")::[UNWIND\_OPCODES](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6414UNWIND_OPCODESE> "LIEF::PE::RuntimeFunctionX64::UNWIND_OPCODES")

#### [` REG `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code3REGE>)

using REG = [RuntimeFunctionX64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX64E> "LIEF::PE::RuntimeFunctionX64")::[UNWIND\_REG](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18RuntimeFunctionX6410UNWIND_REGE> "LIEF::PE::RuntimeFunctionX64::UNWIND_REG")

Public Functions

#### [` Code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code4CodeEv>)

Code() = delete

#### [` Code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code4CodeERK4Code>)

Code(const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code4CodeERK4Code> "LIEF::PE::unwind_x64::Code::Code")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeaSERK4Code>)

[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") &amp;operator=(const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")&amp;) = default

#### [` Code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code4CodeERR4Code>)

Code([Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code4CodeERR4Code> "LIEF::PE::unwind_x64::Code::Code")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeaSERR4Code>)

[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") &amp;operator=([Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")&amp;&amp;) = default

#### [` ~Code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeD0Ev>)

virtual ~Code() = default

#### [` Code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code4CodeE6OPCODE8uint32_t>)

inline Code([OPCODE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code6OPCODEE> "LIEF::PE::unwind_x64::Code::OPCODE") opcode, uint32\_t pos)

#### [` Code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code4CodeE6OPCODE>)

inline Code([OPCODE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code6OPCODEE> "LIEF::PE::unwind_x64::Code::OPCODE") opcode)

#### [` opcode `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x644Code6opcodeEv>)

inline [OPCODE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644Code6OPCODEE> "LIEF::PE::unwind_x64::Code::OPCODE") opcode() const

The original opcode.

#### [` position `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x644Code8positionEv>)

inline uint32\_t position() const

Offset in the prolog.

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x644Code9to_stringEv>)

virtual std::string to\_string() const

Pretty representation.

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodelsERNSt7ostreamERK4Code>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") &amp;code)

---

## [unwind\_x64 - Alloc](<https://lief.re/doc/latest/formats/pe/cpp.html#unwind-x64-alloc>)

### [` Alloc `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x645AllocE>)

class Alloc : public LIEF::PE::unwind\_x64::[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")

This class represents a stack-allocation operation (UNWIND\_OPCODES::ALLOC\_SMALL or UNWIND\_OPCODES::ALLOC\_LARGE).

Public Functions

#### [` Alloc `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x645Alloc5AllocE6OPCODE6size_t8uint32_t>)

inline Alloc(OPCODE op, size\_t pos, uint32\_t size)

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x645Alloc4sizeEv>)

inline uint32\_t size() const

The size allocated.

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x645Alloc9to_stringEv>)

virtual std::string to\_string() const override

Pretty representation.

#### [` ~Alloc `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x645AllocD0Ev>)

~Alloc() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x645Alloc7classofEPK4Code>)

static inline bool classof(const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") \*code)

---

## [unwind\_x64 - PushNonVol](<https://lief.re/doc/latest/formats/pe/cpp.html#unwind-x64-pushnonvol>)

### [` PushNonVol `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6410PushNonVolE>)

class PushNonVol : public LIEF::PE::unwind\_x64::[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")

Push a nonvolatile integer register, decrementing RSP by 8.

Public Functions

#### [` PushNonVol `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6410PushNonVol10PushNonVolEv>)

PushNonVol() = delete

#### [` PushNonVol `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6410PushNonVol10PushNonVolE3REG6size_t>)

inline PushNonVol(REG reg, size\_t pos)

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x6410PushNonVol9to_stringEv>)

virtual std::string to\_string() const override

Pretty representation.

#### [` reg `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x6410PushNonVol3regEv>)

inline REG reg() const

The register pushed.

#### [` ~PushNonVol `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6410PushNonVolD0Ev>)

~PushNonVol() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6410PushNonVol7classofEPK4Code>)

static inline bool classof(const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") \*code)

---

## [unwind\_x64 - PushMachFrame](<https://lief.re/doc/latest/formats/pe/cpp.html#unwind-x64-pushmachframe>)

### [` PushMachFrame `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6413PushMachFrameE>)

class PushMachFrame : public LIEF::PE::unwind\_x64::[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")

Push a machine frame.

Public Functions

#### [` PushMachFrame `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6413PushMachFrame13PushMachFrameEv>)

PushMachFrame() = delete

#### [` PushMachFrame `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6413PushMachFrame13PushMachFrameE7uint8_t6size_t>)

inline PushMachFrame(uint8\_t value, size\_t pos)

#### [` value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x6413PushMachFrame5valueEv>)

inline uint8\_t value() const

0 or 1

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x6413PushMachFrame9to_stringEv>)

virtual std::string to\_string() const override

Pretty representation.

#### [` ~PushMachFrame `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6413PushMachFrameD0Ev>)

~PushMachFrame() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6413PushMachFrame7classofEPK4Code>)

static inline bool classof(const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") \*code)

---

## [unwind\_x64 - SetFPReg](<https://lief.re/doc/latest/formats/pe/cpp.html#unwind-x64-setfpreg>)

### [` SetFPReg `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x648SetFPRegE>)

class SetFPReg : public LIEF::PE::unwind\_x64::[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")

Establish the frame pointer register by setting the register to some offset of the current RSP.

Public Functions

#### [` SetFPReg `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x648SetFPReg8SetFPRegEv>)

SetFPReg() = delete

#### [` SetFPReg `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x648SetFPReg8SetFPRegE3REG6size_t>)

inline SetFPReg(REG value, size\_t pos)

#### [` reg `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x648SetFPReg3regEv>)

inline REG reg() const

Frame pointer register.

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x648SetFPReg9to_stringEv>)

virtual std::string to\_string() const override

Pretty representation.

#### [` ~SetFPReg `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x648SetFPRegD0Ev>)

~SetFPReg() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x648SetFPReg7classofEPK4Code>)

static inline bool classof(const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") \*code)

---

## [unwind\_x64 - SaveNonVolatile](<https://lief.re/doc/latest/formats/pe/cpp.html#unwind-x64-savenonvolatile>)

### [` SaveNonVolatile `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6415SaveNonVolatileE>)

class SaveNonVolatile : public LIEF::PE::unwind\_x64::[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")

Save a nonvolatile integer register on the stack using a `MOV` instead of a `PUSH`.

Public Functions

#### [` SaveNonVolatile `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6415SaveNonVolatile15SaveNonVolatileEv>)

SaveNonVolatile() = delete

#### [` SaveNonVolatile `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6415SaveNonVolatile15SaveNonVolatileE6OPCODE3REG6size_t8uint32_t>)

inline SaveNonVolatile(OPCODE op, REG value, size\_t pos, uint32\_t offset)

#### [` reg `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x6415SaveNonVolatile3regEv>)

inline REG reg() const

#### [` offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x6415SaveNonVolatile6offsetEv>)

inline uint32\_t offset() const

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x6415SaveNonVolatile9to_stringEv>)

virtual std::string to\_string() const override

Pretty representation.

#### [` ~SaveNonVolatile `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6415SaveNonVolatileD0Ev>)

~SaveNonVolatile() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6415SaveNonVolatile7classofEPK4Code>)

static inline bool classof(const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") \*code)

---

## [unwind\_x64 - SaveXMM128](<https://lief.re/doc/latest/formats/pe/cpp.html#unwind-x64-savexmm128>)

### [` SaveXMM128 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6410SaveXMM128E>)

class SaveXMM128 : public LIEF::PE::unwind\_x64::[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")

Public Functions

#### [` SaveXMM128 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6410SaveXMM12810SaveXMM128Ev>)

SaveXMM128() = delete

#### [` SaveXMM128 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6410SaveXMM12810SaveXMM128E6OPCODE7uint8_t6size_t8uint32_t>)

inline SaveXMM128(OPCODE op, uint8\_t num, size\_t pos, uint32\_t offset)

#### [` num `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x6410SaveXMM1283numEv>)

inline uint8\_t num() const

#### [` offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x6410SaveXMM1286offsetEv>)

inline uint32\_t offset() const

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x6410SaveXMM1289to_stringEv>)

virtual std::string to\_string() const override

Pretty representation.

#### [` ~SaveXMM128 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6410SaveXMM128D0Ev>)

~SaveXMM128() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x6410SaveXMM1287classofEPK4Code>)

static inline bool classof(const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") \*code)

---

## [unwind\_x64 - Epilog](<https://lief.re/doc/latest/formats/pe/cpp.html#unwind-x64-epilog>)

### [` Epilog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x646EpilogE>)

class Epilog : public LIEF::PE::unwind\_x64::[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")

Describes the function’s epilog.

Public Functions

#### [` Epilog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x646Epilog6EpilogEv>)

Epilog() = delete

#### [` Epilog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x646Epilog6EpilogE7uint8_t7uint8_t>)

inline Epilog(uint8\_t flags, uint8\_t size)

#### [` flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x646Epilog5flagsEv>)

inline uint8\_t flags() const

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x646Epilog4sizeEv>)

inline uint32\_t size() const

Size of the epilog.

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x646Epilog9to_stringEv>)

virtual std::string to\_string() const override

Pretty representation.

#### [` ~Epilog `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x646EpilogD0Ev>)

~Epilog() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x646Epilog7classofEPK4Code>)

static inline bool classof(const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") \*code)

---

## [unwind\_x64 - Spare](<https://lief.re/doc/latest/formats/pe/cpp.html#unwind-x64-spare>)

### [` Spare `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x645SpareE>)

class Spare : public LIEF::PE::unwind\_x64::[Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code")

Public Functions

#### [` Spare `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x645Spare5SpareEv>)

inline Spare()

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE10unwind_x645Spare9to_stringEv>)

inline virtual std::string to\_string() const override

Pretty representation.

#### [` ~Spare `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x645SpareD0Ev>)

~Spare() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x645Spare7classofEPK4Code>)

static inline bool classof(const [Code](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10unwind_x644CodeE> "LIEF::PE::unwind_x64::Code") \*code)

---

## [RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#runtimefunctionaarch64>)

### [` RuntimeFunctionAArch64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64E>)

class RuntimeFunctionAArch64 : public LIEF::PE::[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")

This class represents an entry in the exception table (`.pdata` section) for the AArch64 architecture.

Since the ARM64 unwinding info can be encoded in a *packed* and *unpacked* format, this class is inherited by [LIEF::PE::unwind\_aarch64::PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__aarch64_1_1PackedFunction>) and [LIEF::PE::unwind\_aarch64::UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__aarch64_1_1UnpackedFunction>)

Reference: [https://learn.microsoft.com/en-us/cpp/build/arm64-exception-handling#arm64-exception-handling-information](<https://learn.microsoft.com/en-us/cpp/build/arm64-exception-handling#arm64-exception-handling-information>)

Subclassed by [LIEF::PE::unwind\_aarch64::PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__aarch64_1_1PackedFunction>), [LIEF::PE::unwind\_aarch64::UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__aarch64_1_1UnpackedFunction>)

Public Types

#### [` PACKED_FLAGS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6412PACKED_FLAGSE>)

enum class PACKED\_FLAGS

*Values:*

##### [` UNPACKED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6412PACKED_FLAGS8UNPACKEDE>)

enumerator UNPACKED = 0

##### [` PACKED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6412PACKED_FLAGS6PACKEDE>)

enumerator PACKED = 1

##### [` PACKED_FRAGMENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6412PACKED_FLAGS15PACKED_FRAGMENTE>)

enumerator PACKED\_FRAGMENT = 2

##### [` RESERVED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6412PACKED_FLAGS8RESERVEDE>)

enumerator RESERVED = 3

Public Functions

#### [` RuntimeFunctionAArch64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6422RuntimeFunctionAArch64E8uint64_t8uint32_t12PACKED_FLAGS>)

inline RuntimeFunctionAArch64(uint64\_t RVA, uint32\_t length, [PACKED\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6412PACKED_FLAGSE> "LIEF::PE::RuntimeFunctionAArch64::PACKED_FLAGS") flag)

#### [` RuntimeFunctionAArch64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6422RuntimeFunctionAArch64ERK22RuntimeFunctionAArch64>)

RuntimeFunctionAArch64(const [RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6422RuntimeFunctionAArch64ERK22RuntimeFunctionAArch64> "LIEF::PE::RuntimeFunctionAArch64::RuntimeFunctionAArch64")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64aSERK22RuntimeFunctionAArch64>)

[RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64E> "LIEF::PE::RuntimeFunctionAArch64") &amp;operator=(const [RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64E> "LIEF::PE::RuntimeFunctionAArch64")&amp;) = default

#### [` RuntimeFunctionAArch64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6422RuntimeFunctionAArch64ERR22RuntimeFunctionAArch64>)

RuntimeFunctionAArch64([RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6422RuntimeFunctionAArch64ERR22RuntimeFunctionAArch64> "LIEF::PE::RuntimeFunctionAArch64::RuntimeFunctionAArch64")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64aSERR22RuntimeFunctionAArch64>)

[RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64E> "LIEF::PE::RuntimeFunctionAArch64") &amp;operator=([RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64E> "LIEF::PE::RuntimeFunctionAArch64")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22RuntimeFunctionAArch645cloneEv>)

inline virtual std::unique\_ptr&lt;[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")&gt; clone() const override

#### [` length `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22RuntimeFunctionAArch646lengthEv>)

inline uint32\_t length() const

Length of the function in bytes.

#### [` flag `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22RuntimeFunctionAArch644flagEv>)

inline [PACKED\_FLAGS](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch6412PACKED_FLAGSE> "LIEF::PE::RuntimeFunctionAArch64::PACKED_FLAGS") flag() const

Flag describing the format the unwind data.

#### [` rva_end `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22RuntimeFunctionAArch647rva_endEv>)

inline uint32\_t rva\_end() const

[Function](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Function>) end address.

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE22RuntimeFunctionAArch649to_stringEv>)

virtual std::string to\_string() const override

#### [` ~RuntimeFunctionAArch64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64D0Ev>)

~RuntimeFunctionAArch64() override = default

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch645parseER6ParserR12BinaryStream>)

static std::unique\_ptr&lt;[RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64E> "LIEF::PE::RuntimeFunctionAArch64")&gt; parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;strm)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch647classofEPK13ExceptionInfo>)

static inline bool classof(const [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") \*info)

## [Runtime AArch64 (Packed) Function](<https://lief.re/doc/latest/formats/pe/cpp.html#runtime-aarch64-packed-function>)

### [` PackedFunction `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE>)

class PackedFunction : public LIEF::PE::[RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64E> "LIEF::PE::RuntimeFunctionAArch64")

This class represents a packed AArch64 exception entry.

An excepted entry can be packed if the unwind data fit in 30 bits

Reference: [https://learn.microsoft.com/en-us/cpp/build/arm64-exception-handling?view=msvc-170#packed-unwind-data](<https://learn.microsoft.com/en-us/cpp/build/arm64-exception-handling?view=msvc-170#packed-unwind-data>)

Public Functions

#### [` PackedFunction `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction14PackedFunctionERK14PackedFunction>)

PackedFunction(const [PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction14PackedFunctionERK14PackedFunction> "LIEF::PE::unwind_aarch64::PackedFunction::PackedFunction")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionaSERK14PackedFunction>)

[PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE> "LIEF::PE::unwind_aarch64::PackedFunction") &amp;operator=(const [PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE> "LIEF::PE::unwind_aarch64::PackedFunction")&amp;) = default

#### [` PackedFunction `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction14PackedFunctionERR14PackedFunction>)

PackedFunction([PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction14PackedFunctionERR14PackedFunction> "LIEF::PE::unwind_aarch64::PackedFunction::PackedFunction")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionaSERR14PackedFunction>)

[PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE> "LIEF::PE::unwind_aarch64::PackedFunction") &amp;operator=([PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE> "LIEF::PE::unwind_aarch64::PackedFunction")&amp;&amp;) = default

#### [` ~PackedFunction `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionD0Ev>)

~PackedFunction() override = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6414PackedFunction5cloneEv>)

inline virtual std::unique\_ptr&lt;[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6414PackedFunction9to_stringEv>)

virtual std::string to\_string() const override

#### [` frame_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6414PackedFunction10frame_sizeEv>)

inline uint8\_t frame\_size() const

Size of the allocated stack.

#### [` reg_I `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6414PackedFunction5reg_IEv>)

inline uint8\_t reg\_I() const

Number of non-volatile INT registers (x19-x28) saved in the canonical stack location.

#### [` reg_F `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6414PackedFunction5reg_FEv>)

inline uint8\_t reg\_F() const

Number of non-volatile FP registers (d8-d15) saved in the canonical stack location.

#### [` H `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6414PackedFunction1HEv>)

inline uint8\_t H() const

1-bit flag indicating whether the function homes the integer parameter registers (x0-x7) by storing them at the very start of the function. (0 = doesn’t home registers, 1 = homes registers).

#### [` CR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6414PackedFunction2CREv>)

inline uint8\_t CR() const

Flag indicating whether the function includes extra instructions to set up a frame chain and return link.

#### [` frame_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction10frame_sizeE7uint8_t>)

inline [PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE> "LIEF::PE::unwind_aarch64::PackedFunction") &amp;frame\_size(uint8\_t value)

#### [` reg_I `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction5reg_IE7uint8_t>)

inline [PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE> "LIEF::PE::unwind_aarch64::PackedFunction") &amp;reg\_I(uint8\_t value)

#### [` reg_F `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction5reg_FE7uint8_t>)

inline [PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE> "LIEF::PE::unwind_aarch64::PackedFunction") &amp;reg\_F(uint8\_t value)

#### [` H `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction1HE7uint8_t>)

inline [PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE> "LIEF::PE::unwind_aarch64::PackedFunction") &amp;H(uint8\_t value)

#### [` CR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction2CRE7uint8_t>)

inline [PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE> "LIEF::PE::unwind_aarch64::PackedFunction") &amp;CR(uint8\_t value)

#### [` RuntimeFunctionAArch64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction22RuntimeFunctionAArch64E8uint64_t8uint32_t12PACKED_FLAGS>)

inline RuntimeFunctionAArch64(uint64\_t RVA, uint32\_t length, PACKED\_FLAGS flag)

#### [` RuntimeFunctionAArch64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction22RuntimeFunctionAArch64ERK22RuntimeFunctionAArch64>)

RuntimeFunctionAArch64(const [RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction22RuntimeFunctionAArch64ERK22RuntimeFunctionAArch64> "LIEF::PE::unwind_aarch64::PackedFunction::RuntimeFunctionAArch64")&amp;) = default

#### [` RuntimeFunctionAArch64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction22RuntimeFunctionAArch64ERR22RuntimeFunctionAArch64>)

RuntimeFunctionAArch64([RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction22RuntimeFunctionAArch64ERR22RuntimeFunctionAArch64> "LIEF::PE::unwind_aarch64::PackedFunction::RuntimeFunctionAArch64")&amp;&amp;) = default

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction5parseER6ParserR12BinaryStream8uint32_t8uint32_t>)

static std::unique\_ptr&lt;[PackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunctionE> "LIEF::PE::unwind_aarch64::PackedFunction")&gt; parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;strm, uint32\_t rva, uint32\_t unwind\_data)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6414PackedFunction7classofEPK13ExceptionInfo>)

static inline bool classof(const [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") \*info)

## [Runtime AArch64 (UnpackedFunction) Function](<https://lief.re/doc/latest/formats/pe/cpp.html#runtime-aarch64-unpackedfunction-function>)

### [` UnpackedFunction `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE>)

class UnpackedFunction : public LIEF::PE::[RuntimeFunctionAArch64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE22RuntimeFunctionAArch64E> "LIEF::PE::RuntimeFunctionAArch64")

This class represents an unpacked AArch64 exception entry.

Reference: [https://learn.microsoft.com/en-us/cpp/build/arm64-exception-handling?view=msvc-170#xdata-records](<https://learn.microsoft.com/en-us/cpp/build/arm64-exception-handling?view=msvc-170#xdata-records>)

Public Types

#### [` epilog_scopes_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction15epilog_scopes_tE>)

using epilog\_scopes\_t = std::vector&lt;[epilog\_scope\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction14epilog_scope_tE> "LIEF::PE::unwind_aarch64::UnpackedFunction::epilog_scope_t")&gt;

#### [` it_epilog_scopes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction16it_epilog_scopesE>)

using it\_epilog\_scopes = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[epilog\_scopes\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction15epilog_scopes_tE> "LIEF::PE::unwind_aarch64::UnpackedFunction::epilog_scopes_t")&amp;&gt;

#### [` it_const_epilog_scopes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction22it_const_epilog_scopesE>)

using it\_const\_epilog\_scopes = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [epilog\_scopes\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction15epilog_scopes_tE> "LIEF::PE::unwind_aarch64::UnpackedFunction::epilog_scopes_t")&amp;&gt;

Public Functions

#### [` UnpackedFunction `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction16UnpackedFunctionE8uint32_t8uint32_t>)

inline UnpackedFunction(uint32\_t rva, uint32\_t length)

#### [` UnpackedFunction `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction16UnpackedFunctionERK16UnpackedFunction>)

UnpackedFunction(const [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction16UnpackedFunctionERK16UnpackedFunction> "LIEF::PE::unwind_aarch64::UnpackedFunction::UnpackedFunction")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionaSERK16UnpackedFunction>)

[UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;operator=(const [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction")&amp;) = default

#### [` UnpackedFunction `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction16UnpackedFunctionERR16UnpackedFunction>)

UnpackedFunction([UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction16UnpackedFunctionERR16UnpackedFunction> "LIEF::PE::unwind_aarch64::UnpackedFunction::UnpackedFunction")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionaSERR16UnpackedFunction>)

[UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;operator=([UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction")&amp;&amp;) = default

#### [` ~UnpackedFunction `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionD0Ev>)

~UnpackedFunction() override = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction5cloneEv>)

inline virtual std::unique\_ptr&lt;[ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction9to_stringEv>)

virtual std::string to\_string() const override

#### [` xdata_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction9xdata_rvaEv>)

inline uint32\_t xdata\_rva() const

RVA where this unpacked data is located (usually pointing in `.xdata`).

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction7versionEv>)

inline uint32\_t version() const

Describes the version of the remaining `.xdata`.

Currently (2025-01-04), only version 0 is defined, so values of 1-3 aren’t permitted.

#### [` X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction1XEv>)

inline uint8\_t X() const

1-bit field that indicates the presence (1) or absence (0) of exception data.

#### [` E `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction1EEv>)

inline uint8\_t E() const

1-bit field that indicates that information describing a single epilog is packed into the header (1) rather than requiring more scope words later (0).

#### [` epilog_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction12epilog_countEv>)

inline uint16\_t epilog\_count() const

**If [E()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__aarch64_1_1UnpackedFunction_1a38df47754baf8b15994873d14c59168c>) == 0**, specifies the count of the total number of epilog scopes. Otherwise, return 0

#### [` epilog_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction13epilog_offsetEv>)

inline uint16\_t epilog\_offset() const

**If [E()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1unwind__aarch64_1_1UnpackedFunction_1a38df47754baf8b15994873d14c59168c>) == 1**, index of the first unwind code that describes the one and only epilog.

#### [` code_words `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction10code_wordsEv>)

inline uint32\_t code\_words() const

Number of 32-bit words needed to contain all the unwind codes.

#### [` exception_handler `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction17exception_handlerEv>)

inline uint32\_t exception\_handler() const

Exception handler RVA (if any).

#### [` unwind_code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction11unwind_codeEv>)

inline span&lt;const uint8\_t&gt; unwind\_code() const

Bytes that contain the unwind codes.

#### [` unwind_code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction11unwind_codeEv>)

inline span&lt;uint8\_t&gt; unwind\_code()

#### [` is_extended `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction11is_extendedEv>)

inline bool is\_extended() const

Whether it uses 2-words encoding.

#### [` epilog_scopes_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction20epilog_scopes_offsetEv>)

inline uint64\_t epilog\_scopes\_offset() const

#### [` unwind_code_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction18unwind_code_offsetEv>)

inline uint64\_t unwind\_code\_offset() const

#### [` exception_handler_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction24exception_handler_offsetEv>)

inline uint64\_t exception\_handler\_offset() const

#### [` epilog_scopes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction13epilog_scopesEv>)

inline [it\_epilog\_scopes](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction16it_epilog_scopesE> "LIEF::PE::unwind_aarch64::UnpackedFunction::it_epilog_scopes") epilog\_scopes()

Iterator over the epilog scopes.

#### [` epilog_scopes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE14unwind_aarch6416UnpackedFunction13epilog_scopesEv>)

inline [it\_const\_epilog\_scopes](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction22it_const_epilog_scopesE> "LIEF::PE::unwind_aarch64::UnpackedFunction::it_const_epilog_scopes") epilog\_scopes() const

#### [` xdata_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction9xdata_rvaE8uint32_t>)

inline [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;xdata\_rva(uint32\_t value)

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction7versionE8uint32_t>)

inline [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;version(uint32\_t value)

#### [` X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction1XE7uint8_t>)

inline [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;X(uint8\_t value)

#### [` E `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction1EE7uint8_t>)

inline [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;E(uint8\_t value)

#### [` epilog_cnt_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction17epilog_cnt_offsetE8uint16_t>)

inline [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;epilog\_cnt\_offset(uint16\_t value)

#### [` code_words `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction10code_wordsE8uint32_t>)

inline [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;code\_words(uint32\_t value)

#### [` exception_handler `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction17exception_handlerE8uint32_t>)

inline [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;exception\_handler(uint32\_t value)

#### [` epilog_scopes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction13epilog_scopesE15epilog_scopes_t>)

inline [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;epilog\_scopes([epilog\_scopes\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction15epilog_scopes_tE> "LIEF::PE::unwind_aarch64::UnpackedFunction::epilog_scopes_t") scopes)

#### [` unwind_code `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction11unwind_codeENSt6vectorI7uint8_tEE>)

inline [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;unwind\_code(std::vector&lt;uint8\_t&gt; code)

#### [` is_extended `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction11is_extendedEb>)

inline [UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction") &amp;is\_extended(bool value)

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction5parseER6ParserR12BinaryStream8uint32_t8uint32_t>)

static std::unique\_ptr&lt;[UnpackedFunction](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunctionE> "LIEF::PE::unwind_aarch64::UnpackedFunction")&gt; parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;strm, uint32\_t xdata\_rva, uint32\_t rva)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction7classofEPK13ExceptionInfo>)

static inline bool classof(const [ExceptionInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13ExceptionInfoE> "LIEF::PE::ExceptionInfo") \*info)

#### [` epilog_scope_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction14epilog_scope_tE>)

struct epilog\_scope\_t

This structure describes an epilog scope.

Public Members

##### [` start_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction14epilog_scope_t12start_offsetE>)

uint32\_t start\_offset = 0

Offset of the epilog relatives to the start of the function.

##### [` start_index `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction14epilog_scope_t11start_indexE>)

uint16\_t start\_index = 0

Byte index of the first unwind code that describes this epilog.

##### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction14epilog_scope_t8reservedE>)

uint8\_t reserved = 0

Reserved for future expansion. Should be 0.

Public Static Functions

##### [` from_raw `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction14epilog_scope_t8from_rawE8uint32_t>)

static [epilog\_scope\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE14unwind_aarch6416UnpackedFunction14epilog_scope_tE> "LIEF::PE::unwind_aarch64::UnpackedFunction::epilog_scope_t") from\_raw(uint32\_t raw)

---

## [Load Configuration](<https://lief.re/doc/latest/formats/pe/cpp.html#load-configuration>)

### [` LoadConfiguration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE>)

class LoadConfiguration : public LIEF::Object

This class represents the load configuration data associated with the `IMAGE_LOAD_CONFIG_DIRECTORY`.

This structure is frequently updated by Microsoft to add new metadata.

Reference: [https://github.com/MicrosoftDocs/sdk-api/blob/cbeab4d371e8bc7e352c4d3a4c5819caa08c6a1c/sdk-api-src/content/winnt/ns-winnt-image\_load\_config\_directory64.md#L2](<https://github.com/MicrosoftDocs/sdk-api/blob/cbeab4d371e8bc7e352c4d3a4c5819caa08c6a1c/sdk-api-src/content/winnt/ns-winnt-image_load_config_directory64.md#L2>)

Public Types

#### [` IMAGE_GUARD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARDE>)

enum class IMAGE\_GUARD : uint32\_t

*Values:*

##### [` NONE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD4NONEE>)

enumerator NONE = 0x00000000

##### [` CF_INSTRUMENTED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD15CF_INSTRUMENTEDE>)

enumerator CF\_INSTRUMENTED = 0x100

Module performs control flow integrity checks using system-supplied support.

##### [` CFW_INSTRUMENTED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD16CFW_INSTRUMENTEDE>)

enumerator CFW\_INSTRUMENTED = 0x200

Module performs control flow and write integrity checks.

##### [` CF_FUNCTION_TABLE_PRESENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD25CF_FUNCTION_TABLE_PRESENTE>)

enumerator CF\_FUNCTION\_TABLE\_PRESENT = 0x400

Module contains valid control flow target metadata.

##### [` SECURITY_COOKIE_UNUSED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD22SECURITY_COOKIE_UNUSEDE>)

enumerator SECURITY\_COOKIE\_UNUSED = 0x800

Module does not make use of the /GS security cookie.

##### [` PROTECT_DELAYLOAD_IAT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD21PROTECT_DELAYLOAD_IATE>)

enumerator PROTECT\_DELAYLOAD\_IAT = 0x1000

Module supports read only delay load IAT.

##### [` DELAYLOAD_IAT_IN_ITS_OWN_SECTION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD32DELAYLOAD_IAT_IN_ITS_OWN_SECTIONE>)

enumerator DELAYLOAD\_IAT\_IN\_ITS\_OWN\_SECTION = 0x2000

Delayload import table in its own .didat section (with nothing else in it) that can be freely reprotected.

##### [` CF_EXPORT_SUPPRESSION_INFO_PRESENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD34CF_EXPORT_SUPPRESSION_INFO_PRESENTE>)

enumerator CF\_EXPORT\_SUPPRESSION\_INFO\_PRESENT = 0x4000

Module contains suppressed export information. This also infers that the address taken IAT table is also present in the load config.

##### [` CF_ENABLE_EXPORT_SUPPRESSION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD28CF_ENABLE_EXPORT_SUPPRESSIONE>)

enumerator CF\_ENABLE\_EXPORT\_SUPPRESSION = 0x8000

Module enables suppression of exports.

##### [` CF_LONGJUMP_TABLE_PRESENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD25CF_LONGJUMP_TABLE_PRESENTE>)

enumerator CF\_LONGJUMP\_TABLE\_PRESENT = 0x10000

Module contains longjmp target information.

##### [` RF_INSTRUMENTED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD15RF_INSTRUMENTEDE>)

enumerator RF\_INSTRUMENTED = 0x00020000

Module contains return flow instrumentation and metadata.

##### [` RF_ENABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD9RF_ENABLEE>)

enumerator RF\_ENABLE = 0x00040000

Module requests that the OS enable return flow protection.

##### [` RF_STRICT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD9RF_STRICTE>)

enumerator RF\_STRICT = 0x00080000

Module requests that the OS enable return flow protection in strict mode.

##### [` RETPOLINE_PRESENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD17RETPOLINE_PRESENTE>)

enumerator RETPOLINE\_PRESENT = 0x00100000

Module was built with retpoline support.

##### [` EH_CONTINUATION_TABLE_PRESENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD29EH_CONTINUATION_TABLE_PRESENTE>)

enumerator EH\_CONTINUATION\_TABLE\_PRESENT = 0x400000

Module contains EH continuation target information.

##### [` XFG_ENABLED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD11XFG_ENABLEDE>)

enumerator XFG\_ENABLED = 0x00800000

Module was built with xfg (deprecated).

##### [` CASTGUARD_PRESENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD17CASTGUARD_PRESENTE>)

enumerator CASTGUARD\_PRESENT = 0x01000000

Module has CastGuard instrumentation present.

##### [` MEMCPY_PRESENT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARD14MEMCPY_PRESENTE>)

enumerator MEMCPY\_PRESENT = 0x02000000

Module has Guarded Memcpy instrumentation present.

#### [` guard_functions_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration17guard_functions_tE>)

using guard\_functions\_t = std::vector&lt;[guard\_function\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration16guard_function_tE> "LIEF::PE::LoadConfiguration::guard_function_t")&gt;

#### [` it_guard_functions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration18it_guard_functionsE>)

using it\_guard\_functions = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[guard\_functions\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration17guard_functions_tE> "LIEF::PE::LoadConfiguration::guard_functions_t")&amp;&gt;

#### [` it_const_guard_functions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration24it_const_guard_functionsE>)

using it\_const\_guard\_functions = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [guard\_functions\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration17guard_functions_tE> "LIEF::PE::LoadConfiguration::guard_functions_t")&amp;&gt;

#### [` dynamic_relocations_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration21dynamic_relocations_tE>)

using dynamic\_relocations\_t = std::vector&lt;std::unique\_ptr&lt;[DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation")&gt;&gt;

#### [` it_dynamic_relocations_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration24it_dynamic_relocations_tE>)

using it\_dynamic\_relocations\_t = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[dynamic\_relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration21dynamic_relocations_tE> "LIEF::PE::LoadConfiguration::dynamic_relocations_t")&amp;, [DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation")\*&gt;

#### [` it_const_dynamic_relocations_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration30it_const_dynamic_relocations_tE>)

using it\_const\_dynamic\_relocations\_t = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [dynamic\_relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration21dynamic_relocations_tE> "LIEF::PE::LoadConfiguration::dynamic_relocations_t")&amp;, const [DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation")\*&gt;

Public Functions

#### [` LoadConfiguration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration17LoadConfigurationEv>)

LoadConfiguration()

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationaSERK17LoadConfiguration>)

[LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;operator=(const [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration")&amp;)

#### [` LoadConfiguration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration17LoadConfigurationERK17LoadConfiguration>)

LoadConfiguration(const [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration17LoadConfigurationERK17LoadConfiguration> "LIEF::PE::LoadConfiguration::LoadConfiguration")&amp;)

#### [` LoadConfiguration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration17LoadConfigurationERR17LoadConfiguration>)

LoadConfiguration([LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration17LoadConfigurationERR17LoadConfiguration> "LIEF::PE::LoadConfiguration::LoadConfiguration")&amp;&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationaSERR17LoadConfiguration>)

[LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;operator=([LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration")&amp;&amp;)

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration15characteristicsEv>)

inline uint32\_t characteristics() const

Characteristics of the structure which is defined by its size.

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration4sizeEv>)

inline uint32\_t size() const

Size of the current structure.

#### [` timedatestamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration13timedatestampEv>)

inline uint32\_t timedatestamp() const

The date and time stamp value.

#### [` major_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration13major_versionEv>)

inline uint16\_t major\_version() const

Major version.

#### [` minor_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration13minor_versionEv>)

inline uint16\_t minor\_version() const

Minor version.

#### [` global_flags_clear `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration18global_flags_clearEv>)

inline uint32\_t global\_flags\_clear() const

The global flags that control system behavior. For more information, see `Gflags.exe`.

#### [` global_flags_set `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration16global_flags_setEv>)

inline uint32\_t global\_flags\_set() const

The global flags that control system behavior. For more information, see `Gflags.exe`.

#### [` critical_section_default_timeout `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration32critical_section_default_timeoutEv>)

inline uint32\_t critical\_section\_default\_timeout() const

The critical section default time-out value.

#### [` decommit_free_block_threshold `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration29decommit_free_block_thresholdEv>)

inline uint64\_t decommit\_free\_block\_threshold() const

The size of the minimum block that must be freed before it is freed (de-committed), in bytes. This value is advisory.

#### [` decommit_total_free_threshold `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration29decommit_total_free_thresholdEv>)

inline uint64\_t decommit\_total\_free\_threshold() const

The size of the minimum total memory that must be freed in the process heap before it is freed (de-committed), in bytes. This value is advisory.

#### [` lock_prefix_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration17lock_prefix_tableEv>)

inline uint64\_t lock\_prefix\_table() const

The VA of a list of addresses where the `LOCK` prefix is used. These will be replaced by `NOP` on single-processor systems. This member is available only for x86.

#### [` maximum_allocation_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration23maximum_allocation_sizeEv>)

inline uint64\_t maximum\_allocation\_size() const

The maximum allocation size, in bytes. This member is obsolete and is used only for debugging purposes.

#### [` virtual_memory_threshold `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration24virtual_memory_thresholdEv>)

inline uint64\_t virtual\_memory\_threshold() const

The maximum block size that can be allocated from heap segments, in bytes.

#### [` process_affinity_mask `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration21process_affinity_maskEv>)

inline uint64\_t process\_affinity\_mask() const

The process affinity mask. For more information, see `GetProcessAffinityMask`. This member is available only for `.exe` files.

#### [` process_heap_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration18process_heap_flagsEv>)

inline uint32\_t process\_heap\_flags() const

The process heap flags. For more information, see `HeapCreate`.

#### [` csd_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration11csd_versionEv>)

inline uint16\_t csd\_version() const

The service pack version.

#### [` reserved1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration9reserved1Ev>)

inline uint16\_t reserved1() const

See: [dependent\_load\_flags()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1LoadConfiguration_1ad48ad89fdc8e26836a9abbba36c9ccee>).

#### [` dependent_load_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration20dependent_load_flagsEv>)

inline uint16\_t dependent\_load\_flags() const

Alias for [reserved1()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1LoadConfiguration_1af1d489a33216a048dff9ae3d4ab78df1>).

The default load flags used when the operating system resolves the statically linked imports of a module. For more information, see `LoadLibraryEx`.

#### [` editlist `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration8editlistEv>)

inline uint64\_t editlist() const

Reserved for use by the system.

#### [` security_cookie `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration15security_cookieEv>)

inline uint64\_t security\_cookie() const

A pointer to a cookie that is used by Visual C++ or GS implementation.

#### [` se_handler_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration16se_handler_tableEv>)

inline std::optional&lt;uint64\_t&gt; se\_handler\_table() const

The VA of the sorted table of RVAs of each valid, unique handler in the image. This member is available only for x86.

#### [` se_handler_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration16se_handler_countEv>)

inline std::optional&lt;uint64\_t&gt; se\_handler\_count() const

The count of unique handlers in the table. This member is available only for x86.

#### [` seh_functions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration13seh_functionsEv>)

inline const std::vector&lt;uint32\_t&gt; &amp;seh\_functions() const

Return the list of the function RVA in the SEH table (if any).

#### [` guard_cf_check_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration31guard_cf_check_function_pointerEv>)

inline std::optional&lt;uint64\_t&gt; guard\_cf\_check\_function\_pointer() const

The VA where Control Flow Guard check-function pointer is stored.

#### [` guard_cf_dispatch_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration34guard_cf_dispatch_function_pointerEv>)

inline std::optional&lt;uint64\_t&gt; guard\_cf\_dispatch\_function\_pointer() const

The VA where Control Flow Guard dispatch-function pointer is stored.

#### [` guard_cf_function_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration23guard_cf_function_tableEv>)

inline std::optional&lt;uint64\_t&gt; guard\_cf\_function\_table() const

The VA of the sorted table of RVAs of each Control Flow Guard function in the image.

#### [` guard_cf_function_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration23guard_cf_function_countEv>)

inline std::optional&lt;uint64\_t&gt; guard\_cf\_function\_count() const

The count of unique RVAs in the [guard\_cf\_function\_table()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1LoadConfiguration_1a67cd7a1e1989577f8fe76092a3a9d321>) table.

#### [` guard_cf_functions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration18guard_cf_functionsEv>)

inline [it\_const\_guard\_functions](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration24it_const_guard_functionsE> "LIEF::PE::LoadConfiguration::it_const_guard_functions") guard\_cf\_functions() const

Iterator over the Control Flow Guard functions referenced by [guard\_cf\_function\_table()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1LoadConfiguration_1a67cd7a1e1989577f8fe76092a3a9d321>).

#### [` guard_cf_functions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration18guard_cf_functionsEv>)

inline [it\_guard\_functions](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration18it_guard_functionsE> "LIEF::PE::LoadConfiguration::it_guard_functions") guard\_cf\_functions()

#### [` guard_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration11guard_flagsEv>)

inline std::optional&lt;uint32\_t&gt; guard\_flags() const

Control Flow Guard related flags.

#### [` has `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration3hasE11IMAGE_GUARD>)

inline bool has([IMAGE\_GUARD](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARDE> "LIEF::PE::LoadConfiguration::IMAGE_GUARD") flag) const

Check if the given flag is present.

#### [` guard_cf_flags_list `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration19guard_cf_flags_listEv>)

std::vector&lt;[IMAGE\_GUARD](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARDE> "LIEF::PE::LoadConfiguration::IMAGE_GUARD")&gt; guard\_cf\_flags\_list() const

List of flags.

#### [` code_integrity `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration14code_integrityEv>)

inline const [CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity") \*code\_integrity() const

Code integrity information.

#### [` code_integrity `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration14code_integrityEv>)

inline [CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity") \*code\_integrity()

#### [` guard_address_taken_iat_entry_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration35guard_address_taken_iat_entry_tableEv>)

inline std::optional&lt;uint64\_t&gt; guard\_address\_taken\_iat\_entry\_table() const

The VA where Control Flow Guard address taken IAT table is stored.

#### [` guard_address_taken_iat_entry_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration35guard_address_taken_iat_entry_countEv>)

inline std::optional&lt;uint64\_t&gt; guard\_address\_taken\_iat\_entry\_count() const

The count of unique RVAs in the table pointed by [guard\_address\_taken\_iat\_entry\_table()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1LoadConfiguration_1a4e205902b51c7f26d940ff3e8bd4cced>).

#### [` guard_address_taken_iat_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration31guard_address_taken_iat_entriesEv>)

inline [it\_const\_guard\_functions](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration24it_const_guard_functionsE> "LIEF::PE::LoadConfiguration::it_const_guard_functions") guard\_address\_taken\_iat\_entries() const

List of RVA pointed by [guard\_address\_taken\_iat\_entry\_table()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1LoadConfiguration_1a4e205902b51c7f26d940ff3e8bd4cced>).

#### [` guard_address_taken_iat_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration31guard_address_taken_iat_entriesEv>)

inline [it\_guard\_functions](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration18it_guard_functionsE> "LIEF::PE::LoadConfiguration::it_guard_functions") guard\_address\_taken\_iat\_entries()

#### [` guard_long_jump_target_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration28guard_long_jump_target_tableEv>)

inline std::optional&lt;uint64\_t&gt; guard\_long\_jump\_target\_table() const

The VA where Control Flow Guard long jump target table is stored.

#### [` guard_long_jump_target_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration28guard_long_jump_target_countEv>)

inline std::optional&lt;uint64\_t&gt; guard\_long\_jump\_target\_count() const

The count of unique RVAs in the table pointed by guard\_long\_jump\_target\_table.

#### [` guard_long_jump_targets `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration23guard_long_jump_targetsEv>)

inline [it\_const\_guard\_functions](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration24it_const_guard_functionsE> "LIEF::PE::LoadConfiguration::it_const_guard_functions") guard\_long\_jump\_targets() const

List of RVA pointed by [guard\_address\_taken\_iat\_entry\_table()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1LoadConfiguration_1a4e205902b51c7f26d940ff3e8bd4cced>).

#### [` guard_long_jump_targets `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration23guard_long_jump_targetsEv>)

inline [it\_guard\_functions](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration18it_guard_functionsE> "LIEF::PE::LoadConfiguration::it_guard_functions") guard\_long\_jump\_targets()

#### [` dynamic_value_reloc_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration25dynamic_value_reloc_tableEv>)

inline std::optional&lt;uint64\_t&gt; dynamic\_value\_reloc\_table() const

VA pointing to a `IMAGE_DYNAMIC_RELOCATION_TABLE`.

#### [` dynamic_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration19dynamic_relocationsEv>)

inline [it\_dynamic\_relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration24it_dynamic_relocations_tE> "LIEF::PE::LoadConfiguration::it_dynamic_relocations_t") dynamic\_relocations()

Return an iterator over the Dynamic relocations (DVRT).

#### [` dynamic_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration19dynamic_relocationsEv>)

inline [it\_const\_dynamic\_relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration30it_const_dynamic_relocations_tE> "LIEF::PE::LoadConfiguration::it_const_dynamic_relocations_t") dynamic\_relocations() const

#### [` hybrid_metadata_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration23hybrid_metadata_pointerEv>)

inline std::optional&lt;uint64\_t&gt; hybrid\_metadata\_pointer() const

Alias for [chpe\_metadata\_pointer()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1LoadConfiguration_1aa4afefc52314f67ea5a8460a27292ab4>).

#### [` chpe_metadata_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration21chpe_metadata_pointerEv>)

inline std::optional&lt;uint64\_t&gt; chpe\_metadata\_pointer() const

VA to the extra Compiled Hybrid Portable Executable (CHPE) metadata.

#### [` chpe_metadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration13chpe_metadataEv>)

inline const [CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata") \*chpe\_metadata() const

Compiled Hybrid Portable Executable (CHPE) metadata (if any).

#### [` chpe_metadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration13chpe_metadataEv>)

inline [CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata") \*chpe\_metadata()

#### [` guard_rf_failure_routine `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration24guard_rf_failure_routineEv>)

inline std::optional&lt;uint64\_t&gt; guard\_rf\_failure\_routine() const

VA of the failure routine.

#### [` guard_rf_failure_routine_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration41guard_rf_failure_routine_function_pointerEv>)

inline std::optional&lt;uint64\_t&gt; guard\_rf\_failure\_routine\_function\_pointer() const

VA of the failure routine `fptr`.

#### [` dynamic_value_reloctable_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration31dynamic_value_reloctable_offsetEv>)

inline std::optional&lt;uint32\_t&gt; dynamic\_value\_reloctable\_offset() const

Offset of dynamic relocation table relative to the relocation table.

#### [` dynamic_value_reloctable_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration32dynamic_value_reloctable_sectionEv>)

inline std::optional&lt;uint16\_t&gt; dynamic\_value\_reloctable\_section() const

The section index of the dynamic value relocation table.

#### [` reserved2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration9reserved2Ev>)

inline std::optional&lt;uint16\_t&gt; reserved2() const

Must be zero.

#### [` guard_rf_verify_stackpointer_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration45guard_rf_verify_stackpointer_function_pointerEv>)

inline std::optional&lt;uint64\_t&gt; guard\_rf\_verify\_stackpointer\_function\_pointer() const

VA of the [Function](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Function>) verifying the stack pointer.

#### [` hotpatch_table_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration21hotpatch_table_offsetEv>)

inline std::optional&lt;uint32\_t&gt; hotpatch\_table\_offset() const

Offset to the *hotpatch* table.

#### [` reserved3 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration9reserved3Ev>)

inline std::optional&lt;uint32\_t&gt; reserved3() const

#### [` enclave_configuration_ptr `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration25enclave_configuration_ptrEv>)

inline std::optional&lt;uint64\_t&gt; enclave\_configuration\_ptr() const

#### [` enclave_config `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration14enclave_configEv>)

inline const [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") \*enclave\_config() const

#### [` enclave_config `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration14enclave_configEv>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") \*enclave\_config()

#### [` volatile_metadata_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration25volatile_metadata_pointerEv>)

inline std::optional&lt;uint64\_t&gt; volatile\_metadata\_pointer() const

#### [` volatile_metadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration17volatile_metadataEv>)

inline const [VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata") \*volatile\_metadata() const

#### [` volatile_metadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration17volatile_metadataEv>)

inline [VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata") \*volatile\_metadata()

#### [` guard_eh_continuation_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration27guard_eh_continuation_tableEv>)

inline std::optional&lt;uint64\_t&gt; guard\_eh\_continuation\_table() const

#### [` guard_eh_continuation_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration27guard_eh_continuation_countEv>)

inline std::optional&lt;uint64\_t&gt; guard\_eh\_continuation\_count() const

#### [` guard_eh_continuation_functions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration31guard_eh_continuation_functionsEv>)

inline [it\_const\_guard\_functions](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration24it_const_guard_functionsE> "LIEF::PE::LoadConfiguration::it_const_guard_functions") guard\_eh\_continuation\_functions() const

#### [` guard_eh_continuation_functions `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration31guard_eh_continuation_functionsEv>)

inline [it\_guard\_functions](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration18it_guard_functionsE> "LIEF::PE::LoadConfiguration::it_guard_functions") guard\_eh\_continuation\_functions()

#### [` guard_xfg_check_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration32guard_xfg_check_function_pointerEv>)

inline std::optional&lt;uint64\_t&gt; guard\_xfg\_check\_function\_pointer() const

#### [` guard_xfg_dispatch_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration35guard_xfg_dispatch_function_pointerEv>)

inline std::optional&lt;uint64\_t&gt; guard\_xfg\_dispatch\_function\_pointer() const

#### [` guard_xfg_table_dispatch_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration41guard_xfg_table_dispatch_function_pointerEv>)

inline std::optional&lt;uint64\_t&gt; guard\_xfg\_table\_dispatch\_function\_pointer() const

#### [` cast_guard_os_determined_failure_mode `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration37cast_guard_os_determined_failure_modeEv>)

inline std::optional&lt;uint64\_t&gt; cast\_guard\_os\_determined\_failure\_mode() const

#### [` guard_memcpy_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration29guard_memcpy_function_pointerEv>)

inline std::optional&lt;uint64\_t&gt; guard\_memcpy\_function\_pointer() const

#### [` uma_function_pointers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration21uma_function_pointersEv>)

inline std::optional&lt;uint64\_t&gt; uma\_function\_pointers() const

#### [` characteristics `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration15characteristicsE8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;characteristics(uint32\_t characteristics)

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration4sizeE8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;size(uint32\_t value)

#### [` timedatestamp `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration13timedatestampE8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;timedatestamp(uint32\_t timedatestamp)

#### [` major_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration13major_versionE8uint16_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;major\_version(uint16\_t major\_version)

#### [` minor_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration13minor_versionE8uint16_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;minor\_version(uint16\_t minor\_version)

#### [` global_flags_clear `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration18global_flags_clearE8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;global\_flags\_clear(uint32\_t global\_flags\_clear)

#### [` global_flags_set `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration16global_flags_setE8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;global\_flags\_set(uint32\_t global\_flags\_set)

#### [` critical_section_default_timeout `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration32critical_section_default_timeoutE8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;critical\_section\_default\_timeout(uint32\_t critical\_section\_default\_timeout)

#### [` decommit_free_block_threshold `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration29decommit_free_block_thresholdE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;decommit\_free\_block\_threshold(uint64\_t decommit\_free\_block\_threshold)

#### [` decommit_total_free_threshold `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration29decommit_total_free_thresholdE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;decommit\_total\_free\_threshold(uint64\_t decommit\_total\_free\_threshold)

#### [` lock_prefix_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration17lock_prefix_tableE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;lock\_prefix\_table(uint64\_t lock\_prefix\_table)

#### [` maximum_allocation_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration23maximum_allocation_sizeE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;maximum\_allocation\_size(uint64\_t maximum\_allocation\_size)

#### [` virtual_memory_threshold `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration24virtual_memory_thresholdE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;virtual\_memory\_threshold(uint64\_t virtual\_memory\_threshold)

#### [` process_affinity_mask `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration21process_affinity_maskE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;process\_affinity\_mask(uint64\_t process\_affinity\_mask)

#### [` process_heap_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration18process_heap_flagsE8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;process\_heap\_flags(uint32\_t process\_heap\_flagsid)

#### [` csd_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11csd_versionE8uint16_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;csd\_version(uint16\_t csd\_version)

#### [` reserved1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration9reserved1E8uint16_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;reserved1(uint16\_t reserved1)

#### [` dependent_load_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration20dependent_load_flagsE8uint16_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;dependent\_load\_flags(uint16\_t flags)

#### [` editlist `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration8editlistE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;editlist(uint64\_t editlist)

#### [` security_cookie `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration15security_cookieE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;security\_cookie(uint64\_t security\_cookie)

#### [` se_handler_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration16se_handler_tableE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;se\_handler\_table(uint64\_t se\_handler\_table)

#### [` se_handler_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration16se_handler_countE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;se\_handler\_count(uint64\_t se\_handler\_count)

#### [` guard_cf_check_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration31guard_cf_check_function_pointerE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_cf\_check\_function\_pointer(uint64\_t check\_pointer)

#### [` guard_cf_dispatch_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration34guard_cf_dispatch_function_pointerE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_cf\_dispatch\_function\_pointer(uint64\_t dispatch\_pointer)

#### [` guard_cf_function_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration23guard_cf_function_tableE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_cf\_function\_table(uint64\_t guard\_cf\_function\_table)

#### [` guard_cf_function_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration23guard_cf_function_countE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_cf\_function\_count(uint64\_t guard\_cf\_function\_count)

#### [` guard_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11guard_flagsE11IMAGE_GUARD>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_flags([IMAGE\_GUARD](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11IMAGE_GUARDE> "LIEF::PE::LoadConfiguration::IMAGE_GUARD") flags)

#### [` guard_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration11guard_flagsE8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_flags(uint32\_t flags)

#### [` code_integrity `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration14code_integrityE13CodeIntegrity>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;code\_integrity([CodeIntegrity](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13CodeIntegrityE> "LIEF::PE::CodeIntegrity") CI)

#### [` guard_address_taken_iat_entry_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration35guard_address_taken_iat_entry_tableE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_address\_taken\_iat\_entry\_table(uint64\_t value)

#### [` guard_address_taken_iat_entry_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration35guard_address_taken_iat_entry_countE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_address\_taken\_iat\_entry\_count(uint64\_t value)

#### [` guard_long_jump_target_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration28guard_long_jump_target_tableE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_long\_jump\_target\_table(uint64\_t value)

#### [` guard_long_jump_target_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration28guard_long_jump_target_countE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_long\_jump\_target\_count(uint64\_t value)

#### [` dynamic_value_reloc_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration25dynamic_value_reloc_tableE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;dynamic\_value\_reloc\_table(uint64\_t value)

#### [` hybrid_metadata_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration23hybrid_metadata_pointerE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;hybrid\_metadata\_pointer(uint64\_t value)

#### [` guard_rf_failure_routine `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration24guard_rf_failure_routineE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_rf\_failure\_routine(uint64\_t value)

#### [` guard_rf_failure_routine_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration41guard_rf_failure_routine_function_pointerE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_rf\_failure\_routine\_function\_pointer(uint64\_t value)

#### [` dynamic_value_reloctable_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration31dynamic_value_reloctable_offsetE8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;dynamic\_value\_reloctable\_offset(uint32\_t value)

#### [` dynamic_value_reloctable_section `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration32dynamic_value_reloctable_sectionE8uint16_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;dynamic\_value\_reloctable\_section(uint16\_t value)

#### [` reserved2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration9reserved2E8uint16_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;reserved2(uint16\_t value)

#### [` guard_rf_verify_stackpointer_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration45guard_rf_verify_stackpointer_function_pointerE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_rf\_verify\_stackpointer\_function\_pointer(uint64\_t value)

#### [` hotpatch_table_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration21hotpatch_table_offsetE8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;hotpatch\_table\_offset(uint32\_t value)

#### [` reserved3 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration9reserved3E8uint32_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;reserved3(uint32\_t value)

#### [` enclave_configuration_ptr `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration25enclave_configuration_ptrE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;enclave\_configuration\_ptr(uint64\_t value)

#### [` volatile_metadata_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration25volatile_metadata_pointerE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;volatile\_metadata\_pointer(uint64\_t value)

#### [` guard_eh_continuation_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration27guard_eh_continuation_tableE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_eh\_continuation\_table(uint64\_t value)

#### [` guard_eh_continuation_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration27guard_eh_continuation_countE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_eh\_continuation\_count(uint64\_t value)

#### [` guard_xfg_check_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration32guard_xfg_check_function_pointerE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_xfg\_check\_function\_pointer(uint64\_t value)

#### [` guard_xfg_dispatch_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration35guard_xfg_dispatch_function_pointerE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_xfg\_dispatch\_function\_pointer(uint64\_t value)

#### [` guard_xfg_table_dispatch_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration41guard_xfg_table_dispatch_function_pointerE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_xfg\_table\_dispatch\_function\_pointer(uint64\_t value)

#### [` cast_guard_os_determined_failure_mode `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration37cast_guard_os_determined_failure_modeE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;cast\_guard\_os\_determined\_failure\_mode(uint64\_t value)

#### [` guard_memcpy_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration29guard_memcpy_function_pointerE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;guard\_memcpy\_function\_pointer(uint64\_t value)

#### [` uma_function_pointers `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration21uma_function_pointersE8uint64_t>)

inline [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;uma\_function\_pointers(uint64\_t value)

#### [` ~LoadConfiguration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationD0Ev>)

~LoadConfiguration() override

#### [` accept `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration6acceptER7Visitor>)

virtual void accept(Visitor &amp;visitor) const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17LoadConfiguration9to_stringEv>)

std::string to\_string() const

Public Static Functions

#### [` PE_Tparse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE17LoadConfiguration5parseENSt10unique_ptrI17LoadConfigurationEER6ParserR12BinaryStream>)

template&lt;class PE\_T&gt;  
static std::unique\_ptr&lt;[LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration")&gt; parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

Friends

**friend class Parser**

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationlsERNSt7ostreamERK17LoadConfiguration>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [LoadConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfigurationE> "LIEF::PE::LoadConfiguration") &amp;config)

#### [` guard_function_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration16guard_function_tE>)

struct guard\_function\_t

Public Members

##### [` rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration16guard_function_t3rvaE>)

uint32\_t rva = 0

##### [` extra `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17LoadConfiguration16guard_function_t5extraE>)

uint32\_t extra = 0

---

## [CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#chpemetadata>)

### [` CHPEMetadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE>)

class CHPEMetadata

Base class for any Compiled Hybrid Portable Executable (CHPE) metadata.

This class is inherited by architecture-specific implementation.

Subclassed by [LIEF::PE::CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1CHPEMetadataARM64>), [LIEF::PE::CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1CHPEMetadataX86>)

Public Types

#### [` KIND `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata4KINDE>)

enum class KIND

Discriminator for the subclasses.

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata4KIND7UNKNOWNE>)

enumerator UNKNOWN = 0

##### [` ARM64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata4KIND5ARM64E>)

enumerator ARM64

##### [` X86 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata4KIND3X86E>)

enumerator X86

Public Functions

#### [` CHPEMetadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata12CHPEMetadataEv>)

CHPEMetadata() = default

#### [` CHPEMetadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata12CHPEMetadataE4KIND8uint32_t>)

inline CHPEMetadata([KIND](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata4KINDE> "LIEF::PE::CHPEMetadata::KIND") kind, uint32\_t version)

#### [` CHPEMetadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata12CHPEMetadataERK12CHPEMetadata>)

CHPEMetadata(const [CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata12CHPEMetadataERK12CHPEMetadata> "LIEF::PE::CHPEMetadata::CHPEMetadata")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataaSERK12CHPEMetadata>)

[CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata") &amp;operator=(const [CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata")&amp;) = default

#### [` CHPEMetadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata12CHPEMetadataERR12CHPEMetadata>)

CHPEMetadata([CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata12CHPEMetadataERR12CHPEMetadata> "LIEF::PE::CHPEMetadata::CHPEMetadata")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataaSERR12CHPEMetadata>)

[CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata") &amp;operator=([CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12CHPEMetadata5cloneEv>)

inline virtual std::unique\_ptr&lt;[CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata")&gt; clone() const

#### [` kind `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12CHPEMetadata4kindEv>)

inline [KIND](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata4KINDE> "LIEF::PE::CHPEMetadata::KIND") kind() const

Determine the type of the concrete implementation.

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12CHPEMetadata7versionEv>)

inline uint32\_t version() const

Version of the structure.

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12CHPEMetadata9to_stringEv>)

inline virtual std::string to\_string() const

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE12CHPEMetadata2asEP1Tv>)

template&lt;class T&gt;  
inline [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE12CHPEMetadata2asEP1Tv> "LIEF::PE::CHPEMetadata::as::T") \*as()

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE12CHPEMetadata2asEPK1Tv>)

template&lt;class T&gt;  
inline const [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE12CHPEMetadata2asEPK1Tv> "LIEF::PE::CHPEMetadata::as::T") \*as() const

#### [` ~CHPEMetadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataD0Ev>)

virtual ~CHPEMetadata() = default

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadata5parseER6ParserR12BinaryStream>)

static std::unique\_ptr&lt;[CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata")&gt; parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream)

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadatalsERNSt7ostreamERK12CHPEMetadata>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata") &amp;meta)

## [CHPEMetadata (ARM64)](<https://lief.re/doc/latest/formats/pe/cpp.html#chpemetadata-arm64>)

### [` CHPEMetadataARM64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E>)

class CHPEMetadataARM64 : public LIEF::PE::[CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata")

This class represents ARM64-specific metadata used in CHPE (Compatible Hybrid PE) binaries, particularly for hybrid architectures like ARM64EC and ARM64X.

It extends the [CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1CHPEMetadata>) base class and provides access to metadata describing code ranges, redirections, entry points, and other hybrid-specific information relevant for binary analysis or instrumentation.

Public Types

#### [` range_entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6415range_entries_tE>)

using range\_entries\_t = std::vector&lt;[range\_entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413range_entry_tE> "LIEF::PE::CHPEMetadataARM64::range_entry_t")&gt;

#### [` it_range_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6416it_range_entriesE>)

using it\_range\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[range\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6415range_entries_tE> "LIEF::PE::CHPEMetadataARM64::range_entries_t")&amp;&gt;

#### [` it_const_range_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6422it_const_range_entriesE>)

using it\_const\_range\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [range\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6415range_entries_tE> "LIEF::PE::CHPEMetadataARM64::range_entries_t")&amp;&gt;

#### [` redirection_entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6421redirection_entries_tE>)

using redirection\_entries\_t = std::vector&lt;[redirection\_entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6419redirection_entry_tE> "LIEF::PE::CHPEMetadataARM64::redirection_entry_t")&gt;

#### [` it_redirection_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6422it_redirection_entriesE>)

using it\_redirection\_entries = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[redirection\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6421redirection_entries_tE> "LIEF::PE::CHPEMetadataARM64::redirection_entries_t")&amp;&gt;

#### [` it_const_redirection_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6428it_const_redirection_entriesE>)

using it\_const\_redirection\_entries = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [redirection\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6421redirection_entries_tE> "LIEF::PE::CHPEMetadataARM64::redirection_entries_t")&amp;&gt;

#### [` code_range_entry_point_entries `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6430code_range_entry_point_entriesE>)

using code\_range\_entry\_point\_entries = std::vector&lt;[code\_range\_entry\_point\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6424code_range_entry_point_tE> "LIEF::PE::CHPEMetadataARM64::code_range_entry_point_t")&gt;

#### [` it_code_range_entry_point `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6425it_code_range_entry_pointE>)

using it\_code\_range\_entry\_point = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[code\_range\_entry\_point\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6430code_range_entry_point_entriesE> "LIEF::PE::CHPEMetadataARM64::code_range_entry_point_entries")&amp;&gt;

#### [` it_const_code_range_entry_point `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6431it_const_code_range_entry_pointE>)

using it\_const\_code\_range\_entry\_point = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [code\_range\_entry\_point\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6430code_range_entry_point_entriesE> "LIEF::PE::CHPEMetadataARM64::code_range_entry_point_entries")&amp;&gt;

Public Functions

#### [` CHPEMetadataARM64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6417CHPEMetadataARM64E8uint32_t>)

inline CHPEMetadataARM64(uint32\_t version)

#### [` CHPEMetadataARM64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6417CHPEMetadataARM64ERK17CHPEMetadataARM64>)

CHPEMetadataARM64(const [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6417CHPEMetadataARM64ERK17CHPEMetadataARM64> "LIEF::PE::CHPEMetadataARM64::CHPEMetadataARM64")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64aSERK17CHPEMetadataARM64>)

[CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;operator=(const [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64")&amp;) = default

#### [` CHPEMetadataARM64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6417CHPEMetadataARM64ERR17CHPEMetadataARM64>)

CHPEMetadataARM64([CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6417CHPEMetadataARM64ERR17CHPEMetadataARM64> "LIEF::PE::CHPEMetadataARM64::CHPEMetadataARM64")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64aSERR17CHPEMetadataARM64>)

[CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;operator=([CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM645cloneEv>)

inline virtual std::unique\_ptr&lt;[CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata")&gt; clone() const override

#### [` code_map `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM648code_mapEv>)

inline uint32\_t code\_map() const

RVA to the array that describes architecture-specific ranges.

#### [` code_map_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6414code_map_countEv>)

inline uint32\_t code\_map\_count() const

Number of entries in the code map.

#### [` code_ranges_to_entrypoints `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6426code_ranges_to_entrypointsEv>)

inline uint32\_t code\_ranges\_to\_entrypoints() const

#### [` redirection_metadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6420redirection_metadataEv>)

inline uint32\_t redirection\_metadata() const

#### [` os_arm64x_dispatch_call_no_redirect `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6435os_arm64x_dispatch_call_no_redirectEv>)

inline uint32\_t os\_arm64x\_dispatch\_call\_no\_redirect() const

#### [` os_arm64x_dispatch_ret `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6422os_arm64x_dispatch_retEv>)

inline uint32\_t os\_arm64x\_dispatch\_ret() const

#### [` os_arm64x_dispatch_call `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6423os_arm64x_dispatch_callEv>)

inline uint32\_t os\_arm64x\_dispatch\_call() const

#### [` os_arm64x_dispatch_icall `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6424os_arm64x_dispatch_icallEv>)

inline uint32\_t os\_arm64x\_dispatch\_icall() const

#### [` os_arm64x_dispatch_icall_cfg `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6428os_arm64x_dispatch_icall_cfgEv>)

inline uint32\_t os\_arm64x\_dispatch\_icall\_cfg() const

#### [` alternate_entry_point `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6421alternate_entry_pointEv>)

inline uint32\_t alternate\_entry\_point() const

#### [` auxiliary_iat `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6413auxiliary_iatEv>)

inline uint32\_t auxiliary\_iat() const

#### [` code_ranges_to_entry_points_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6433code_ranges_to_entry_points_countEv>)

inline uint32\_t code\_ranges\_to\_entry\_points\_count() const

#### [` redirection_metadata_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6426redirection_metadata_countEv>)

inline uint32\_t redirection\_metadata\_count() const

#### [` get_x64_information_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6436get_x64_information_function_pointerEv>)

inline uint32\_t get\_x64\_information\_function\_pointer() const

#### [` set_x64_information_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6436set_x64_information_function_pointerEv>)

inline uint32\_t set\_x64\_information\_function\_pointer() const

#### [` extra_rfe_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6415extra_rfe_tableEv>)

inline uint32\_t extra\_rfe\_table() const

RVA to this architecture-specific exception table.

#### [` extra_rfe_table_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6420extra_rfe_table_sizeEv>)

inline uint32\_t extra\_rfe\_table\_size() const

architecture-specific exception table size

#### [` os_arm64x_dispatch_fptr `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6423os_arm64x_dispatch_fptrEv>)

inline uint32\_t os\_arm64x\_dispatch\_fptr() const

#### [` auxiliary_iat_copy `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6418auxiliary_iat_copyEv>)

inline uint32\_t auxiliary\_iat\_copy() const

#### [` auxiliary_delay_import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6422auxiliary_delay_importEv>)

inline uint32\_t auxiliary\_delay\_import() const

#### [` auxiliary_delay_import_copy `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6427auxiliary_delay_import_copyEv>)

inline uint32\_t auxiliary\_delay\_import\_copy() const

#### [` bitfield_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6413bitfield_infoEv>)

inline uint32\_t bitfield\_info() const

#### [` code_ranges `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6411code_rangesEv>)

inline [it\_range\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6416it_range_entriesE> "LIEF::PE::CHPEMetadataARM64::it_range_entries") code\_ranges()

#### [` code_ranges `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6411code_rangesEv>)

inline [it\_const\_range\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6422it_const_range_entriesE> "LIEF::PE::CHPEMetadataARM64::it_const_range_entries") code\_ranges() const

#### [` redirections `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6412redirectionsEv>)

inline [it\_redirection\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6422it_redirection_entriesE> "LIEF::PE::CHPEMetadataARM64::it_redirection_entries") redirections()

#### [` redirections `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6412redirectionsEv>)

inline [it\_const\_redirection\_entries](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6428it_const_redirection_entriesE> "LIEF::PE::CHPEMetadataARM64::it_const_redirection_entries") redirections() const

#### [` code_range_entry_point `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6422code_range_entry_pointEv>)

inline [it\_code\_range\_entry\_point](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6425it_code_range_entry_pointE> "LIEF::PE::CHPEMetadataARM64::it_code_range_entry_point") code\_range\_entry\_point()

#### [` code_range_entry_point `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6422code_range_entry_pointEv>)

inline [it\_const\_code\_range\_entry\_point](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6431it_const_code_range_entry_pointE> "LIEF::PE::CHPEMetadataARM64::it_const_code_range_entry_point") code\_range\_entry\_point() const

#### [` code_map `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM648code_mapE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;code\_map(uint32\_t value)

#### [` code_map_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6414code_map_countE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;code\_map\_count(uint32\_t value)

#### [` code_ranges_to_entrypoints `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6426code_ranges_to_entrypointsE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;code\_ranges\_to\_entrypoints(uint32\_t value)

#### [` redirection_metadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6420redirection_metadataE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;redirection\_metadata(uint32\_t value)

#### [` os_arm64x_dispatch_call_no_redirect `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6435os_arm64x_dispatch_call_no_redirectE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;os\_arm64x\_dispatch\_call\_no\_redirect(uint32\_t value)

#### [` os_arm64x_dispatch_ret `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6422os_arm64x_dispatch_retE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;os\_arm64x\_dispatch\_ret(uint32\_t value)

#### [` os_arm64x_dispatch_call `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6423os_arm64x_dispatch_callE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;os\_arm64x\_dispatch\_call(uint32\_t value)

#### [` os_arm64x_dispatch_icall `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6424os_arm64x_dispatch_icallE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;os\_arm64x\_dispatch\_icall(uint32\_t value)

#### [` os_arm64x_dispatch_icall_cfg `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6428os_arm64x_dispatch_icall_cfgE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;os\_arm64x\_dispatch\_icall\_cfg(uint32\_t value)

#### [` alternate_entry_point `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6421alternate_entry_pointE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;alternate\_entry\_point(uint32\_t value)

#### [` auxiliary_iat `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413auxiliary_iatE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;auxiliary\_iat(uint32\_t value)

#### [` code_ranges_to_entry_points_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6433code_ranges_to_entry_points_countE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;code\_ranges\_to\_entry\_points\_count(uint32\_t value)

#### [` redirection_metadata_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6426redirection_metadata_countE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;redirection\_metadata\_count(uint32\_t value)

#### [` get_x64_information_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6436get_x64_information_function_pointerE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;get\_x64\_information\_function\_pointer(uint32\_t value)

#### [` set_x64_information_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6436set_x64_information_function_pointerE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;set\_x64\_information\_function\_pointer(uint32\_t value)

#### [` extra_rfe_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6415extra_rfe_tableE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;extra\_rfe\_table(uint32\_t value)

#### [` extra_rfe_table_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6420extra_rfe_table_sizeE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;extra\_rfe\_table\_size(uint32\_t value)

#### [` os_arm64x_dispatch_fptr `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6423os_arm64x_dispatch_fptrE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;os\_arm64x\_dispatch\_fptr(uint32\_t value)

#### [` auxiliary_iat_copy `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6418auxiliary_iat_copyE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;auxiliary\_iat\_copy(uint32\_t value)

#### [` auxiliary_delay_import `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6422auxiliary_delay_importE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;auxiliary\_delay\_import(uint32\_t value)

#### [` auxiliary_delay_import_copy `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6427auxiliary_delay_import_copyE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;auxiliary\_delay\_import\_copy(uint32\_t value)

#### [` bitfield_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413bitfield_infoE8uint32_t>)

inline [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;bitfield\_info(uint32\_t value)

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM649to_stringEv>)

virtual std::string to\_string() const override

#### [` ~CHPEMetadataARM64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64D0Ev>)

~CHPEMetadataARM64() override = default

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM645parseER6ParserR12BinaryStream8uint32_t>)

static std::unique\_ptr&lt;[CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64")&gt; parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream, uint32\_t version)

#### [` parse_code_map `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6414parse_code_mapER6ParserR17CHPEMetadataARM64>)

static [ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") parse\_code\_map([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;metadata)

#### [` parse_redirections `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6418parse_redirectionsER6ParserR17CHPEMetadataARM64>)

static [ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") parse\_redirections([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;metadata)

#### [` parse_code_ranges_to_entry_points `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6433parse_code_ranges_to_entry_pointsER6ParserR17CHPEMetadataARM64>)

static [ok\_error\_t](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4N4LIEF10ok_error_tE> "LIEF::ok_error_t") parse\_code\_ranges\_to\_entry\_points([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [CHPEMetadataARM64](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM64E> "LIEF::PE::CHPEMetadataARM64") &amp;metadata)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM647classofEPK12CHPEMetadata>)

static inline bool classof(const [CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata") \*meta)

#### [` range_entry_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413range_entry_tE>)

struct range\_entry\_t

Structure that describes architecture-specific ranges.

Public Types

##### [` TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413range_entry_t4TYPEE>)

enum class TYPE

*Values:*

###### [` ARM64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413range_entry_t4TYPE5ARM64E>)

enumerator ARM64 = 0

Pure ARM64 code.

###### [` ARM64EC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413range_entry_t4TYPE7ARM64ECE>)

enumerator ARM64EC = 1

ARM64EC hybrid code (compatible with x64).

###### [` AMD64 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413range_entry_t4TYPE5AMD64E>)

enumerator AMD64 = 2

x64 code.

Public Functions

##### [` start `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6413range_entry_t5startEv>)

inline uint32\_t start() const

Start of the range (RVA).

##### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6413range_entry_t4typeEv>)

inline [TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413range_entry_t4TYPEE> "LIEF::PE::CHPEMetadataARM64::range_entry_t::TYPE") type() const

Architecture for this range.

##### [` end `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17CHPEMetadataARM6413range_entry_t3endEv>)

inline uint32\_t end() const

End of the range (RVA).

Public Members

##### [` start_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413range_entry_t12start_offsetE>)

uint32\_t start\_offset = 0

Raw data (include start RVA and type).

##### [` length `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413range_entry_t6lengthE>)

uint32\_t length = 0

Range’s length.

Public Static Attributes

##### [` TYPE_MASK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6413range_entry_t9TYPE_MASKE>)

static uint32\_t TYPE\_MASK = 3

#### [` redirection_entry_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6419redirection_entry_tE>)

struct redirection\_entry\_t

Structure that describes a redirection.

Public Members

##### [` src `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6419redirection_entry_t3srcE>)

uint32\_t src = 0

##### [` dst `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6419redirection_entry_t3dstE>)

uint32\_t dst = 0

#### [` code_range_entry_point_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6424code_range_entry_point_tE>)

struct code\_range\_entry\_point\_t

Mirror of `IMAGE_ARM64EC_CODE_RANGE_ENTRY_POINT`: Represents a mapping between code range and its entry point.

Public Members

##### [` start_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6424code_range_entry_point_t9start_rvaE>)

uint32\_t start\_rva = 0

Start of the code range.

##### [` end_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6424code_range_entry_point_t7end_rvaE>)

uint32\_t end\_rva = 0

End of the code range (RVA).

##### [` entrypoint `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17CHPEMetadataARM6424code_range_entry_point_t10entrypointE>)

uint32\_t entrypoint = 0

RVA of the entry point for this range.

## [CHPEMetadata (X86)](<https://lief.re/doc/latest/formats/pe/cpp.html#chpemetadata-x86>)

### [` CHPEMetadataX86 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E>)

class CHPEMetadataX86 : public LIEF::PE::[CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata")

This class represents hybrid metadata for X86.

Public Functions

#### [` CHPEMetadataX86 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8615CHPEMetadataX86E8uint32_t>)

inline CHPEMetadataX86(uint32\_t version)

#### [` CHPEMetadataX86 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8615CHPEMetadataX86ERK15CHPEMetadataX86>)

CHPEMetadataX86(const [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8615CHPEMetadataX86ERK15CHPEMetadataX86> "LIEF::PE::CHPEMetadataX86::CHPEMetadataX86")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86aSERK15CHPEMetadataX86>)

[CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;operator=(const [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86")&amp;) = default

#### [` CHPEMetadataX86 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8615CHPEMetadataX86ERR15CHPEMetadataX86>)

CHPEMetadataX86([CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8615CHPEMetadataX86ERR15CHPEMetadataX86> "LIEF::PE::CHPEMetadataX86::CHPEMetadataX86")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86aSERR15CHPEMetadataX86>)

[CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;operator=([CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX865cloneEv>)

inline virtual std::unique\_ptr&lt;[CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata")&gt; clone() const override

#### [` chpe_code_address_range_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8630chpe_code_address_range_offsetEv>)

inline uint32\_t chpe\_code\_address\_range\_offset() const

#### [` chpe_code_address_range_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8629chpe_code_address_range_countEv>)

inline uint32\_t chpe\_code\_address\_range\_count() const

#### [` wowa64_exception_handler_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8641wowa64_exception_handler_function_pointerEv>)

inline uint32\_t wowa64\_exception\_handler\_function\_pointer() const

#### [` wowa64_dispatch_call_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8637wowa64_dispatch_call_function_pointerEv>)

inline uint32\_t wowa64\_dispatch\_call\_function\_pointer() const

#### [` wowa64_dispatch_indirect_call_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8646wowa64_dispatch_indirect_call_function_pointerEv>)

inline uint32\_t wowa64\_dispatch\_indirect\_call\_function\_pointer() const

#### [` wowa64_dispatch_indirect_call_cfg_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8650wowa64_dispatch_indirect_call_cfg_function_pointerEv>)

inline uint32\_t wowa64\_dispatch\_indirect\_call\_cfg\_function\_pointer() const

#### [` wowa64_dispatch_ret_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8636wowa64_dispatch_ret_function_pointerEv>)

inline uint32\_t wowa64\_dispatch\_ret\_function\_pointer() const

#### [` wowa64_dispatch_ret_leaf_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8641wowa64_dispatch_ret_leaf_function_pointerEv>)

inline uint32\_t wowa64\_dispatch\_ret\_leaf\_function\_pointer() const

#### [` wowa64_dispatch_jump_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8637wowa64_dispatch_jump_function_pointerEv>)

inline uint32\_t wowa64\_dispatch\_jump\_function\_pointer() const

#### [` compiler_iat_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8620compiler_iat_pointerEv>)

inline std::optional&lt;uint32\_t&gt; compiler\_iat\_pointer() const

#### [` wowa64_rdtsc_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX8629wowa64_rdtsc_function_pointerEv>)

inline std::optional&lt;uint32\_t&gt; wowa64\_rdtsc\_function\_pointer() const

#### [` chpe_code_address_range_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8630chpe_code_address_range_offsetE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;chpe\_code\_address\_range\_offset(uint32\_t value)

#### [` chpe_code_address_range_count `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8629chpe_code_address_range_countE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;chpe\_code\_address\_range\_count(uint32\_t value)

#### [` wowa64_exception_handler_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8641wowa64_exception_handler_function_pointerE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;wowa64\_exception\_handler\_function\_pointer(uint32\_t value)

#### [` wowa64_dispatch_call_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8637wowa64_dispatch_call_function_pointerE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;wowa64\_dispatch\_call\_function\_pointer(uint32\_t value)

#### [` wowa64_dispatch_indirect_call_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8646wowa64_dispatch_indirect_call_function_pointerE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;wowa64\_dispatch\_indirect\_call\_function\_pointer(uint32\_t value)

#### [` wowa64_dispatch_indirect_call_cfg_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8650wowa64_dispatch_indirect_call_cfg_function_pointerE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;wowa64\_dispatch\_indirect\_call\_cfg\_function\_pointer(uint32\_t value)

#### [` wowa64_dispatch_ret_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8636wowa64_dispatch_ret_function_pointerE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;wowa64\_dispatch\_ret\_function\_pointer(uint32\_t value)

#### [` wowa64_dispatch_ret_leaf_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8641wowa64_dispatch_ret_leaf_function_pointerE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;wowa64\_dispatch\_ret\_leaf\_function\_pointer(uint32\_t value)

#### [` wowa64_dispatch_jump_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8637wowa64_dispatch_jump_function_pointerE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;wowa64\_dispatch\_jump\_function\_pointer(uint32\_t value)

#### [` compiler_iat_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8620compiler_iat_pointerE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;compiler\_iat\_pointer(uint32\_t value)

#### [` wowa64_rdtsc_function_pointer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX8629wowa64_rdtsc_function_pointerE8uint32_t>)

inline [CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86") &amp;wowa64\_rdtsc\_function\_pointer(uint32\_t value)

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE15CHPEMetadataX869to_stringEv>)

virtual std::string to\_string() const override

#### [` ~CHPEMetadataX86 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86D0Ev>)

~CHPEMetadataX86() override = default

Public Static Functions

#### [` parse `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX865parseER6ParserR12BinaryStream8uint32_t>)

static std::unique\_ptr&lt;[CHPEMetadataX86](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX86E> "LIEF::PE::CHPEMetadataX86")&gt; parse([Parser](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ParserE> "LIEF::PE::Parser") &amp;ctx, [BinaryStream](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4N4LIEF12BinaryStreamE> "LIEF::BinaryStream") &amp;stream, uint32\_t version)

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE15CHPEMetadataX867classofEPK12CHPEMetadata>)

static inline bool classof(const [CHPEMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12CHPEMetadataE> "LIEF::PE::CHPEMetadata") \*meta)

---

## [DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#dynamicrelocation>)

### [` DynamicRelocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE>)

class DynamicRelocation

This is the base class for any `IMAGE_DYNAMIC_RELOCATION32`, `IMAGE_DYNAMIC_RELOCATION32_V2`, `IMAGE_DYNAMIC_RELOCATION64`, `IMAGE_DYNAMIC_RELOCATION64_V2` dynamic relocations.

Subclassed by [LIEF::PE::DynamicRelocationV1](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicRelocationV1>), [LIEF::PE::DynamicRelocationV2](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicRelocationV2>)

Public Types

#### [` IMAGE_DYNAMIC_RELOCATION `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation24IMAGE_DYNAMIC_RELOCATIONE>)

enum IMAGE\_DYNAMIC\_RELOCATION

Special symbol values as defined in `link.exe - GetDVRTSpecialSymbolName`.

*Values:*

##### [` RELOCATION_GUARD_RF_PROLOGUE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation24IMAGE_DYNAMIC_RELOCATION28RELOCATION_GUARD_RF_PROLOGUEE>)

enumerator RELOCATION\_GUARD\_RF\_PROLOGUE = 1

Mirror `IMAGE_DYNAMIC_RELOCATION_GUARD_RF_PROLOGUE`.

##### [` RELOCATION_GUARD_RF_EPILOGUE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation24IMAGE_DYNAMIC_RELOCATION28RELOCATION_GUARD_RF_EPILOGUEE>)

enumerator RELOCATION\_GUARD\_RF\_EPILOGUE = 2

Mirror `IMAGE_DYNAMIC_RELOCATION_GUARD_RF_EPILOGUE`.

##### [` RELOCATION_GUARD_IMPORT_CONTROL_TRANSFER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation24IMAGE_DYNAMIC_RELOCATION40RELOCATION_GUARD_IMPORT_CONTROL_TRANSFERE>)

enumerator RELOCATION\_GUARD\_IMPORT\_CONTROL\_TRANSFER = 3

Mirror `IMAGE_DYNAMIC_RELOCATION_GUARD_IMPORT_CONTROL_TRANSFER`.

##### [` RELOCATION_GUARD_INDIR_CONTROL_TRANSFER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation24IMAGE_DYNAMIC_RELOCATION39RELOCATION_GUARD_INDIR_CONTROL_TRANSFERE>)

enumerator RELOCATION\_GUARD\_INDIR\_CONTROL\_TRANSFER = 4

Mirror `IMAGE_DYNAMIC_RELOCATION_GUARD_INDIR_CONTROL_TRANSFER`.

##### [` RELOCATION_GUARD_SWITCHTABLE_BRANCH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation24IMAGE_DYNAMIC_RELOCATION35RELOCATION_GUARD_SWITCHTABLE_BRANCHE>)

enumerator RELOCATION\_GUARD\_SWITCHTABLE\_BRANCH = 5

Mirror `IMAGE_DYNAMIC_RELOCATION_GUARD_SWITCHTABLE_BRANCH`.

##### [` RELOCATION_ARM64X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation24IMAGE_DYNAMIC_RELOCATION17RELOCATION_ARM64XE>)

enumerator RELOCATION\_ARM64X = 6

Mirror `IMAGE_DYNAMIC_RELOCATION_ARM64X`.

##### [` RELOCATION_FUNCTION_OVERRIDE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation24IMAGE_DYNAMIC_RELOCATION28RELOCATION_FUNCTION_OVERRIDEE>)

enumerator RELOCATION\_FUNCTION\_OVERRIDE = 7

Mirror `IMAGE_DYNAMIC_RELOCATION_FUNCTION_OVERRIDE`.

##### [` RELOCATION_ARM64_KERNEL_IMPORT_CALL_TRANSFER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation24IMAGE_DYNAMIC_RELOCATION44RELOCATION_ARM64_KERNEL_IMPORT_CALL_TRANSFERE>)

enumerator RELOCATION\_ARM64\_KERNEL\_IMPORT\_CALL\_TRANSFER = 8

Mirror `IMAGE_DYNAMIC_RELOCATION_ARM64_KERNEL_IMPORT_CALL_TRANSFER`.

##### [` _RELOC_LAST_ENTRY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation24IMAGE_DYNAMIC_RELOCATION17_RELOC_LAST_ENTRYE>)

enumerator \_RELOC\_LAST\_ENTRY

Public Functions

#### [` DynamicRelocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation17DynamicRelocationEv>)

DynamicRelocation() = delete

#### [` DynamicRelocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation17DynamicRelocationE8uint32_t>)

DynamicRelocation(uint32\_t version)

#### [` DynamicRelocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation17DynamicRelocationERK17DynamicRelocation>)

DynamicRelocation(const [DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation17DynamicRelocationERK17DynamicRelocation> "LIEF::PE::DynamicRelocation::DynamicRelocation")&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationaSERK17DynamicRelocation>)

[DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation") &amp;operator=(const [DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation")&amp;)

#### [` DynamicRelocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation17DynamicRelocationERR17DynamicRelocation>)

DynamicRelocation([DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation17DynamicRelocationERR17DynamicRelocation> "LIEF::PE::DynamicRelocation::DynamicRelocation")&amp;&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationaSERR17DynamicRelocation>)

[DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation") &amp;operator=([DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation")&amp;&amp;)

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17DynamicRelocation5cloneEv>)

virtual std::unique\_ptr&lt;[DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation")&gt; clone() const = 0

#### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17DynamicRelocation7versionEv>)

inline uint32\_t version() const

Version of the structure.

#### [` symbol `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17DynamicRelocation6symbolEv>)

inline uint64\_t symbol() const

[Symbol](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol>) address. Some values have a special meaning (c.f. [IMAGE\_DYNAMIC\_RELOCATION](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicRelocation_1adaa1042d53b2136f4abacf038bdc8fc3>)) and define how fixups are encoded.

#### [` fixups `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17DynamicRelocation6fixupsEv>)

inline const [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") \*fixups() const

#### [` fixups `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation6fixupsEv>)

inline [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") \*fixups()

Return fixups information, where the interpretation may depend on the symbol’s value.

#### [` symbol `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation6symbolE8uint64_t>)

inline [DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation") &amp;symbol(uint64\_t value)

#### [` fixups `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocation6fixupsENSt10unique_ptrI12DynamicFixupEE>)

[DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation") &amp;fixups(std::unique\_ptr&lt;[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")&gt; F)

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE17DynamicRelocation9to_stringEv>)

virtual std::string to\_string() const = 0

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE17DynamicRelocation2asEP1Tv>)

template&lt;class T&gt;  
inline [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE17DynamicRelocation2asEP1Tv> "LIEF::PE::DynamicRelocation::as::T") \*as()

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE17DynamicRelocation2asEPK1Tv>)

template&lt;class T&gt;  
inline const [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE17DynamicRelocation2asEPK1Tv> "LIEF::PE::DynamicRelocation::as::T") \*as() const

#### [` ~DynamicRelocation `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationD0Ev>)

virtual ~DynamicRelocation()

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationlsERNSt7ostreamERK17DynamicRelocation>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation") &amp;reloc)

## [DynamicRelocationV1](<https://lief.re/doc/latest/formats/pe/cpp.html#dynamicrelocationv1>)

### [` DynamicRelocationV1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV1E>)

class DynamicRelocationV1 : public LIEF::PE::[DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation")

This class represents a dynamic relocation (`IMAGE_DYNAMIC_RELOCATION32` or `IMAGE_DYNAMIC_RELOCATION64`).

Public Functions

#### [` DynamicRelocationV1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV119DynamicRelocationV1Ev>)

inline DynamicRelocationV1()

#### [` DynamicRelocationV1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV119DynamicRelocationV1ERK19DynamicRelocationV1>)

DynamicRelocationV1(const [DynamicRelocationV1](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV119DynamicRelocationV1ERK19DynamicRelocationV1> "LIEF::PE::DynamicRelocationV1::DynamicRelocationV1")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV1aSERK19DynamicRelocationV1>)

[DynamicRelocationV1](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV1E> "LIEF::PE::DynamicRelocationV1") &amp;operator=(const [DynamicRelocationV1](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV1E> "LIEF::PE::DynamicRelocationV1")&amp;) = default

#### [` DynamicRelocationV1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV119DynamicRelocationV1ERR19DynamicRelocationV1>)

DynamicRelocationV1([DynamicRelocationV1](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV119DynamicRelocationV1ERR19DynamicRelocationV1> "LIEF::PE::DynamicRelocationV1::DynamicRelocationV1")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV1aSERR19DynamicRelocationV1>)

[DynamicRelocationV1](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV1E> "LIEF::PE::DynamicRelocationV1") &amp;operator=([DynamicRelocationV1](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV1E> "LIEF::PE::DynamicRelocationV1")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19DynamicRelocationV15cloneEv>)

inline virtual std::unique\_ptr&lt;[DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19DynamicRelocationV19to_stringEv>)

virtual std::string to\_string() const override

#### [` ~DynamicRelocationV1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV1D0Ev>)

~DynamicRelocationV1() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV17classofEPK17DynamicRelocation>)

static inline bool classof(const [DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation") \*reloc)

## [DynamicRelocationV2](<https://lief.re/doc/latest/formats/pe/cpp.html#dynamicrelocationv2>)

### [` DynamicRelocationV2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV2E>)

class DynamicRelocationV2 : public LIEF::PE::[DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation")

This class represents a dynamic relocation (`IMAGE_DYNAMIC_RELOCATION64_V2` or `IMAGE_DYNAMIC_RELOCATION32_V2`).

Public Functions

#### [` DynamicRelocationV2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV219DynamicRelocationV2Ev>)

inline DynamicRelocationV2()

#### [` DynamicRelocationV2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV219DynamicRelocationV2ERK19DynamicRelocationV2>)

DynamicRelocationV2(const [DynamicRelocationV2](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV219DynamicRelocationV2ERK19DynamicRelocationV2> "LIEF::PE::DynamicRelocationV2::DynamicRelocationV2")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV2aSERK19DynamicRelocationV2>)

[DynamicRelocationV2](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV2E> "LIEF::PE::DynamicRelocationV2") &amp;operator=(const [DynamicRelocationV2](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV2E> "LIEF::PE::DynamicRelocationV2")&amp;) = default

#### [` DynamicRelocationV2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV219DynamicRelocationV2ERR19DynamicRelocationV2>)

DynamicRelocationV2([DynamicRelocationV2](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV219DynamicRelocationV2ERR19DynamicRelocationV2> "LIEF::PE::DynamicRelocationV2::DynamicRelocationV2")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV2aSERR19DynamicRelocationV2>)

[DynamicRelocationV2](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV2E> "LIEF::PE::DynamicRelocationV2") &amp;operator=([DynamicRelocationV2](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV2E> "LIEF::PE::DynamicRelocationV2")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19DynamicRelocationV25cloneEv>)

inline virtual std::unique\_ptr&lt;[DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19DynamicRelocationV29to_stringEv>)

virtual std::string to\_string() const override

#### [` ~DynamicRelocationV2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV2D0Ev>)

~DynamicRelocationV2() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicRelocationV27classofEPK17DynamicRelocation>)

static inline bool classof(const [DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17DynamicRelocationE> "LIEF::PE::DynamicRelocation") \*reloc)

---

## [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#dynamicfixup>)

### [` DynamicFixup `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE>)

class DynamicFixup

This is the base class for any fixups located in [DynamicRelocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicRelocation>).

Subclassed by [LIEF::PE::DynamicFixupARM64Kernel](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicFixupARM64Kernel>), [LIEF::PE::DynamicFixupARM64X](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicFixupARM64X>), [LIEF::PE::DynamicFixupControlTransfer](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicFixupControlTransfer>), [LIEF::PE::DynamicFixupGeneric](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicFixupGeneric>), [LIEF::PE::DynamicFixupUnknown](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicFixupUnknown>), [LIEF::PE::FunctionOverride](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1FunctionOverride>)

Public Types

#### [` KIND `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup4KINDE>)

enum KIND

*Values:*

##### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup4KIND7UNKNOWNE>)

enumerator UNKNOWN = 0

If [DynamicRelocation::symbol](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicRelocation_1a360750166d448652363ff73fb2e226d2>) is a special value that is not supported by LIEF.

##### [` GENERIC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup4KIND7GENERICE>)

enumerator GENERIC

If [DynamicRelocation::symbol](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicRelocation_1a360750166d448652363ff73fb2e226d2>) is not a special value.

##### [` ARM64X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup4KIND6ARM64XE>)

enumerator ARM64X

If [DynamicRelocation::symbol](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicRelocation_1a360750166d448652363ff73fb2e226d2>) is set to `IMAGE_DYNAMIC_RELOCATION_ARM64X`.

##### [` FUNCTION_OVERRIDE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup4KIND17FUNCTION_OVERRIDEE>)

enumerator FUNCTION\_OVERRIDE

If [DynamicRelocation::symbol](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicRelocation_1a360750166d448652363ff73fb2e226d2>) is set to `IMAGE_DYNAMIC_RELOCATION_FUNCTION_OVERRIDE`.

##### [` ARM64_KERNEL_IMPORT_CALL_TRANSFER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup4KIND33ARM64_KERNEL_IMPORT_CALL_TRANSFERE>)

enumerator ARM64\_KERNEL\_IMPORT\_CALL\_TRANSFER

If [DynamicRelocation::symbol](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicRelocation_1a360750166d448652363ff73fb2e226d2>) is set to `IMAGE_DYNAMIC_RELOCATION_ARM64_KERNEL_IMPORT_CALL_TRANSFER`.

##### [` GUARD_IMPORT_CONTROL_TRANSFER `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup4KIND29GUARD_IMPORT_CONTROL_TRANSFERE>)

enumerator GUARD\_IMPORT\_CONTROL\_TRANSFER

If [DynamicRelocation::symbol](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicRelocation_1a360750166d448652363ff73fb2e226d2>) is set to `IMAGE_DYNAMIC_RELOCATION_GUARD_IMPORT_CONTROL_TRANSFER`.

Public Functions

#### [` DynamicFixup `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup12DynamicFixupEv>)

DynamicFixup() = delete

#### [` DynamicFixup `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup12DynamicFixupE4KIND>)

inline DynamicFixup([KIND](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup4KINDE> "LIEF::PE::DynamicFixup::KIND") kind)

#### [` DynamicFixup `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup12DynamicFixupERK12DynamicFixup>)

DynamicFixup(const [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup12DynamicFixupERK12DynamicFixup> "LIEF::PE::DynamicFixup::DynamicFixup")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupaSERK12DynamicFixup>)

[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") &amp;operator=(const [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")&amp;) = default

#### [` DynamicFixup `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup12DynamicFixupERR12DynamicFixup>)

DynamicFixup([DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup12DynamicFixupERR12DynamicFixup> "LIEF::PE::DynamicFixup::DynamicFixup")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupaSERR12DynamicFixup>)

[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") &amp;operator=([DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12DynamicFixup5cloneEv>)

virtual std::unique\_ptr&lt;[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")&gt; clone() const = 0

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12DynamicFixup9to_stringEv>)

virtual std::string to\_string() const = 0

#### [` kind `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE12DynamicFixup4kindEv>)

inline [KIND](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixup4KINDE> "LIEF::PE::DynamicFixup::KIND") kind() const

Encoding of the fixups.

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE12DynamicFixup2asEP1Tv>)

template&lt;class T&gt;  
inline [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0EN4LIEF2PE12DynamicFixup2asEP1Tv> "LIEF::PE::DynamicFixup::as::T") \*as()

#### [` Tas `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE12DynamicFixup2asEPK1Tv>)

template&lt;class T&gt;  
inline const [T](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4I0ENK4LIEF2PE12DynamicFixup2asEPK1Tv> "LIEF::PE::DynamicFixup::as::T") \*as() const

#### [` ~DynamicFixup `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupD0Ev>)

virtual ~DynamicFixup() = default

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixuplsERNSt7ostreamERK12DynamicFixup>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") &amp;fixup)

## [DynamicFixupControlTransfer](<https://lief.re/doc/latest/formats/pe/cpp.html#dynamicfixupcontroltransfer>)

### [` DynamicFixupControlTransfer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransferE>)

class DynamicFixupControlTransfer : public LIEF::PE::[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")

This class wraps fixups associated with the (special) symbol value: `IMAGE_DYNAMIC_RELOCATION_GUARD_IMPORT_CONTROL_TRANSFER (3)`.

Public Types

#### [` reloc_entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer15reloc_entries_tE>)

using reloc\_entries\_t = std::vector&lt;[reloc\_entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer13reloc_entry_tE> "LIEF::PE::DynamicFixupControlTransfer::reloc_entry_t")&gt;

#### [` it_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer14it_relocationsE>)

using it\_relocations = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[reloc\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer15reloc_entries_tE> "LIEF::PE::DynamicFixupControlTransfer::reloc_entries_t")&amp;&gt;

#### [` it_const_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer20it_const_relocationsE>)

using it\_const\_relocations = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [reloc\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer15reloc_entries_tE> "LIEF::PE::DynamicFixupControlTransfer::reloc_entries_t")&amp;&gt;

Public Functions

#### [` DynamicFixupControlTransfer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer27DynamicFixupControlTransferEv>)

inline DynamicFixupControlTransfer()

#### [` DynamicFixupControlTransfer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer27DynamicFixupControlTransferERK27DynamicFixupControlTransfer>)

DynamicFixupControlTransfer(const [DynamicFixupControlTransfer](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer27DynamicFixupControlTransferERK27DynamicFixupControlTransfer> "LIEF::PE::DynamicFixupControlTransfer::DynamicFixupControlTransfer")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransferaSERK27DynamicFixupControlTransfer>)

[DynamicFixupControlTransfer](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransferE> "LIEF::PE::DynamicFixupControlTransfer") &amp;operator=(const [DynamicFixupControlTransfer](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransferE> "LIEF::PE::DynamicFixupControlTransfer")&amp;) = default

#### [` DynamicFixupControlTransfer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer27DynamicFixupControlTransferERR27DynamicFixupControlTransfer>)

DynamicFixupControlTransfer([DynamicFixupControlTransfer](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer27DynamicFixupControlTransferERR27DynamicFixupControlTransfer> "LIEF::PE::DynamicFixupControlTransfer::DynamicFixupControlTransfer")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransferaSERR27DynamicFixupControlTransfer>)

[DynamicFixupControlTransfer](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransferE> "LIEF::PE::DynamicFixupControlTransfer") &amp;operator=([DynamicFixupControlTransfer](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransferE> "LIEF::PE::DynamicFixupControlTransfer")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE27DynamicFixupControlTransfer5cloneEv>)

inline virtual std::unique\_ptr&lt;[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE27DynamicFixupControlTransfer9to_stringEv>)

virtual std::string to\_string() const override

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer11relocationsEv>)

inline [it\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer14it_relocationsE> "LIEF::PE::DynamicFixupControlTransfer::it_relocations") relocations()

Iterator over the relocations.

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE27DynamicFixupControlTransfer11relocationsEv>)

inline [it\_const\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer20it_const_relocationsE> "LIEF::PE::DynamicFixupControlTransfer::it_const_relocations") relocations() const

#### [` ~DynamicFixupControlTransfer `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransferD0Ev>)

~DynamicFixupControlTransfer() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer7classofEPK12DynamicFixup>)

static inline bool classof(const [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") \*fixup)

Public Static Attributes

#### [` NO_IAT_INDEX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer12NO_IAT_INDEXE>)

static auto NO\_IAT\_INDEX = 0x7fff

#### [` reloc_entry_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer13reloc_entry_tE>)

struct reloc\_entry\_t

Mirror `IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION`.

Public Functions

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE27DynamicFixupControlTransfer13reloc_entry_t9to_stringEv>)

std::string to\_string() const

Public Members

##### [` rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer13reloc_entry_t3rvaE>)

uint32\_t rva = 0

RVA to the call instruction.

##### [` is_call `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer13reloc_entry_t7is_callE>)

bool is\_call = false

True if target instruction is a `call`, false otherwise.

##### [` iat_index `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer13reloc_entry_t9iat_indexE>)

uint16\_t iat\_index = [NO\_IAT\_INDEX](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer12NO_IAT_INDEXE> "LIEF::PE::DynamicFixupControlTransfer::NO_IAT_INDEX")

IAT index of the corresponding import. `0x7FFF` is a special value indicating no index.

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer13reloc_entry_tlsERNSt7ostreamERK13reloc_entry_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [reloc\_entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE27DynamicFixupControlTransfer13reloc_entry_tE> "LIEF::PE::DynamicFixupControlTransfer::reloc_entry_t") &amp;entry)

## [DynamicFixupARM64Kernel](<https://lief.re/doc/latest/formats/pe/cpp.html#dynamicfixuparm64kernel>)

### [` DynamicFixupARM64Kernel `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64KernelE>)

class DynamicFixupARM64Kernel : public LIEF::PE::[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")

This class wraps fixups associated with the (special) symbol value: `IMAGE_DYNAMIC_RELOCATION_ARM64_KERNEL_IMPORT_CALL_TRANSFER (8)`.

Public Types

#### [` IMPORT_TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel11IMPORT_TYPEE>)

enum class IMPORT\_TYPE : uint8\_t

*Values:*

##### [` STATIC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel11IMPORT_TYPE6STATICE>)

enumerator STATIC = 0

##### [` DELAYED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel11IMPORT_TYPE7DELAYEDE>)

enumerator DELAYED = 1

#### [` reloc_entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel15reloc_entries_tE>)

using reloc\_entries\_t = std::vector&lt;[reloc\_entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel13reloc_entry_tE> "LIEF::PE::DynamicFixupARM64Kernel::reloc_entry_t")&gt;

#### [` it_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel14it_relocationsE>)

using it\_relocations = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[reloc\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel15reloc_entries_tE> "LIEF::PE::DynamicFixupARM64Kernel::reloc_entries_t")&amp;&gt;

#### [` it_const_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel20it_const_relocationsE>)

using it\_const\_relocations = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [reloc\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel15reloc_entries_tE> "LIEF::PE::DynamicFixupARM64Kernel::reloc_entries_t")&amp;&gt;

Public Functions

#### [` DynamicFixupARM64Kernel `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel23DynamicFixupARM64KernelEv>)

inline DynamicFixupARM64Kernel()

#### [` DynamicFixupARM64Kernel `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel23DynamicFixupARM64KernelERK23DynamicFixupARM64Kernel>)

DynamicFixupARM64Kernel(const [DynamicFixupARM64Kernel](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel23DynamicFixupARM64KernelERK23DynamicFixupARM64Kernel> "LIEF::PE::DynamicFixupARM64Kernel::DynamicFixupARM64Kernel")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64KernelaSERK23DynamicFixupARM64Kernel>)

[DynamicFixupARM64Kernel](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64KernelE> "LIEF::PE::DynamicFixupARM64Kernel") &amp;operator=(const [DynamicFixupARM64Kernel](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64KernelE> "LIEF::PE::DynamicFixupARM64Kernel")&amp;) = default

#### [` DynamicFixupARM64Kernel `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel23DynamicFixupARM64KernelERR23DynamicFixupARM64Kernel>)

DynamicFixupARM64Kernel([DynamicFixupARM64Kernel](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel23DynamicFixupARM64KernelERR23DynamicFixupARM64Kernel> "LIEF::PE::DynamicFixupARM64Kernel::DynamicFixupARM64Kernel")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64KernelaSERR23DynamicFixupARM64Kernel>)

[DynamicFixupARM64Kernel](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64KernelE> "LIEF::PE::DynamicFixupARM64Kernel") &amp;operator=([DynamicFixupARM64Kernel](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64KernelE> "LIEF::PE::DynamicFixupARM64Kernel")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE23DynamicFixupARM64Kernel5cloneEv>)

inline virtual std::unique\_ptr&lt;[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE23DynamicFixupARM64Kernel9to_stringEv>)

virtual std::string to\_string() const override

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel11relocationsEv>)

inline [it\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel14it_relocationsE> "LIEF::PE::DynamicFixupARM64Kernel::it_relocations") relocations()

Iterator over the relocations.

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE23DynamicFixupARM64Kernel11relocationsEv>)

inline [it\_const\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel20it_const_relocationsE> "LIEF::PE::DynamicFixupARM64Kernel::it_const_relocations") relocations() const

#### [` ~DynamicFixupARM64Kernel `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64KernelD0Ev>)

~DynamicFixupARM64Kernel() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel7classofEPK12DynamicFixup>)

static inline bool classof(const [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") \*fixup)

Public Static Attributes

#### [` NO_IAT_INDEX `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel12NO_IAT_INDEXE>)

static auto NO\_IAT\_INDEX = 0x7fff

#### [` reloc_entry_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel13reloc_entry_tE>)

struct reloc\_entry\_t

Mirror `IMAGE_IMPORT_CONTROL_TRANSFER_ARM64_RELOCATION`.

Public Functions

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE23DynamicFixupARM64Kernel13reloc_entry_t9to_stringEv>)

std::string to\_string() const

Public Members

##### [` rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel13reloc_entry_t3rvaE>)

uint32\_t rva = 0

RVA to the call instruction.

##### [` indirect_call `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel13reloc_entry_t13indirect_callE>)

bool indirect\_call = false

True if target instruction is a `blr`, false if it’s a `br`.

##### [` register_index `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel13reloc_entry_t14register_indexE>)

uint8\_t register\_index = 0

Register index used for the indirect call/jump. For instance, if the instruction is `br x3`, this index is set to `3`.

##### [` import_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel13reloc_entry_t11import_typeE>)

[IMPORT\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel11IMPORT_TYPEE> "LIEF::PE::DynamicFixupARM64Kernel::IMPORT_TYPE") import\_type = [IMPORT\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel11IMPORT_TYPEE> "LIEF::PE::DynamicFixupARM64Kernel::IMPORT_TYPE")::[STATIC](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel11IMPORT_TYPE6STATICE> "LIEF::PE::DynamicFixupARM64Kernel::IMPORT_TYPE::STATIC")

See [IMPORT\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicFixupARM64Kernel_1a872bd4d917e344cda9013e2dce63c26e>).

##### [` iat_index `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel13reloc_entry_t9iat_indexE>)

uint16\_t iat\_index = [NO\_IAT\_INDEX](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel12NO_IAT_INDEXE> "LIEF::PE::DynamicFixupARM64Kernel::NO_IAT_INDEX")

IAT index of the corresponding import. `0x7FFF` is a special value indicating no index.

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel13reloc_entry_tlsERNSt7ostreamERK13reloc_entry_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [reloc\_entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE23DynamicFixupARM64Kernel13reloc_entry_tE> "LIEF::PE::DynamicFixupARM64Kernel::reloc_entry_t") &amp;entry)

## [DynamicFixupARM64X](<https://lief.re/doc/latest/formats/pe/cpp.html#dynamicfixuparm64x>)

### [` DynamicFixupARM64X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64XE>)

class DynamicFixupARM64X : public LIEF::PE::[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")

This class represents `IMAGE_DYNAMIC_RELOCATION_ARM64X`.

Public Types

#### [` FIXUP_TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X10FIXUP_TYPEE>)

enum class FIXUP\_TYPE

*Values:*

##### [` ZEROFILL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X10FIXUP_TYPE8ZEROFILLE>)

enumerator ZEROFILL = 0

##### [` VALUE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X10FIXUP_TYPE5VALUEE>)

enumerator VALUE = 1

##### [` DELTA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X10FIXUP_TYPE5DELTAE>)

enumerator DELTA = 2

#### [` reloc_entries_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X15reloc_entries_tE>)

using reloc\_entries\_t = std::vector&lt;[reloc\_entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X13reloc_entry_tE> "LIEF::PE::DynamicFixupARM64X::reloc_entry_t")&gt;

#### [` it_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X14it_relocationsE>)

using it\_relocations = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[reloc\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X15reloc_entries_tE> "LIEF::PE::DynamicFixupARM64X::reloc_entries_t")&amp;&gt;

#### [` it_const_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X20it_const_relocationsE>)

using it\_const\_relocations = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [reloc\_entries\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X15reloc_entries_tE> "LIEF::PE::DynamicFixupARM64X::reloc_entries_t")&amp;&gt;

Public Functions

#### [` DynamicFixupARM64X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X18DynamicFixupARM64XEv>)

inline DynamicFixupARM64X()

#### [` DynamicFixupARM64X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X18DynamicFixupARM64XERK18DynamicFixupARM64X>)

DynamicFixupARM64X(const [DynamicFixupARM64X](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X18DynamicFixupARM64XERK18DynamicFixupARM64X> "LIEF::PE::DynamicFixupARM64X::DynamicFixupARM64X")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64XaSERK18DynamicFixupARM64X>)

[DynamicFixupARM64X](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64XE> "LIEF::PE::DynamicFixupARM64X") &amp;operator=(const [DynamicFixupARM64X](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64XE> "LIEF::PE::DynamicFixupARM64X")&amp;) = default

#### [` DynamicFixupARM64X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X18DynamicFixupARM64XERR18DynamicFixupARM64X>)

DynamicFixupARM64X([DynamicFixupARM64X](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X18DynamicFixupARM64XERR18DynamicFixupARM64X> "LIEF::PE::DynamicFixupARM64X::DynamicFixupARM64X")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64XaSERR18DynamicFixupARM64X>)

[DynamicFixupARM64X](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64XE> "LIEF::PE::DynamicFixupARM64X") &amp;operator=([DynamicFixupARM64X](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64XE> "LIEF::PE::DynamicFixupARM64X")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18DynamicFixupARM64X5cloneEv>)

inline virtual std::unique\_ptr&lt;[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18DynamicFixupARM64X9to_stringEv>)

virtual std::string to\_string() const override

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X11relocationsEv>)

inline [it\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X14it_relocationsE> "LIEF::PE::DynamicFixupARM64X::it_relocations") relocations()

Iterator over the different fixup entries.

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18DynamicFixupARM64X11relocationsEv>)

inline [it\_const\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X20it_const_relocationsE> "LIEF::PE::DynamicFixupARM64X::it_const_relocations") relocations() const

#### [` ~DynamicFixupARM64X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64XD0Ev>)

~DynamicFixupARM64X() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X7classofEPK12DynamicFixup>)

static inline bool classof(const [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") \*fixup)

#### [` reloc_entry_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X13reloc_entry_tE>)

struct reloc\_entry\_t

Public Functions

##### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE18DynamicFixupARM64X13reloc_entry_t9to_stringEv>)

std::string to\_string() const

Public Members

##### [` rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X13reloc_entry_t3rvaE>)

uint32\_t rva = 0

RVA where the fixup takes place.

##### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X13reloc_entry_t4typeE>)

[FIXUP\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X10FIXUP_TYPEE> "LIEF::PE::DynamicFixupARM64X::FIXUP_TYPE") type = [FIXUP\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X10FIXUP_TYPEE> "LIEF::PE::DynamicFixupARM64X::FIXUP_TYPE")::[ZEROFILL](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X10FIXUP_TYPE8ZEROFILLE> "LIEF::PE::DynamicFixupARM64X::FIXUP_TYPE::ZEROFILL")

Fixup’s kind.

##### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X13reloc_entry_t4sizeE>)

size\_t size = 0

Size of the value to patch.

##### [` bytes `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X13reloc_entry_t5bytesE>)

std::vector&lt;uint8\_t&gt; bytes

If the type is [FIXUP\_TYPE::VALUE](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicFixupARM64X_1a1df32fc44bb74e0375bda7cbe5a3149baecc2e9c313faddb07e7da223c1dc5c3f>), the bytes associated to the fixup entry.

##### [` value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X13reloc_entry_t5valueE>)

int64\_t value = 0

If the type is [FIXUP\_TYPE::DELTA](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1DynamicFixupARM64X_1a1df32fc44bb74e0375bda7cbe5a3149baa789408ec4ddae81bd2f72ad5ec6bf3b>), the (signed) value.

Friends

##### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X13reloc_entry_tlsERNSt7ostreamERK13reloc_entry_t>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [reloc\_entry\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE18DynamicFixupARM64X13reloc_entry_tE> "LIEF::PE::DynamicFixupARM64X::reloc_entry_t") &amp;entry)

## [DynamicFixupGeneric](<https://lief.re/doc/latest/formats/pe/cpp.html#dynamicfixupgeneric>)

### [` DynamicFixupGeneric `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGenericE>)

class DynamicFixupGeneric : public LIEF::PE::[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")

This class represents a generic entry where fixups are regular relocations ([LIEF::PE::Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Relocation>)).

Public Types

#### [` relocations_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric13relocations_tE>)

using relocations\_t = std::vector&lt;std::unique\_ptr&lt;[Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation")&gt;&gt;

#### [` it_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric14it_relocationsE>)

using it\_relocations = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric13relocations_tE> "LIEF::PE::DynamicFixupGeneric::relocations_t")&amp;, [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation")\*&gt;

#### [` it_const_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric20it_const_relocationsE>)

using it\_const\_relocations = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric13relocations_tE> "LIEF::PE::DynamicFixupGeneric::relocations_t")&amp;, [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation")\*&gt;

Public Functions

#### [` DynamicFixupGeneric `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric19DynamicFixupGenericEv>)

DynamicFixupGeneric()

#### [` DynamicFixupGeneric `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric19DynamicFixupGenericERK19DynamicFixupGeneric>)

DynamicFixupGeneric(const [DynamicFixupGeneric](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric19DynamicFixupGenericERK19DynamicFixupGeneric> "LIEF::PE::DynamicFixupGeneric::DynamicFixupGeneric")&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGenericaSERK19DynamicFixupGeneric>)

[DynamicFixupGeneric](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGenericE> "LIEF::PE::DynamicFixupGeneric") &amp;operator=(const [DynamicFixupGeneric](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGenericE> "LIEF::PE::DynamicFixupGeneric")&amp;)

#### [` DynamicFixupGeneric `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric19DynamicFixupGenericERR19DynamicFixupGeneric>)

DynamicFixupGeneric([DynamicFixupGeneric](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric19DynamicFixupGenericERR19DynamicFixupGeneric> "LIEF::PE::DynamicFixupGeneric::DynamicFixupGeneric")&amp;&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGenericaSERR19DynamicFixupGeneric>)

[DynamicFixupGeneric](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGenericE> "LIEF::PE::DynamicFixupGeneric") &amp;operator=([DynamicFixupGeneric](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGenericE> "LIEF::PE::DynamicFixupGeneric")&amp;&amp;)

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19DynamicFixupGeneric5cloneEv>)

inline virtual std::unique\_ptr&lt;[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")&gt; clone() const override

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric11relocationsEv>)

inline [it\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric14it_relocationsE> "LIEF::PE::DynamicFixupGeneric::it_relocations") relocations()

Iterator over the relocations.

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19DynamicFixupGeneric11relocationsEv>)

inline [it\_const\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric20it_const_relocationsE> "LIEF::PE::DynamicFixupGeneric::it_const_relocations") relocations() const

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19DynamicFixupGeneric9to_stringEv>)

virtual std::string to\_string() const override

#### [` ~DynamicFixupGeneric `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGenericD0Ev>)

~DynamicFixupGeneric() override

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupGeneric7classofEPK12DynamicFixup>)

static inline bool classof(const [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") \*fixup)

## [DynamicFixupUnknown](<https://lief.re/doc/latest/formats/pe/cpp.html#dynamicfixupunknown>)

### [` DynamicFixupUnknown `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknownE>)

class DynamicFixupUnknown : public LIEF::PE::[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")

This class represents a special dynamic relocation where the format of the fixups is not supported by LIEF.

Public Functions

#### [` DynamicFixupUnknown `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknown19DynamicFixupUnknownENSt6vectorI7uint8_tEE>)

inline DynamicFixupUnknown(std::vector&lt;uint8\_t&gt; payload)

#### [` DynamicFixupUnknown `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknown19DynamicFixupUnknownERK19DynamicFixupUnknown>)

DynamicFixupUnknown(const [DynamicFixupUnknown](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknown19DynamicFixupUnknownERK19DynamicFixupUnknown> "LIEF::PE::DynamicFixupUnknown::DynamicFixupUnknown")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknownaSERK19DynamicFixupUnknown>)

[DynamicFixupUnknown](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknownE> "LIEF::PE::DynamicFixupUnknown") &amp;operator=(const [DynamicFixupUnknown](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknownE> "LIEF::PE::DynamicFixupUnknown")&amp;) = default

#### [` DynamicFixupUnknown `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknown19DynamicFixupUnknownERR19DynamicFixupUnknown>)

DynamicFixupUnknown([DynamicFixupUnknown](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknown19DynamicFixupUnknownERR19DynamicFixupUnknown> "LIEF::PE::DynamicFixupUnknown::DynamicFixupUnknown")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknownaSERR19DynamicFixupUnknown>)

[DynamicFixupUnknown](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknownE> "LIEF::PE::DynamicFixupUnknown") &amp;operator=([DynamicFixupUnknown](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknownE> "LIEF::PE::DynamicFixupUnknown")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19DynamicFixupUnknown5cloneEv>)

inline virtual std::unique\_ptr&lt;[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")&gt; clone() const override

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19DynamicFixupUnknown9to_stringEv>)

inline virtual std::string to\_string() const override

#### [` payload `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE19DynamicFixupUnknown7payloadEv>)

inline span&lt;const uint8\_t&gt; payload() const

Raw fixups.

#### [` payload `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknown7payloadEv>)

inline span&lt;uint8\_t&gt; payload()

#### [` ~DynamicFixupUnknown `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknownD0Ev>)

~DynamicFixupUnknown() override = default

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE19DynamicFixupUnknown7classofEPK12DynamicFixup>)

static inline bool classof(const [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") \*fixup)

## [FunctionOverride](<https://lief.re/doc/latest/formats/pe/cpp.html#functionoverride>)

### [` FunctionOverride `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverrideE>)

class FunctionOverride : public LIEF::PE::[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")

This class represents `IMAGE_DYNAMIC_RELOCATION_FUNCTION_OVERRIDE`.

Public Types

#### [` func_overriding_info_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride22func_overriding_info_tE>)

using func\_overriding\_info\_t = std::vector&lt;std::unique\_ptr&lt;[FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo")&gt;&gt;

#### [` it_func_overriding_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride23it_func_overriding_infoE>)

using it\_func\_overriding\_info = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[func\_overriding\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride22func_overriding_info_tE> "LIEF::PE::FunctionOverride::func_overriding_info_t")&amp;, [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo")\*&gt;

#### [` it_const_func_overriding_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride29it_const_func_overriding_infoE>)

using it\_const\_func\_overriding\_info = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [func\_overriding\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride22func_overriding_info_tE> "LIEF::PE::FunctionOverride::func_overriding_info_t")&amp;, const [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo")\*&gt;

#### [` bdd_info_list_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride15bdd_info_list_tE>)

using bdd\_info\_list\_t = std::vector&lt;[image\_bdd\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_tE> "LIEF::PE::FunctionOverride::image_bdd_info_t")&gt;

#### [` it_bdd_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride11it_bdd_infoE>)

using it\_bdd\_info = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[bdd\_info\_list\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride15bdd_info_list_tE> "LIEF::PE::FunctionOverride::bdd_info_list_t")&amp;&gt;

#### [` it_const_bdd_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride17it_const_bdd_infoE>)

using it\_const\_bdd\_info = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [bdd\_info\_list\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride15bdd_info_list_tE> "LIEF::PE::FunctionOverride::bdd_info_list_t")&amp;&gt;

Public Functions

#### [` FunctionOverride `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16FunctionOverrideEv>)

FunctionOverride()

#### [` FunctionOverride `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16FunctionOverrideERK16FunctionOverride>)

FunctionOverride(const [FunctionOverride](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16FunctionOverrideERK16FunctionOverride> "LIEF::PE::FunctionOverride::FunctionOverride")&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverrideaSERK16FunctionOverride>)

[FunctionOverride](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverrideE> "LIEF::PE::FunctionOverride") &amp;operator=(const [FunctionOverride](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverrideE> "LIEF::PE::FunctionOverride")&amp;)

#### [` FunctionOverride `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16FunctionOverrideERR16FunctionOverride>)

FunctionOverride([FunctionOverride](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16FunctionOverrideERR16FunctionOverride> "LIEF::PE::FunctionOverride::FunctionOverride")&amp;&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverrideaSERR16FunctionOverride>)

[FunctionOverride](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverrideE> "LIEF::PE::FunctionOverride") &amp;operator=([FunctionOverride](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverrideE> "LIEF::PE::FunctionOverride")&amp;&amp;)

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16FunctionOverride5cloneEv>)

inline virtual std::unique\_ptr&lt;[DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup")&gt; clone() const override

#### [` func_overriding_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride20func_overriding_infoEv>)

inline [it\_func\_overriding\_info](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride23it_func_overriding_infoE> "LIEF::PE::FunctionOverride::it_func_overriding_info") func\_overriding\_info()

Iterator over the overriding info.

#### [` func_overriding_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16FunctionOverride20func_overriding_infoEv>)

inline [it\_const\_func\_overriding\_info](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride29it_const_func_overriding_infoE> "LIEF::PE::FunctionOverride::it_const_func_overriding_info") func\_overriding\_info() const

#### [` bdd_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride8bdd_infoEv>)

inline [it\_bdd\_info](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride11it_bdd_infoE> "LIEF::PE::FunctionOverride::it_bdd_info") bdd\_info()

Iterator over the BDD info.

#### [` bdd_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16FunctionOverride8bdd_infoEv>)

inline [it\_const\_bdd\_info](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride17it_const_bdd_infoE> "LIEF::PE::FunctionOverride::it_const_bdd_info") bdd\_info() const

#### [` find_bdd_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride13find_bdd_infoE8uint32_t>)

[image\_bdd\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_tE> "LIEF::PE::FunctionOverride::image_bdd_info_t") \*find\_bdd\_info(uint32\_t offset)

Find the `IMAGE_BDD_INFO` at the given offset.

#### [` find_bdd_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride13find_bdd_infoERK20FunctionOverrideInfo>)

[image\_bdd\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_tE> "LIEF::PE::FunctionOverride::image_bdd_info_t") \*find\_bdd\_info(const [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo") &amp;info)

Find the `IMAGE_BDD_INFO` associated with the given info.

#### [` find_bdd_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16FunctionOverride13find_bdd_infoE8uint32_t>)

inline const [image\_bdd\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_tE> "LIEF::PE::FunctionOverride::image_bdd_info_t") \*find\_bdd\_info(uint32\_t offset) const

#### [` find_bdd_info `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16FunctionOverride13find_bdd_infoERK20FunctionOverrideInfo>)

inline const [image\_bdd\_info\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_tE> "LIEF::PE::FunctionOverride::image_bdd_info_t") \*find\_bdd\_info(const [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo") &amp;info) const

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16FunctionOverride9to_stringEv>)

virtual std::string to\_string() const override

#### [` ~FunctionOverride `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverrideD0Ev>)

~FunctionOverride() override

Public Static Functions

#### [` classof `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride7classofEPK12DynamicFixup>)

static inline bool classof(const [DynamicFixup](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12DynamicFixupE> "LIEF::PE::DynamicFixup") \*fixup)

#### [` image_bdd_dynamic_relocation_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride30image_bdd_dynamic_relocation_tE>)

struct image\_bdd\_dynamic\_relocation\_t

Mirror `IMAGE_BDD_DYNAMIC_RELOCATION`.

Public Members

##### [` left `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride30image_bdd_dynamic_relocation_t4leftE>)

uint16\_t left = 0

##### [` right `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride30image_bdd_dynamic_relocation_t5rightE>)

uint16\_t right = 0

##### [` value `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride30image_bdd_dynamic_relocation_t5valueE>)

uint32\_t value = 0

#### [` image_bdd_info_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_tE>)

struct image\_bdd\_info\_t

Mirror `IMAGE_BDD_INFO`.

Public Members

##### [` version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_t7versionE>)

uint32\_t version = 0

##### [` original_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_t13original_sizeE>)

uint32\_t original\_size = 0

##### [` original_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_t15original_offsetE>)

uint32\_t original\_offset = 0

##### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_t11relocationsE>)

std::vector&lt;[image\_bdd\_dynamic\_relocation\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride30image_bdd_dynamic_relocation_tE> "LIEF::PE::FunctionOverride::image_bdd_dynamic_relocation_t")&gt; relocations

If version == 1.

##### [` payload `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16FunctionOverride16image_bdd_info_t7payloadE>)

std::vector&lt;uint8\_t&gt; payload

If version != 1.

## [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#functionoverrideinfo>)

### [` FunctionOverrideInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE>)

class FunctionOverrideInfo

Public Types

#### [` relocations_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo13relocations_tE>)

using relocations\_t = std::vector&lt;std::unique\_ptr&lt;[Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation")&gt;&gt;

#### [` it_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo14it_relocationsE>)

using it\_relocations = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo13relocations_tE> "LIEF::PE::FunctionOverrideInfo::relocations_t")&amp;, [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation")\*&gt;

#### [` it_const_relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo20it_const_relocationsE>)

using it\_const\_relocations = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [relocations\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo13relocations_tE> "LIEF::PE::FunctionOverrideInfo::relocations_t")&amp;, const [Relocation](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10RelocationE> "LIEF::PE::Relocation")\*&gt;

Public Functions

#### [` FunctionOverrideInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo20FunctionOverrideInfoEv>)

FunctionOverrideInfo() = default

#### [` FunctionOverrideInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo20FunctionOverrideInfoE8uint32_t8uint32_t8uint32_t>)

FunctionOverrideInfo(uint32\_t original\_rva, uint32\_t bdd\_offset, uint32\_t base\_reloc\_size)

#### [` FunctionOverrideInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo20FunctionOverrideInfoERK20FunctionOverrideInfo>)

FunctionOverrideInfo(const [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo20FunctionOverrideInfoERK20FunctionOverrideInfo> "LIEF::PE::FunctionOverrideInfo::FunctionOverrideInfo")&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoaSERK20FunctionOverrideInfo>)

[FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo") &amp;operator=(const [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo")&amp;)

#### [` FunctionOverrideInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo20FunctionOverrideInfoERR20FunctionOverrideInfo>)

FunctionOverrideInfo([FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo20FunctionOverrideInfoERR20FunctionOverrideInfo> "LIEF::PE::FunctionOverrideInfo::FunctionOverrideInfo")&amp;&amp;)

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoaSERR20FunctionOverrideInfo>)

[FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo") &amp;operator=([FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo")&amp;&amp;)

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20FunctionOverrideInfo9to_stringEv>)

std::string to\_string() const

#### [` original_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20FunctionOverrideInfo12original_rvaEv>)

inline uint32\_t original\_rva() const

RVA of the original function.

#### [` bdd_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20FunctionOverrideInfo10bdd_offsetEv>)

inline uint32\_t bdd\_offset() const

Offset into the BDD region.

#### [` rva_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20FunctionOverrideInfo8rva_sizeEv>)

inline uint32\_t rva\_size() const

Size in bytes taken by RVAs.

#### [` base_reloc_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20FunctionOverrideInfo15base_reloc_sizeEv>)

inline uint32\_t base\_reloc\_size() const

Size in bytes taken by BaseRelocs.

#### [` functions_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20FunctionOverrideInfo13functions_rvaEv>)

inline const std::vector&lt;uint32\_t&gt; &amp;functions\_rva() const

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo11relocationsEv>)

inline [it\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo14it_relocationsE> "LIEF::PE::FunctionOverrideInfo::it_relocations") relocations()

#### [` relocations `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20FunctionOverrideInfo11relocationsEv>)

inline [it\_const\_relocations](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo20it_const_relocationsE> "LIEF::PE::FunctionOverrideInfo::it_const_relocations") relocations() const

#### [` original_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo12original_rvaE8uint32_t>)

inline [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo") &amp;original\_rva(uint32\_t value)

#### [` bdd_offset `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo10bdd_offsetE8uint32_t>)

inline [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo") &amp;bdd\_offset(uint32\_t value)

#### [` base_reloc_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo15base_reloc_sizeE8uint32_t>)

inline [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo") &amp;base\_reloc\_size(uint32\_t value)

#### [` overriding_funcs `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfo16overriding_funcsENSt6vectorI8uint32_tEE>)

inline [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo") &amp;overriding\_funcs(std::vector&lt;uint32\_t&gt; funcs)

#### [` ~FunctionOverrideInfo `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoD0Ev>)

~FunctionOverrideInfo()

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfolsERNSt7ostreamERK20FunctionOverrideInfo>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [FunctionOverrideInfo](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20FunctionOverrideInfoE> "LIEF::PE::FunctionOverrideInfo") &amp;info)

---

## [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#enclaveconfiguration>)

### [` EnclaveConfiguration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE>)

class EnclaveConfiguration

This class represents the enclave configuration.

Public Types

#### [` id_array_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration10id_array_tE>)

using id\_array\_t = std::array&lt;uint8\_t, 16&gt;

#### [` imports_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration9imports_tE>)

using imports\_t = std::vector&lt;[EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport")&gt;

#### [` it_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration10it_importsE>)

using it\_imports = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[imports\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration9imports_tE> "LIEF::PE::EnclaveConfiguration::imports_t")&amp;&gt;

#### [` it_const_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration16it_const_importsE>)

using it\_const\_imports = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [imports\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration9imports_tE> "LIEF::PE::EnclaveConfiguration::imports_t")&amp;&gt;

Public Functions

#### [` EnclaveConfiguration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration20EnclaveConfigurationEv>)

EnclaveConfiguration() = default

#### [` EnclaveConfiguration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration20EnclaveConfigurationERK20EnclaveConfiguration>)

EnclaveConfiguration(const [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration20EnclaveConfigurationERK20EnclaveConfiguration> "LIEF::PE::EnclaveConfiguration::EnclaveConfiguration")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationaSERK20EnclaveConfiguration>)

[EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;operator=(const [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration")&amp;) = default

#### [` EnclaveConfiguration `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration20EnclaveConfigurationERR20EnclaveConfiguration>)

EnclaveConfiguration([EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration20EnclaveConfigurationERR20EnclaveConfiguration> "LIEF::PE::EnclaveConfiguration::EnclaveConfiguration")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationaSERR20EnclaveConfiguration>)

[EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;operator=([EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration5cloneEv>)

inline std::unique\_ptr&lt;[EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration")&gt; clone() const

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration4sizeEv>)

inline uint32\_t size() const

The size of the `IMAGE_ENCLAVE_CONFIG64/IMAGE_ENCLAVE_CONFIG32` structure, in bytes.

#### [` min_required_config_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration24min_required_config_sizeEv>)

inline uint32\_t min\_required\_config\_size() const

The minimum size of the `IMAGE_ENCLAVE_CONFIG(32,64)` structure that the image loader must be able to process in order for the enclave to be usable.

This member allows an enclave to inform an earlier version of the image loader that the image loader can safely load the enclave and ignore optional members added to `IMAGE_ENCLAVE_CONFIG(32,64)` for later versions of the enclave. If the size of `IMAGE_ENCLAVE_CONFIG(32,64)` that the image loader can process is less than `MinimumRequiredConfigSize`, the enclave cannot be run securely.

If `MinimumRequiredConfigSize` is zero, the minimum size of the `IMAGE_ENCLAVE_CONFIG(32,64)` structure that the image loader must be able to process in order for the enclave to be usable is assumed to be the size of the structure through and including the `MinimumRequiredConfigSize` member.

#### [` policy_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration12policy_flagsEv>)

inline uint32\_t policy\_flags() const

A flag that indicates whether the enclave permits debugging.

#### [` is_debuggable `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration13is_debuggableEv>)

inline bool is\_debuggable() const

Whether this enclave can be debugged.

#### [` import_list_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration15import_list_rvaEv>)

inline uint32\_t import\_list\_rva() const

The RVA of the array of images that the enclave image may import, with identity information for each image.

#### [` import_entry_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration17import_entry_sizeEv>)

inline uint32\_t import\_entry\_size() const

The size of each image in the array of images that the [import\_list\_rva()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1EnclaveConfiguration_1a3d9d1c7eb52322567295a540774f881d>) member points to.

#### [` nb_imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration10nb_importsEv>)

inline size\_t nb\_imports() const

The number of images in the array of images that the [import\_list\_rva()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1EnclaveConfiguration_1a3d9d1c7eb52322567295a540774f881d>) member points to.

#### [` imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration7importsEv>)

inline [it\_imports](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration10it_importsE> "LIEF::PE::EnclaveConfiguration::it_imports") imports()

Return an iterator over the enclave’s imports.

#### [` imports `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration7importsEv>)

inline [it\_const\_imports](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration16it_const_importsE> "LIEF::PE::EnclaveConfiguration::it_const_imports") imports() const

#### [` family_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration9family_idEv>)

inline const [id\_array\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration10id_array_tE> "LIEF::PE::EnclaveConfiguration::id_array_t") &amp;family\_id() const

The family identifier that the author of the enclave assigned to the enclave.

#### [` image_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration8image_idEv>)

inline const [id\_array\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration10id_array_tE> "LIEF::PE::EnclaveConfiguration::id_array_t") &amp;image\_id() const

The image identifier that the author of the enclave assigned to the enclave.

#### [` image_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration13image_versionEv>)

inline uint32\_t image\_version() const

The version number that the author of the enclave assigned to the enclave.

#### [` security_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration16security_versionEv>)

inline uint32\_t security\_version() const

The security version number that the author of the enclave assigned to the enclave.

#### [` enclave_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration12enclave_sizeEv>)

inline uint64\_t enclave\_size() const

The expected virtual size of the private address range for the enclave, in bytes.

#### [` nb_threads `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration10nb_threadsEv>)

inline uint32\_t nb\_threads() const

The maximum number of threads that can be created within the enclave.

#### [` enclave_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration13enclave_flagsEv>)

inline uint32\_t enclave\_flags() const

A flag that indicates whether the image is suitable for use as the primary image in the enclave.

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration4sizeE8uint32_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;size(uint32\_t value)

#### [` min_required_config_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration24min_required_config_sizeE8uint32_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;min\_required\_config\_size(uint32\_t value)

#### [` policy_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration12policy_flagsE8uint32_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;policy\_flags(uint32\_t value)

#### [` import_list_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration15import_list_rvaE8uint32_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;import\_list\_rva(uint32\_t value)

#### [` import_entry_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration17import_entry_sizeE8uint32_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;import\_entry\_size(uint32\_t value)

#### [` family_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration9family_idERK10id_array_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;family\_id(const [id\_array\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration10id_array_tE> "LIEF::PE::EnclaveConfiguration::id_array_t") &amp;value)

#### [` image_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration8image_idERK10id_array_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;image\_id(const [id\_array\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration10id_array_tE> "LIEF::PE::EnclaveConfiguration::id_array_t") &amp;value)

#### [` image_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration13image_versionE8uint32_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;image\_version(uint32\_t value)

#### [` security_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration16security_versionE8uint32_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;security\_version(uint32\_t value)

#### [` enclave_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration12enclave_sizeE8uint64_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;enclave\_size(uint64\_t value)

#### [` nb_threads `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration10nb_threadsE8uint32_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;nb\_threads(uint32\_t value)

#### [` enclave_flags `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration13enclave_flagsE8uint32_t>)

inline [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;enclave\_flags(uint32\_t value)

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE20EnclaveConfiguration9to_stringEv>)

std::string to\_string() const

Public Static Attributes

#### [` MIN_SIZE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration8MIN_SIZEE>)

static auto MIN\_SIZE = 0x4C

#### [` POLICY_DEBUGGABLE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration17POLICY_DEBUGGABLEE>)

static auto POLICY\_DEBUGGABLE = 0x00000001

#### [` POLICY_STRICT_MEMORY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfiguration20POLICY_STRICT_MEMORYE>)

static auto POLICY\_STRICT\_MEMORY = 0x00000002

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationlsERNSt7ostreamERK20EnclaveConfiguration>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [EnclaveConfiguration](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE20EnclaveConfigurationE> "LIEF::PE::EnclaveConfiguration") &amp;meta)

---

## [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#enclaveimport>)

### [` EnclaveImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE>)

class EnclaveImport

Defines an entry in the array of images that an enclave can import.

Public Types

#### [` TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport4TYPEE>)

enum class TYPE : uint32\_t

*Values:*

##### [` NONE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport4TYPE4NONEE>)

enumerator NONE = 0x00000000

None of the identifiers of the image need to match the value in the import record.

##### [` UNIQUE_ID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport4TYPE9UNIQUE_IDE>)

enumerator UNIQUE\_ID = 0x00000001

The value of the enclave unique identifier of the image must match the value in the import record. Otherwise, loading of the image fails.

##### [` AUTHOR_ID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport4TYPE9AUTHOR_IDE>)

enumerator AUTHOR\_ID = 0x00000002

The value of the enclave author identifier of the image must match the value in the import record. Otherwise, loading of the image fails. If this flag is set and the import record indicates an author identifier of all zeros, the imported image must be part of the Windows installation.

##### [` FAMILY_ID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport4TYPE9FAMILY_IDE>)

enumerator FAMILY\_ID = 0x00000003

The value of the enclave family identifier of the image must match the value in the import record. Otherwise, loading of the image fails.

##### [` IMAGE_ID `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport4TYPE8IMAGE_IDE>)

enumerator IMAGE\_ID = 0x00000004

The value of the enclave image identifier of the image must match the value in the import record. Otherwise, loading of the image fails.

#### [` short_id_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport10short_id_tE>)

using short\_id\_t = std::array&lt;uint8\_t, 16&gt;

#### [` long_id_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport9long_id_tE>)

using long\_id\_t = std::array&lt;uint8\_t, 32&gt;

Public Functions

#### [` EnclaveImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport13EnclaveImportEv>)

EnclaveImport() = default

#### [` EnclaveImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport13EnclaveImportERK13EnclaveImport>)

EnclaveImport(const [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport13EnclaveImportERK13EnclaveImport> "LIEF::PE::EnclaveImport::EnclaveImport")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportaSERK13EnclaveImport>)

[EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;operator=(const [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport")&amp;) = default

#### [` EnclaveImport `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport13EnclaveImportERR13EnclaveImport>)

EnclaveImport([EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport13EnclaveImportERR13EnclaveImport> "LIEF::PE::EnclaveImport::EnclaveImport")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportaSERR13EnclaveImport>)

[EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;operator=([EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport")&amp;&amp;) = default

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13EnclaveImport4typeEv>)

inline [TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport4TYPEE> "LIEF::PE::EnclaveImport::TYPE") type() const

The type of identifier of the image that must match the value in the import record.

#### [` min_security_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13EnclaveImport20min_security_versionEv>)

inline uint32\_t min\_security\_version() const

The minimum enclave security version that each image must have for the image to be imported successfully. The image is rejected unless its enclave security version is equal to or greater than the minimum value in the import record. Set the value in the import record to zero to turn off the security version check.

#### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13EnclaveImport2idEv>)

inline const [long\_id\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport9long_id_tE> "LIEF::PE::EnclaveImport::long_id_t") &amp;id() const

The unique identifier of the primary module for the enclave, if the [type()](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1EnclaveImport_1a330cc9d45e32d7c5019c0a8992411824>) is [TYPE::UNIQUE\_ID](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1EnclaveImport_1ae7d0c6b77d2db05d5e4afb2b6b7c131ca75168a218fd183f268941d29e0de3386>). Otherwise, the author identifier of the primary module for the enclave.

#### [` family_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13EnclaveImport9family_idEv>)

inline const [short\_id\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport10short_id_tE> "LIEF::PE::EnclaveImport::short_id_t") &amp;family\_id() const

The family identifier of the primary module for the enclave.

#### [` image_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13EnclaveImport8image_idEv>)

inline const [short\_id\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport10short_id_tE> "LIEF::PE::EnclaveImport::short_id_t") &amp;image\_id() const

The image identifier of the primary module for the enclave.

#### [` import_name_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13EnclaveImport15import_name_rvaEv>)

inline uint32\_t import\_name\_rva() const

The relative virtual address of a NULL-terminated string that contains the same value found in the import directory for the image.

#### [` import_name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13EnclaveImport11import_nameEv>)

inline std::string\_view import\_name() const

Resolved import name.

#### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13EnclaveImport8reservedEv>)

inline uint32\_t reserved() const

Reserved. Should be 0.

#### [` type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport4typeE4TYPE>)

inline [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;type([TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport4TYPEE> "LIEF::PE::EnclaveImport::TYPE") ty)

#### [` min_security_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport20min_security_versionE8uint32_t>)

inline [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;min\_security\_version(uint32\_t value)

#### [` id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport2idERK9long_id_t>)

inline [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;id(const [long\_id\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport9long_id_tE> "LIEF::PE::EnclaveImport::long_id_t") &amp;value)

#### [` family_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport9family_idERK10short_id_t>)

inline [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;family\_id(const [short\_id\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport10short_id_tE> "LIEF::PE::EnclaveImport::short_id_t") &amp;value)

#### [` image_id `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport8image_idERK10short_id_t>)

inline [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;image\_id(const [short\_id\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport10short_id_tE> "LIEF::PE::EnclaveImport::short_id_t") &amp;value)

#### [` import_name_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport15import_name_rvaE8uint32_t>)

inline [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;import\_name\_rva(uint32\_t value)

#### [` reserved `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport8reservedE8uint32_t>)

inline [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;reserved(uint32\_t value)

#### [` import_name `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImport11import_nameENSt6stringE>)

inline [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;import\_name(std::string name)

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE13EnclaveImport9to_stringEv>)

std::string to\_string() const

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportlsERNSt7ostreamERK13EnclaveImport>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [EnclaveImport](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13EnclaveImportE> "LIEF::PE::EnclaveImport") &amp;meta)

---

## [Volatile Metadata](<https://lief.re/doc/latest/formats/pe/cpp.html#volatile-metadata>)

### [` VolatileMetadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE>)

class VolatileMetadata

This class represents volatile metadata which can be enabled at link time with `/volatileMetadata`.

This metadata aims to improve performances when running x64 code on ARM64.

Public Types

#### [` access_table_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata14access_table_tE>)

using access\_table\_t = std::vector&lt;uint32\_t&gt;

#### [` info_ranges_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata13info_ranges_tE>)

using info\_ranges\_t = std::vector&lt;[range\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata7range_tE> "LIEF::PE::VolatileMetadata::range_t")&gt;

#### [` it_info_ranges_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata16it_info_ranges_tE>)

using it\_info\_ranges\_t = [ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF12ref_iteratorE> "LIEF::ref_iterator")&lt;[info\_ranges\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata13info_ranges_tE> "LIEF::PE::VolatileMetadata::info_ranges_t")&amp;&gt;

#### [` it_const_info_ranges_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata22it_const_info_ranges_tE>)

using it\_const\_info\_ranges\_t = [const\_ref\_iterator](<https://lief.re/doc/latest/api/cpp/index.html#_CPPv4I000EN4LIEF18const_ref_iteratorE> "LIEF::const_ref_iterator")&lt;const [info\_ranges\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata13info_ranges_tE> "LIEF::PE::VolatileMetadata::info_ranges_t")&amp;&gt;

Public Functions

#### [` VolatileMetadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata16VolatileMetadataEv>)

VolatileMetadata() = default

#### [` VolatileMetadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata16VolatileMetadataERK16VolatileMetadata>)

VolatileMetadata(const [VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata16VolatileMetadataERK16VolatileMetadata> "LIEF::PE::VolatileMetadata::VolatileMetadata")&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataaSERK16VolatileMetadata>)

[VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata") &amp;operator=(const [VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata")&amp;) = default

#### [` VolatileMetadata `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata16VolatileMetadataERR16VolatileMetadata>)

VolatileMetadata([VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata16VolatileMetadataERR16VolatileMetadata> "LIEF::PE::VolatileMetadata::VolatileMetadata")&amp;&amp;) = default

#### [` operator= `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataaSERR16VolatileMetadata>)

[VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata") &amp;operator=([VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata")&amp;&amp;) = default

#### [` clone `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata5cloneEv>)

inline std::unique\_ptr&lt;[VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata")&gt; clone() const

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata4sizeEv>)

inline uint32\_t size() const

Size (in bytes) of the current raw structure.

#### [` min_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata11min_versionEv>)

inline uint16\_t min\_version() const

#### [` max_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata11max_versionEv>)

inline uint16\_t max\_version() const

#### [` access_table_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata16access_table_rvaEv>)

inline uint32\_t access\_table\_rva() const

#### [` access_table `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata12access_tableEv>)

inline const [access\_table\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata14access_table_tE> "LIEF::PE::VolatileMetadata::access_table_t") &amp;access\_table() const

#### [` access_table_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata17access_table_sizeEv>)

inline uint32\_t access\_table\_size() const

#### [` info_range_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata14info_range_rvaEv>)

inline uint32\_t info\_range\_rva() const

#### [` info_ranges_size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata16info_ranges_sizeEv>)

inline uint32\_t info\_ranges\_size() const

#### [` info_ranges `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata11info_rangesEv>)

inline [it\_const\_info\_ranges\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata22it_const_info_ranges_tE> "LIEF::PE::VolatileMetadata::it_const_info_ranges_t") info\_ranges() const

#### [` info_ranges `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata11info_rangesEv>)

inline [it\_info\_ranges\_t](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata16it_info_ranges_tE> "LIEF::PE::VolatileMetadata::it_info_ranges_t") info\_ranges()

#### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata4sizeE8uint32_t>)

inline [VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata") &amp;size(uint32\_t value)

#### [` min_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata11min_versionE8uint16_t>)

inline [VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata") &amp;min\_version(uint16\_t min)

#### [` max_version `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata11max_versionE8uint16_t>)

inline [VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata") &amp;max\_version(uint16\_t max)

#### [` access_table_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata16access_table_rvaE8uint32_t>)

inline [VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata") &amp;access\_table\_rva(uint32\_t value)

#### [` info_range_rva `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata14info_range_rvaE8uint32_t>)

inline [VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata") &amp;info\_range\_rva(uint32\_t value)

#### [` to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata9to_stringEv>)

std::string to\_string() const

Friends

#### [` operator<< `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadatalsERNSt7ostreamERK16VolatileMetadata>)

inline friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const [VolatileMetadata](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadataE> "LIEF::PE::VolatileMetadata") &amp;meta)

#### [` range_t `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata7range_tE>)

struct range\_t

Public Functions

##### [` end `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4NK4LIEF2PE16VolatileMetadata7range_t3endEv>)

inline uint32\_t end() const

Public Members

##### [` start `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata7range_t5startE>)

uint32\_t start = 0

##### [` size `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16VolatileMetadata7range_t4sizeE>)

uint32\_t size = 0

---

## [Utilities](<https://lief.re/doc/latest/formats/pe/cpp.html#utilities>)

### [` LIEF::PE::check_layout `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12check_layoutERK6BinaryPNSt6stringE>)

bool LIEF::PE::check\_layout(const [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary") &amp;bin, std::string \*error\_info = nullptr)

Check that the layout of the given [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Binary>) is correct from the Windows loader perspective.

### [` LIEF::PE::get_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8get_typeENSt11string_viewE>)

[result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE")&gt; LIEF::PE::get\_type(std::string\_view file)

if the input `file` is a PE one, return `PE32` or `PE32+`

### [` LIEF::PE::get_type `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE8get_typeERKNSt6vectorI7uint8_tEE>)

[result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[PE\_TYPE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE> "LIEF::PE::PE_TYPE")&gt; LIEF::PE::get\_type(const std::vector&lt;uint8\_t&gt; &amp;raw)

Return `PE32` or `PE32+`.

### [` LIEF::PE::is_pe `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5is_peENSt11string_viewE>)

bool LIEF::PE::is\_pe(std::string\_view file)

check if the `file` is a PE file

### [` LIEF::PE::is_pe `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE5is_peERKNSt6vectorI7uint8_tEE>)

bool LIEF::PE::is\_pe(const std::vector&lt;uint8\_t&gt; &amp;raw)

check if the raw data is a PE file

### [` LIEF::PE::get_imphash `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE11get_imphashERK6Binary12IMPHASH_MODE>)

std::string LIEF::PE::get\_imphash(const [Binary](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6BinaryE> "LIEF::PE::Binary") &amp;binary, [IMPHASH\_MODE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODEE> "LIEF::PE::IMPHASH_MODE") mode = [IMPHASH\_MODE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODEE> "LIEF::PE::IMPHASH_MODE")::[DEFAULT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODE7DEFAULTE> "LIEF::PE::IMPHASH_MODE::DEFAULT"))

Compute the hash of imported functions.

By default, it generates a hash with the following properties:

- Order agnostic
- Case agnostic
- Ordinal (**in some extent**) agnostic

If one needs the same output as Virus Total (i.e. pefile), you can pass [IMPHASH\_MODE::PEFILE](<https://lief.re/doc/latest/formats/pe/cpp.html#namespaceLIEF_1_1PE_1ad689456500a7ad0248d56b60c91e9baea778b5d1055dee54a7e6d05513ee7f360>) as second parameter.

> **See also**
> 
> [https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html](<https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html>)

> **Warning**
> 
> The default algorithm used to compute the *imphash* value has some variations compared to Yara, pefile, VT implementation

### [` LIEF::PE::IMPHASH_MODE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODEE>)

enum class [LIEF](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODE4LIEFE> "LIEF::PE::IMPHASH_MODE::LIEF")::PE::IMPHASH\_MODE

Enum to define the behavior of [LIEF::PE::get\_imphash](<https://lief.re/doc/latest/formats/pe/cpp.html#namespaceLIEF_1_1PE_1a636c5b43f73c2ef92c57c7543aed00f5>).

*Values:*

#### [` DEFAULT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODE7DEFAULTE>)

enumerator DEFAULT = 0

Default implementation.

#### [` LIEF `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODE4LIEFE>)

enumerator LIEF = [DEFAULT](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODE7DEFAULTE> "LIEF::PE::IMPHASH_MODE::DEFAULT")

Same as [IMPHASH\_MODE::DEFAULT](<https://lief.re/doc/latest/formats/pe/cpp.html#namespaceLIEF_1_1PE_1ad689456500a7ad0248d56b60c91e9baea5b39c8b553c821e7cddc6da64b5bd2ee>).

#### [` PEFILE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODE6PEFILEE>)

enumerator PEFILE

Use pefile algorithm.

#### [` VT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODE2VTE>)

enumerator VT = [PEFILE](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE12IMPHASH_MODE6PEFILEE> "LIEF::PE::IMPHASH_MODE::PEFILE")

Same as [IMPHASH\_MODE::PEFILE](<https://lief.re/doc/latest/formats/pe/cpp.html#namespaceLIEF_1_1PE_1ad689456500a7ad0248d56b60c91e9baea778b5d1055dee54a7e6d05513ee7f360>) since Virus Total is using pefile.

### [` LIEF::PE::resolve_ordinals `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE16resolve_ordinalsERK6Importbb>)

[result](<https://lief.re/doc/latest/api/error_handling/index.html#_CPPv4I0EN4LIEF6resultE> "LIEF::result")&lt;[Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import")&gt; LIEF::PE::resolve\_ordinals(const [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE6ImportE> "LIEF::PE::Import") &amp;import, bool strict = false, bool use\_std = false)

Take a [PE::Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>) as entry and try to resolve imports by ordinal.

The `strict` boolean parameter enables to throw an LIEF::not\_found exception if the ordinal can’t be resolved. Otherwise, it skips the entry.

**Parameters:**

- **import** – **[in]** [Import](<https://lief.re/doc/latest/formats/pe/cpp.html#classLIEF_1_1PE_1_1Import>) to resolve
- **strict** – **[in]** If set to `true`, throw an exception if the import can’t be resolved
- **use\_std** – **[in]** If `true`, it will use the [pefile](<https://github.com/erocarrera/pefile/tree/09264be6f731bf8578aee8638cc4046154e03abf/ordlookup>) look-up table for resolving imports

**Returns:**

The PE::import resolved with [PE::ImportEntry::name](<https://lief.re/doc/latest/api/binary_abstraction/cpp.html#classLIEF_1_1Symbol_1a9ebe8d24f1ba703e491c276944d7f443>) set

### [` LIEF::PE::oid_to_string `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE13oid_to_stringERK5oid_t>)

const char \*LIEF::PE::oid\_to\_string(const oid\_t &amp;oid)

Convert an OID to a human-readable string.

---

## [Enums](<https://lief.re/doc/latest/formats/pe/cpp.html#enums>)

### [` LIEF::PE::PE_TYPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPEE>)

enum class LIEF::PE::PE\_TYPE : uint16\_t

*Values:*

#### [` PE32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPE4PE32E>)

enumerator PE32 = 0x10b

32bits

#### [` PE32_PLUS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE7PE_TYPE9PE32_PLUSE>)

enumerator PE32\_PLUS = 0x20b

64 bits

### [` LIEF::PE::CODE_PAGES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGESE>)

enum class LIEF::PE::CODE\_PAGES : uint32\_t

Code page from [https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers](<https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers>).

*Values:*

#### [` IBM037 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM037E>)

enumerator IBM037 = 37

IBM EBCDIC US-Canada

#### [` IBM437 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM437E>)

enumerator IBM437 = 437

OEM United States

#### [` IBM500 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM500E>)

enumerator IBM500 = 500

IBM EBCDIC International

#### [` ASMO_708 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8ASMO_708E>)

enumerator ASMO\_708 = 708

Arabic (ASMO 708)

#### [` DOS_720 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES7DOS_720E>)

enumerator DOS\_720 = 720

Arabic (Transparent ASMO); Arabic (DOS)

#### [` IBM737 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM737E>)

enumerator IBM737 = 737

OEM Greek (formerly 437G); Greek (DOS)

#### [` IBM775 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM775E>)

enumerator IBM775 = 775

OEM Baltic; Baltic (DOS)

#### [` IBM850 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM850E>)

enumerator IBM850 = 850

OEM Multilingual Latin 1; Western European (DOS)

#### [` IBM852 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM852E>)

enumerator IBM852 = 852

OEM Latin 2; Central European (DOS)

#### [` IBM855 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM855E>)

enumerator IBM855 = 855

OEM Cyrillic (primarily Russian)

#### [` IBM857 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM857E>)

enumerator IBM857 = 857

OEM Turkish; Turkish (DOS)

#### [` IBM00858 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM00858E>)

enumerator IBM00858 = 858

OEM Multilingual Latin 1 + Euro symbol

#### [` IBM860 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM860E>)

enumerator IBM860 = 860

OEM Portuguese; Portuguese (DOS)

#### [` IBM861 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM861E>)

enumerator IBM861 = 861

OEM Icelandic; Icelandic (DOS)

#### [` DOS_862 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES7DOS_862E>)

enumerator DOS\_862 = 862

OEM Hebrew; Hebrew (DOS)

#### [` IBM863 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM863E>)

enumerator IBM863 = 863

OEM French Canadian; French Canadian (DOS)

#### [` IBM864 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM864E>)

enumerator IBM864 = 864

OEM Arabic; Arabic (864)

#### [` IBM865 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM865E>)

enumerator IBM865 = 865

OEM Nordic; Nordic (DOS)

#### [` CP866 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES5CP866E>)

enumerator CP866 = 866

OEM Russian; Cyrillic (DOS)

#### [` IBM869 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM869E>)

enumerator IBM869 = 869

OEM Modern Greek; Greek, Modern (DOS)

#### [` IBM870 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM870E>)

enumerator IBM870 = 870

IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2

#### [` WINDOWS_874 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES11WINDOWS_874E>)

enumerator WINDOWS\_874 = 874

ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows)

#### [` CP875 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES5CP875E>)

enumerator CP875 = 875

IBM EBCDIC Greek Modern

#### [` SHIFT_JIS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9SHIFT_JISE>)

enumerator SHIFT\_JIS = 932

ANSI/OEM Japanese; Japanese (Shift-JIS)

#### [` GB2312 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6GB2312E>)

enumerator GB2312 = 936

ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312)

#### [` KS_C_5601_1987 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES14KS_C_5601_1987E>)

enumerator KS\_C\_5601\_1987 = 949

ANSI/OEM Korean (Unified Hangul Code)

#### [` BIG5 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES4BIG5E>)

enumerator BIG5 = 950

ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5)

#### [` IBM1026 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES7IBM1026E>)

enumerator IBM1026 = 1026

IBM EBCDIC Turkish (Latin 5)

#### [` IBM01047 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01047E>)

enumerator IBM01047 = 1047

IBM EBCDIC Latin 1/Open System

#### [` IBM01140 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01140E>)

enumerator IBM01140 = 1140

IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro)

#### [` IBM01141 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01141E>)

enumerator IBM01141 = 1141

IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro)

#### [` IBM01142 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01142E>)

enumerator IBM01142 = 1142

IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro)

#### [` IBM01143 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01143E>)

enumerator IBM01143 = 1143

IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro)

#### [` IBM01144 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01144E>)

enumerator IBM01144 = 1144

IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro)

#### [` IBM01145 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01145E>)

enumerator IBM01145 = 1145

IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro)

#### [` IBM01146 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01146E>)

enumerator IBM01146 = 1146

IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro)

#### [` IBM01147 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01147E>)

enumerator IBM01147 = 1147

IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro)

#### [` IBM01148 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01148E>)

enumerator IBM01148 = 1148

IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro)

#### [` IBM01149 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM01149E>)

enumerator IBM01149 = 1149

IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro)

#### [` UTF_16 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6UTF_16E>)

enumerator UTF\_16 = 1200

Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications

#### [` UNICODEFFFE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES11UNICODEFFFEE>)

enumerator UNICODEFFFE = 1201

Unicode UTF-16, big endian byte order; available only to managed applications

#### [` WINDOWS_1250 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12WINDOWS_1250E>)

enumerator WINDOWS\_1250 = 1250

ANSI Central European; Central European (Windows)

#### [` WINDOWS_1251 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12WINDOWS_1251E>)

enumerator WINDOWS\_1251 = 1251

ANSI Cyrillic; Cyrillic (Windows)

#### [` WINDOWS_1252 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12WINDOWS_1252E>)

enumerator WINDOWS\_1252 = 1252

ANSI Latin 1; Western European (Windows)

#### [` WINDOWS_1253 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12WINDOWS_1253E>)

enumerator WINDOWS\_1253 = 1253

ANSI Greek; Greek (Windows)

#### [` WINDOWS_1254 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12WINDOWS_1254E>)

enumerator WINDOWS\_1254 = 1254

ANSI Turkish; Turkish (Windows)

#### [` WINDOWS_1255 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12WINDOWS_1255E>)

enumerator WINDOWS\_1255 = 1255

ANSI Hebrew; Hebrew (Windows)

#### [` WINDOWS_1256 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12WINDOWS_1256E>)

enumerator WINDOWS\_1256 = 1256

ANSI Arabic; Arabic (Windows)

#### [` WINDOWS_1257 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12WINDOWS_1257E>)

enumerator WINDOWS\_1257 = 1257

ANSI Baltic; Baltic (Windows)

#### [` WINDOWS_1258 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12WINDOWS_1258E>)

enumerator WINDOWS\_1258 = 1258

ANSI/OEM Vietnamese; Vietnamese (Windows)

#### [` JOHAB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES5JOHABE>)

enumerator JOHAB = 1361

Korean (Johab)

#### [` MACINTOSH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9MACINTOSHE>)

enumerator MACINTOSH = 10000

MAC Roman; Western European (Mac)

#### [` X_MAC_JAPANESE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES14X_MAC_JAPANESEE>)

enumerator X\_MAC\_JAPANESE = 10001

Japanese (Mac)

#### [` X_MAC_CHINESETRAD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES17X_MAC_CHINESETRADE>)

enumerator X\_MAC\_CHINESETRAD = 10002

MAC Traditional Chinese (Big5); Chinese Traditional (Mac)

#### [` X_MAC_KOREAN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12X_MAC_KOREANE>)

enumerator X\_MAC\_KOREAN = 10003

Korean (Mac)

#### [` X_MAC_ARABIC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12X_MAC_ARABICE>)

enumerator X\_MAC\_ARABIC = 10004

Arabic (Mac)

#### [` X_MAC_HEBREW `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12X_MAC_HEBREWE>)

enumerator X\_MAC\_HEBREW = 10005

Hebrew (Mac)

#### [` X_MAC_GREEK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES11X_MAC_GREEKE>)

enumerator X\_MAC\_GREEK = 10006

Greek (Mac)

#### [` X_MAC_CYRILLIC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES14X_MAC_CYRILLICE>)

enumerator X\_MAC\_CYRILLIC = 10007

Cyrillic (Mac)

#### [` X_MAC_CHINESESIMP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES17X_MAC_CHINESESIMPE>)

enumerator X\_MAC\_CHINESESIMP = 10008

MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac)

#### [` X_MAC_ROMANIAN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES14X_MAC_ROMANIANE>)

enumerator X\_MAC\_ROMANIAN = 10010

Romanian (Mac)

#### [` X_MAC_UKRAINIAN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES15X_MAC_UKRAINIANE>)

enumerator X\_MAC\_UKRAINIAN = 10017

Ukrainian (Mac)

#### [` X_MAC_THAI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_MAC_THAIE>)

enumerator X\_MAC\_THAI = 10021

Thai (Mac)

#### [` X_MAC_CE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8X_MAC_CEE>)

enumerator X\_MAC\_CE = 10029

MAC Latin 2; Central European (Mac)

#### [` X_MAC_ICELANDIC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES15X_MAC_ICELANDICE>)

enumerator X\_MAC\_ICELANDIC = 10079

Icelandic (Mac)

#### [` X_MAC_TURKISH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES13X_MAC_TURKISHE>)

enumerator X\_MAC\_TURKISH = 10081

Turkish (Mac)

#### [` X_MAC_CROATIAN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES14X_MAC_CROATIANE>)

enumerator X\_MAC\_CROATIAN = 10082

Croatian (Mac)

#### [` UTF_32 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6UTF_32E>)

enumerator UTF\_32 = 12000

Unicode UTF-32, little endian byte order; available only to managed applications

#### [` UTF_32BE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8UTF_32BEE>)

enumerator UTF\_32BE = 12001

Unicode UTF-32, big endian byte order; available only to managed applications

#### [` X_CHINESE_CNS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES13X_CHINESE_CNSE>)

enumerator X\_CHINESE\_CNS = 20000

CNS Taiwan; Chinese Traditional (CNS)

#### [` X_CP20001 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9X_CP20001E>)

enumerator X\_CP20001 = 20001

TCA Taiwan

#### [` X_CHINESE_ETEN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES14X_CHINESE_ETENE>)

enumerator X\_CHINESE\_ETEN = 20002

Eten Taiwan; Chinese Traditional (Eten)

#### [` X_CP20003 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9X_CP20003E>)

enumerator X\_CP20003 = 20003

IBM5550 Taiwan

#### [` X_CP20004 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9X_CP20004E>)

enumerator X\_CP20004 = 20004

TeleText Taiwan

#### [` X_CP20005 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9X_CP20005E>)

enumerator X\_CP20005 = 20005

Wang Taiwan

#### [` X_IA5 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES5X_IA5E>)

enumerator X\_IA5 = 20105

IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5)

#### [` X_IA5_GERMAN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12X_IA5_GERMANE>)

enumerator X\_IA5\_GERMAN = 20106

IA5 German (7-bit)

#### [` X_IA5_SWEDISH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES13X_IA5_SWEDISHE>)

enumerator X\_IA5\_SWEDISH = 20107

IA5 Swedish (7-bit)

#### [` X_IA5_NORWEGIAN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES15X_IA5_NORWEGIANE>)

enumerator X\_IA5\_NORWEGIAN = 20108

IA5 Norwegian (7-bit)

#### [` US_ASCII `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8US_ASCIIE>)

enumerator US\_ASCII = 20127

US-ASCII (7-bit)

#### [` X_CP20261 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9X_CP20261E>)

enumerator X\_CP20261 = 20261

T.61

#### [` X_CP20269 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9X_CP20269E>)

enumerator X\_CP20269 = 20269

ISO 6937 Non-Spacing Accent

#### [` IBM273 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM273E>)

enumerator IBM273 = 20273

IBM EBCDIC Germany

#### [` IBM277 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM277E>)

enumerator IBM277 = 20277

IBM EBCDIC Denmark-Norway

#### [` IBM278 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM278E>)

enumerator IBM278 = 20278

IBM EBCDIC Finland-Sweden

#### [` IBM280 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM280E>)

enumerator IBM280 = 20280

IBM EBCDIC Italy

#### [` IBM284 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM284E>)

enumerator IBM284 = 20284

IBM EBCDIC Latin America-Spain

#### [` IBM285 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM285E>)

enumerator IBM285 = 20285

IBM EBCDIC United Kingdom

#### [` IBM290 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM290E>)

enumerator IBM290 = 20290

IBM EBCDIC Japanese Katakana Extended

#### [` IBM297 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM297E>)

enumerator IBM297 = 20297

IBM EBCDIC France

#### [` IBM420 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM420E>)

enumerator IBM420 = 20420

IBM EBCDIC Arabic

#### [` IBM423 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM423E>)

enumerator IBM423 = 20423

IBM EBCDIC Greek

#### [` IBM424 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM424E>)

enumerator IBM424 = 20424

IBM EBCDIC Hebrew

#### [` X_EBCDIC_KOREANEXTENDED `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES23X_EBCDIC_KOREANEXTENDEDE>)

enumerator X\_EBCDIC\_KOREANEXTENDED = 20833

IBM EBCDIC Korean Extended

#### [` IBM_THAI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM_THAIE>)

enumerator IBM\_THAI = 20838

IBM EBCDIC Thai

#### [` KOI8_R `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6KOI8_RE>)

enumerator KOI8\_R = 20866

Russian (KOI8-R); Cyrillic (KOI8-R)

#### [` IBM871 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM871E>)

enumerator IBM871 = 20871

IBM EBCDIC Icelandic

#### [` IBM880 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM880E>)

enumerator IBM880 = 20880

IBM EBCDIC Cyrillic Russian

#### [` IBM905 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6IBM905E>)

enumerator IBM905 = 20905

IBM EBCDIC Turkish

#### [` IBM00924 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8IBM00924E>)

enumerator IBM00924 = 20924

IBM EBCDIC Latin 1/Open System (1047 + Euro symbol)

#### [` EUC_JP_JIS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10EUC_JP_JISE>)

enumerator EUC\_JP\_JIS = 20932

Japanese (JIS 0208-1990 and 0121-1990)

#### [` X_CP20936 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9X_CP20936E>)

enumerator X\_CP20936 = 20936

Simplified Chinese (GB2312); Chinese Simplified (GB2312-80)

#### [` X_CP20949 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9X_CP20949E>)

enumerator X\_CP20949 = 20949

Korean Wansung

#### [` CP1025 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6CP1025E>)

enumerator CP1025 = 21025

IBM EBCDIC Cyrillic Serbian-Bulgarian

#### [` KOI8_U `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6KOI8_UE>)

enumerator KOI8\_U = 21866

Ukrainian (KOI8-U); Cyrillic (KOI8-U)

#### [` ISO_8859_1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10ISO_8859_1E>)

enumerator ISO\_8859\_1 = 28591

ISO 8859-1 Latin 1; Western European (ISO)

#### [` ISO_8859_2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10ISO_8859_2E>)

enumerator ISO\_8859\_2 = 28592

ISO 8859-2 Central European; Central European (ISO)

#### [` ISO_8859_3 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10ISO_8859_3E>)

enumerator ISO\_8859\_3 = 28593

ISO 8859-3 Latin 3

#### [` ISO_8859_4 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10ISO_8859_4E>)

enumerator ISO\_8859\_4 = 28594

ISO 8859-4 Baltic

#### [` ISO_8859_5 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10ISO_8859_5E>)

enumerator ISO\_8859\_5 = 28595

ISO 8859-5 Cyrillic

#### [` ISO_8859_6 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10ISO_8859_6E>)

enumerator ISO\_8859\_6 = 28596

ISO 8859-6 Arabic

#### [` ISO_8859_7 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10ISO_8859_7E>)

enumerator ISO\_8859\_7 = 28597

ISO 8859-7 Greek

#### [` ISO_8859_8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10ISO_8859_8E>)

enumerator ISO\_8859\_8 = 28598

ISO 8859-8 Hebrew; Hebrew (ISO-Visual)

#### [` ISO_8859_9 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10ISO_8859_9E>)

enumerator ISO\_8859\_9 = 28599

ISO 8859-9 Turkish

#### [` ISO_8859_13 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES11ISO_8859_13E>)

enumerator ISO\_8859\_13 = 28603

ISO 8859-13 Estonian

#### [` ISO_8859_15 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES11ISO_8859_15E>)

enumerator ISO\_8859\_15 = 28605

ISO 8859-15 Latin 9

#### [` X_EUROPA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES8X_EUROPAE>)

enumerator X\_EUROPA = 29001

Europa 3

#### [` ISO_8859_8_I `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES12ISO_8859_8_IE>)

enumerator ISO\_8859\_8\_I = 38598

ISO 8859-8 Hebrew; Hebrew (ISO-Logical)

#### [` ISO_2022_JP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES11ISO_2022_JPE>)

enumerator ISO\_2022\_JP = 50220

ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS)

#### [` CSISO2022JP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES11CSISO2022JPE>)

enumerator CSISO2022JP = 50221

ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana)

#### [` ISO_2022_JP_JIS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES15ISO_2022_JP_JISE>)

enumerator ISO\_2022\_JP\_JIS = 50222

ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI)

#### [` ISO_2022_KR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES11ISO_2022_KRE>)

enumerator ISO\_2022\_KR = 50225

ISO 2022 Korean

#### [` X_CP50227 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES9X_CP50227E>)

enumerator X\_CP50227 = 50227

ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022)

#### [` EUC_JP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6EUC_JPE>)

enumerator EUC\_JP = 51932

EUC Japanese

#### [` EUC_CN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6EUC_CNE>)

enumerator EUC\_CN = 51936

EUC Simplified Chinese; Chinese Simplified (EUC)

#### [` EUC_KR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES6EUC_KRE>)

enumerator EUC\_KR = 51949

EUC Korean

#### [` HZ_GB_2312 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10HZ_GB_2312E>)

enumerator HZ\_GB\_2312 = 52936

HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ)

#### [` GB18030 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES7GB18030E>)

enumerator GB18030 = 54936

Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030)

#### [` X_ISCII_DE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_ISCII_DEE>)

enumerator X\_ISCII\_DE = 57002

ISCII Devanagari

#### [` X_ISCII_BE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_ISCII_BEE>)

enumerator X\_ISCII\_BE = 57003

ISCII Bengali

#### [` X_ISCII_TA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_ISCII_TAE>)

enumerator X\_ISCII\_TA = 57004

ISCII Tamil

#### [` X_ISCII_TE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_ISCII_TEE>)

enumerator X\_ISCII\_TE = 57005

ISCII Telugu

#### [` X_ISCII_AS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_ISCII_ASE>)

enumerator X\_ISCII\_AS = 57006

ISCII Assamese

#### [` X_ISCII_OR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_ISCII_ORE>)

enumerator X\_ISCII\_OR = 57007

ISCII Oriya

#### [` X_ISCII_KA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_ISCII_KAE>)

enumerator X\_ISCII\_KA = 57008

ISCII Kannada

#### [` X_ISCII_MA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_ISCII_MAE>)

enumerator X\_ISCII\_MA = 57009

ISCII Malayalam

#### [` X_ISCII_GU `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_ISCII_GUE>)

enumerator X\_ISCII\_GU = 57010

ISCII Gujarati

#### [` X_ISCII_PA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES10X_ISCII_PAE>)

enumerator X\_ISCII\_PA = 57011

ISCII Punjabi

#### [` UTF_7 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES5UTF_7E>)

enumerator UTF\_7 = 65000

Unicode (UTF-7)

#### [` UTF_8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10CODE_PAGES5UTF_8E>)

enumerator UTF\_8 = 65001

Unicode (UTF-8)

### [` LIEF::PE::ALGORITHMS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMSE>)

enum class LIEF::PE::ALGORITHMS : uint32\_t

Cryptography algorithms.

*Values:*

#### [` UNKNOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS7UNKNOWNE>)

enumerator UNKNOWN = 0

#### [` SHA_512 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS7SHA_512E>)

enumerator SHA\_512

#### [` SHA_384 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS7SHA_384E>)

enumerator SHA\_384

#### [` SHA_256 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS7SHA_256E>)

enumerator SHA\_256

#### [` SHA_1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS5SHA_1E>)

enumerator SHA\_1

#### [` MD5 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS3MD5E>)

enumerator MD5

#### [` MD4 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS3MD4E>)

enumerator MD4

#### [` MD2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS3MD2E>)

enumerator MD2

#### [` RSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS3RSAE>)

enumerator RSA

#### [` EC `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS2ECE>)

enumerator EC

#### [` MD5_RSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS7MD5_RSAE>)

enumerator MD5\_RSA

#### [` SHA1_DSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS8SHA1_DSAE>)

enumerator SHA1\_DSA

#### [` SHA1_RSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS8SHA1_RSAE>)

enumerator SHA1\_RSA

#### [` SHA_256_RSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS11SHA_256_RSAE>)

enumerator SHA\_256\_RSA

#### [` SHA_384_RSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS11SHA_384_RSAE>)

enumerator SHA\_384\_RSA

#### [` SHA_512_RSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS11SHA_512_RSAE>)

enumerator SHA\_512\_RSA

#### [` SHA1_ECDSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS10SHA1_ECDSAE>)

enumerator SHA1\_ECDSA

#### [` SHA_256_ECDSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS13SHA_256_ECDSAE>)

enumerator SHA\_256\_ECDSA

#### [` SHA_384_ECDSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS13SHA_384_ECDSAE>)

enumerator SHA\_384\_ECDSA

#### [` SHA_512_ECDSA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE10ALGORITHMS13SHA_512_ECDSAE>)

enumerator SHA\_512\_ECDSA

### [` LIEF::PE::ACCELERATOR_CODES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODESE>)

enum class LIEF::PE::ACCELERATOR\_CODES : uint32\_t

From [https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes](<https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes>).

*Values:*

#### [` LBUTTON `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7LBUTTONE>)

enumerator LBUTTON = 0x01

#### [` RBUTTON `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7RBUTTONE>)

enumerator RBUTTON = 0x02

#### [` CANCEL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6CANCELE>)

enumerator CANCEL = 0x03

#### [` MBUTTON `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7MBUTTONE>)

enumerator MBUTTON = 0x04

#### [` XBUTTON1_K `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES10XBUTTON1_KE>)

enumerator XBUTTON1\_K = 0x05

#### [` XBUTTON2_K `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES10XBUTTON2_KE>)

enumerator XBUTTON2\_K = 0x06

#### [` BACK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4BACKE>)

enumerator BACK = 0x08

#### [` TAB `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3TABE>)

enumerator TAB = 0x09

#### [` CLEAR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5CLEARE>)

enumerator CLEAR = 0x0C

#### [` RETURN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6RETURNE>)

enumerator RETURN = 0x0D

#### [` SHIFT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5SHIFTE>)

enumerator SHIFT = 0x10

#### [` CONTROL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7CONTROLE>)

enumerator CONTROL = 0x11

#### [` MENU `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4MENUE>)

enumerator MENU = 0x12

#### [` PAUSE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5PAUSEE>)

enumerator PAUSE = 0x13

#### [` CAPITAL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7CAPITALE>)

enumerator CAPITAL = 0x14

#### [` KANA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4KANAE>)

enumerator KANA = 0x15

#### [` IME_ON `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6IME_ONE>)

enumerator IME\_ON = 0x16

#### [` JUNJA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5JUNJAE>)

enumerator JUNJA = 0x17

#### [` FINAL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5FINALE>)

enumerator FINAL = 0x18

#### [` KANJI `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5KANJIE>)

enumerator KANJI = 0x19

#### [` IME_OFF `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7IME_OFFE>)

enumerator IME\_OFF = 0x1A

#### [` ESCAPE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6ESCAPEE>)

enumerator ESCAPE = 0x1B

#### [` CONVERT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7CONVERTE>)

enumerator CONVERT = 0x1C

#### [` NONCONVERT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES10NONCONVERTE>)

enumerator NONCONVERT = 0x1D

#### [` ACCEPT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6ACCEPTE>)

enumerator ACCEPT = 0x1E

#### [` MODECHANGE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES10MODECHANGEE>)

enumerator MODECHANGE = 0x1F

#### [` SPACE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5SPACEE>)

enumerator SPACE = 0x20

#### [` PRIOR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5PRIORE>)

enumerator PRIOR = 0x21

#### [` NEXT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4NEXTE>)

enumerator NEXT = 0x22

#### [` END `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3ENDE>)

enumerator END = 0x23

#### [` HOME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4HOMEE>)

enumerator HOME = 0x24

#### [` LEFT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4LEFTE>)

enumerator LEFT = 0x25

#### [` UP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES2UPE>)

enumerator UP = 0x26

#### [` RIGHT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5RIGHTE>)

enumerator RIGHT = 0x27

#### [` DOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4DOWNE>)

enumerator DOWN = 0x28

#### [` SELECT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6SELECTE>)

enumerator SELECT = 0x29

#### [` PRINT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5PRINTE>)

enumerator PRINT = 0x2A

#### [` EXECUTE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7EXECUTEE>)

enumerator EXECUTE = 0x2B

#### [` SNAPSHOT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES8SNAPSHOTE>)

enumerator SNAPSHOT = 0x2C

#### [` INSERT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6INSERTE>)

enumerator INSERT = 0x2D

#### [` DELETE_K `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES8DELETE_KE>)

enumerator DELETE\_K = 0x2E

#### [` HELP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4HELPE>)

enumerator HELP = 0x2F

#### [` NUM_0 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5NUM_0E>)

enumerator NUM\_0 = 0x30

#### [` NUM_1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5NUM_1E>)

enumerator NUM\_1 = 0x31

#### [` NUM_2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5NUM_2E>)

enumerator NUM\_2 = 0x32

#### [` NUM_3 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5NUM_3E>)

enumerator NUM\_3 = 0x33

#### [` NUM_4 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5NUM_4E>)

enumerator NUM\_4 = 0x34

#### [` NUM_5 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5NUM_5E>)

enumerator NUM\_5 = 0x35

#### [` NUM_6 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5NUM_6E>)

enumerator NUM\_6 = 0x36

#### [` NUM_7 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5NUM_7E>)

enumerator NUM\_7 = 0x37

#### [` NUM_8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5NUM_8E>)

enumerator NUM\_8 = 0x38

#### [` NUM_9 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5NUM_9E>)

enumerator NUM\_9 = 0x39

#### [` A `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1AE>)

enumerator A = 0x41

#### [` B `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1BE>)

enumerator B = 0x42

#### [` C `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1CE>)

enumerator C = 0x43

#### [` D `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1DE>)

enumerator D = 0x44

#### [` E `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1EE>)

enumerator E = 0x45

#### [` F `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1FE>)

enumerator F = 0x46

#### [` G `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1GE>)

enumerator G = 0x47

#### [` H `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1HE>)

enumerator H = 0x48

#### [` I `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1IE>)

enumerator I = 0x49

#### [` J `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1JE>)

enumerator J = 0x4A

#### [` K `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1KE>)

enumerator K = 0x4B

#### [` L `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1LE>)

enumerator L = 0x4C

#### [` M `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1ME>)

enumerator M = 0x4D

#### [` N `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1NE>)

enumerator N = 0x4E

#### [` O `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1OE>)

enumerator O = 0x4F

#### [` P `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1PE>)

enumerator P = 0x50

#### [` Q `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1QE>)

enumerator Q = 0x51

#### [` R `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1RE>)

enumerator R = 0x52

#### [` S `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1SE>)

enumerator S = 0x53

#### [` T `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1TE>)

enumerator T = 0x54

#### [` U `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1UE>)

enumerator U = 0x55

#### [` V `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1VE>)

enumerator V = 0x56

#### [` W `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1WE>)

enumerator W = 0x57

#### [` X `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1XE>)

enumerator X = 0x58

#### [` Y `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1YE>)

enumerator Y = 0x59

#### [` Z `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES1ZE>)

enumerator Z = 0x5A

#### [` LWIN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4LWINE>)

enumerator LWIN = 0x5B

#### [` RWIN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4RWINE>)

enumerator RWIN = 0x5C

#### [` APPS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4APPSE>)

enumerator APPS = 0x5D

#### [` SLEEP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5SLEEPE>)

enumerator SLEEP = 0x5F

#### [` NUMPAD0 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMPAD0E>)

enumerator NUMPAD0 = 0x60

#### [` NUMPAD1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMPAD1E>)

enumerator NUMPAD1 = 0x61

#### [` NUMPAD2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMPAD2E>)

enumerator NUMPAD2 = 0x62

#### [` NUMPAD3 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMPAD3E>)

enumerator NUMPAD3 = 0x63

#### [` NUMPAD4 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMPAD4E>)

enumerator NUMPAD4 = 0x64

#### [` NUMPAD5 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMPAD5E>)

enumerator NUMPAD5 = 0x65

#### [` NUMPAD6 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMPAD6E>)

enumerator NUMPAD6 = 0x66

#### [` NUMPAD7 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMPAD7E>)

enumerator NUMPAD7 = 0x67

#### [` NUMPAD8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMPAD8E>)

enumerator NUMPAD8 = 0x68

#### [` NUMPAD9 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMPAD9E>)

enumerator NUMPAD9 = 0x69

#### [` MULTIPLY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES8MULTIPLYE>)

enumerator MULTIPLY = 0x6A

#### [` ADD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3ADDE>)

enumerator ADD = 0x6B

#### [` SEPARATOR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES9SEPARATORE>)

enumerator SEPARATOR = 0x6C

#### [` SUBTRACT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES8SUBTRACTE>)

enumerator SUBTRACT = 0x6D

#### [` DECIMAL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7DECIMALE>)

enumerator DECIMAL = 0x6E

#### [` DIVIDE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6DIVIDEE>)

enumerator DIVIDE = 0x6F

#### [` F1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES2F1E>)

enumerator F1 = 0x70

#### [` F2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES2F2E>)

enumerator F2 = 0x71

#### [` F3 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES2F3E>)

enumerator F3 = 0x72

#### [` F4 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES2F4E>)

enumerator F4 = 0x73

#### [` F5 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES2F5E>)

enumerator F5 = 0x74

#### [` F6 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES2F6E>)

enumerator F6 = 0x75

#### [` F7 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES2F7E>)

enumerator F7 = 0x76

#### [` F8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES2F8E>)

enumerator F8 = 0x77

#### [` F9 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES2F9E>)

enumerator F9 = 0x78

#### [` F10 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F10E>)

enumerator F10 = 0x79

#### [` F11 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F11E>)

enumerator F11 = 0x7A

#### [` F12 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F12E>)

enumerator F12 = 0x7B

#### [` F13 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F13E>)

enumerator F13 = 0x7C

#### [` F14 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F14E>)

enumerator F14 = 0x7D

#### [` F15 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F15E>)

enumerator F15 = 0x7E

#### [` F16 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F16E>)

enumerator F16 = 0x7F

#### [` F17 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F17E>)

enumerator F17 = 0x80

#### [` F18 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F18E>)

enumerator F18 = 0x81

#### [` F19 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F19E>)

enumerator F19 = 0x82

#### [` F20 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F20E>)

enumerator F20 = 0x83

#### [` F21 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F21E>)

enumerator F21 = 0x84

#### [` F22 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F22E>)

enumerator F22 = 0x85

#### [` F23 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F23E>)

enumerator F23 = 0x86

#### [` F24 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3F24E>)

enumerator F24 = 0x87

#### [` NUMLOCK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7NUMLOCKE>)

enumerator NUMLOCK = 0x90

#### [` SCROLL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6SCROLLE>)

enumerator SCROLL = 0x91

#### [` LSHIFT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6LSHIFTE>)

enumerator LSHIFT = 0xA0

#### [` RSHIFT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6RSHIFTE>)

enumerator RSHIFT = 0xA1

#### [` LCONTROL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES8LCONTROLE>)

enumerator LCONTROL = 0xA2

#### [` RCONTROL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES8RCONTROLE>)

enumerator RCONTROL = 0xA3

#### [` LMENU `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5LMENUE>)

enumerator LMENU = 0xA4

#### [` RMENU `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5RMENUE>)

enumerator RMENU = 0xA5

#### [` BROWSER_BACK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES12BROWSER_BACKE>)

enumerator BROWSER\_BACK = 0xA6

#### [` BROWSER_FORWARD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES15BROWSER_FORWARDE>)

enumerator BROWSER\_FORWARD = 0xA7

#### [` BROWSER_REFRESH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES15BROWSER_REFRESHE>)

enumerator BROWSER\_REFRESH = 0xA8

#### [` BROWSER_STOP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES12BROWSER_STOPE>)

enumerator BROWSER\_STOP = 0xA9

#### [` BROWSER_SEARCH `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES14BROWSER_SEARCHE>)

enumerator BROWSER\_SEARCH = 0xAA

#### [` BROWSER_FAVORITES `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES17BROWSER_FAVORITESE>)

enumerator BROWSER\_FAVORITES = 0xAB

#### [` BROWSER_HOME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES12BROWSER_HOMEE>)

enumerator BROWSER\_HOME = 0xAC

#### [` VOLUME_MUTE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES11VOLUME_MUTEE>)

enumerator VOLUME\_MUTE = 0xAD

#### [` VOLUME_DOWN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES11VOLUME_DOWNE>)

enumerator VOLUME\_DOWN = 0xAE

#### [` VOLUME_UP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES9VOLUME_UPE>)

enumerator VOLUME\_UP = 0xAF

#### [` MEDIA_NEXT_TRACK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES16MEDIA_NEXT_TRACKE>)

enumerator MEDIA\_NEXT\_TRACK = 0xB0

#### [` MEDIA_PREV_TRACK `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES16MEDIA_PREV_TRACKE>)

enumerator MEDIA\_PREV\_TRACK = 0xB1

#### [` MEDIA_STOP `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES10MEDIA_STOPE>)

enumerator MEDIA\_STOP = 0xB2

#### [` MEDIA_PLAY_PAUSE `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES16MEDIA_PLAY_PAUSEE>)

enumerator MEDIA\_PLAY\_PAUSE = 0xB3

#### [` LAUNCH_MAIL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES11LAUNCH_MAILE>)

enumerator LAUNCH\_MAIL = 0xB4

#### [` LAUNCH_MEDIA_SELECT `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES19LAUNCH_MEDIA_SELECTE>)

enumerator LAUNCH\_MEDIA\_SELECT = 0xB5

#### [` LAUNCH_APP1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES11LAUNCH_APP1E>)

enumerator LAUNCH\_APP1 = 0xB6

#### [` LAUNCH_APP2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES11LAUNCH_APP2E>)

enumerator LAUNCH\_APP2 = 0xB7

#### [` OEM_1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5OEM_1E>)

enumerator OEM\_1 = 0xBA

#### [` OEM_PLUS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES8OEM_PLUSE>)

enumerator OEM\_PLUS = 0xBB

#### [` OEM_COMMA `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES9OEM_COMMAE>)

enumerator OEM\_COMMA = 0xBC

#### [` OEM_MINUS `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES9OEM_MINUSE>)

enumerator OEM\_MINUS = 0xBD

#### [` OEM_PERIOD `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES10OEM_PERIODE>)

enumerator OEM\_PERIOD = 0xBE

#### [` OEM_2 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5OEM_2E>)

enumerator OEM\_2 = 0xBF

#### [` OEM_4 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5OEM_4E>)

enumerator OEM\_4 = 0xDB

#### [` OEM_5 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5OEM_5E>)

enumerator OEM\_5 = 0xDC

#### [` OEM_6 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5OEM_6E>)

enumerator OEM\_6 = 0xDD

#### [` OEM_7 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5OEM_7E>)

enumerator OEM\_7 = 0xDE

#### [` OEM_8 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5OEM_8E>)

enumerator OEM\_8 = 0xDF

#### [` OEM_102 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES7OEM_102E>)

enumerator OEM\_102 = 0xE2

#### [` PROCESSKEY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES10PROCESSKEYE>)

enumerator PROCESSKEY = 0xE5

#### [` PACKET `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6PACKETE>)

enumerator PACKET = 0xE7

#### [` ATTN `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4ATTNE>)

enumerator ATTN = 0xF6

#### [` CRSEL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5CRSELE>)

enumerator CRSEL = 0xF7

#### [` EXSEL `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5EXSELE>)

enumerator EXSEL = 0xF8

#### [` EREOF `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES5EREOFE>)

enumerator EREOF = 0xF9

#### [` PLAY `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4PLAYE>)

enumerator PLAY = 0xFA

#### [` ZOOM `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES4ZOOME>)

enumerator ZOOM = 0xFB

#### [` NONAME `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES6NONAMEE>)

enumerator NONAME = 0xFC

#### [` PA1 `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES3PA1E>)

enumerator PA1 = 0xFD

#### [` OEM_CLEAR `](<https://lief.re/doc/latest/formats/pe/cpp.html#_CPPv4N4LIEF2PE17ACCELERATOR_CODES9OEM_CLEARE>)

enumerator OEM\_CLEAR = 0xFE
