BearParser
Portable Executable parsing library (from PE-bear)
DataDirEntryWrapper.cpp
Go to the documentation of this file.
2#include "pe/PEFile.h"
3
4DataDirEntryWrapper::DataDirEntryWrapper(PEFile* pe, pe:: dir_entry v_entryType)
5 : PENodeWrapper(pe), entryType(v_entryType)
6{
7 wrap();
8}
9
11{
12
13 if (m_PE == NULL) return NULL;
14
15 IMAGE_DATA_DIRECTORY *d = m_PE->getDataDirectory();
16 return d;
17}
18
20{
21 if (this->entryType >= pe::DIR_ENTRIES_COUNT) return INVALID_ADDR;
22
23 IMAGE_DATA_DIRECTORY *d = getDataDirectory();
24 if (!d) return INVALID_ADDR;
25
26 offset_t rva = static_cast<offset_t>(d[this->entryType].VirtualAddress);
27 if (rva == 0) return INVALID_ADDR;
28 return rva;
29}
30
32{
33 if (this->entryType >= pe::DIR_ENTRIES_COUNT) return 0;
34
35 IMAGE_DATA_DIRECTORY *d = getDataDirectory();
36 if (!d) return 0;
37
38 bufsize_t size = static_cast<bufsize_t>(d[this->entryType].Size);
39 return size;
40}
uint32_t bufsize_t
const offset_t INVALID_ADDR
uint64_t offset_t
bufsize_t getDirEntrySize()
offset_t getDirEntryAddress()
int entryType
DataDirEntryWrapper(PEFile *pe, pe::dir_entry v_entryType)
IMAGE_DATA_DIRECTORY * getDataDirectory()
virtual bool wrap()
Definition: PEFile.h:41
IMAGE_DATA_DIRECTORY * getDataDirectory()
Definition: PEFile.cpp:195
PEFile * m_PE
Definition: PENodeWrapper.h:36