BearParser
Portable Executable parsing library (from PE-bear)
Loading...
Searching...
No Matches
ExceptionDirWrapper.h
Go to the documentation of this file.
1#pragma once
2
4
7
9{
10public:
12 : DataDirEntryWrapper(pe, pe::DIR_EXCEPTION), parsedSize(0) { wrap(); }
13
14 bool wrap();
15
16 virtual void* getPtr() { return exceptFunc64(); }
17 virtual bufsize_t getSize() { return parsedSize; }
18
19 virtual QString getName() { return "Exceptions Dir."; }
20 virtual size_t getFieldsCount() { return entries.size(); }
21
22 virtual void* getFieldPtr(size_t fieldId, size_t subField) { return getSubfieldPtr(fieldId, subField); }
23 virtual QString getFieldName(size_t fieldId) { return "Exceptions Block"; }
24 virtual QString getFieldName(size_t fieldId, size_t subField) { return getSubfieldName(fieldId, subField); }
25
26protected:
27 IMAGE_IA64_RUNTIME_FUNCTION_ENTRY* exceptFunc64();
28
29private:
30 bufsize_t parsedSize;
31
33};
34
35
37{
38public:
39 // fields :
46 };
47
48 ExceptionEntryWrapper(Executable *pe, ExceptionDirWrapper *parentDir, size_t entryNumber)
49 : ExeNodeWrapper(pe, parentDir, entryNumber), cachedRaw(INVALID_ADDR) { this->parentDir = parentDir;}
50
51 bool wrap() { return true; }
52
53 // full structure boundaries
54 virtual void* getPtr();
55
56 virtual bufsize_t getSize();
57 virtual QString getName() { return "Exceptions Block"; }
58 virtual size_t getFieldsCount() { return FIELD_COUNTER; }
59 virtual size_t getSubFieldsCount() { return 1; }
60
61 // specific field boundaries
62 virtual void* getFieldPtr(size_t fieldId, size_t subField = FIELD_NONE);
63 virtual QString getFieldName(size_t fieldId);
64 virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField);
65
66private:
67 offset_t cachedRaw;
68 ExceptionDirWrapper* parentDir;
69};
70
uint32_t bufsize_t
const offset_t INVALID_ADDR
uint64_t offset_t
#define FIELD_NONE
virtual QString getFieldName(size_t fieldId, size_t subField)
ExceptionDirWrapper(PEFile *pe)
virtual QString getName()
virtual size_t getFieldsCount()
virtual void * getPtr()
virtual bufsize_t getSize()
virtual void * getFieldPtr(size_t fieldId, size_t subField)
IMAGE_IA64_RUNTIME_FUNCTION_ENTRY * exceptFunc64()
virtual QString getFieldName(size_t fieldId)
virtual size_t getFieldsCount()
virtual void * getPtr()
ExceptionEntryWrapper(Executable *pe, ExceptionDirWrapper *parentDir, size_t entryNumber)
virtual QString getName()
bool wrap()
virtual void * getFieldPtr(size_t fieldId, size_t subField=FIELD_NONE)
ExceptionBlockFID
@ BEGIN_ADDR
@ NONE
@ UNWIND_INFO_ADDR
@ FIELD_COUNTER
@ END_ADDR
virtual size_t getSubFieldsCount()
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField)
virtual QString getFieldName(size_t fieldId)
virtual bufsize_t getSize()
virtual void * getSubfieldPtr(size_t fieldId, size_t subField)
virtual QString getSubfieldName(size_t fieldId, size_t subField)
std::vector< ExeNodeWrapper * > entries
Definition: PEFile.h:41