BearParser
Portable Executable parsing library (from PE-bear)
DataDirEntryWrapper.cpp
Go to the documentation of this file.
2 #include "pe/PEFile.h"
3 
4 DataDirEntryWrapper::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