mirror of
https://github.com/LongSoft/UEFITool.git
synced 2025-05-22 19:25:21 -04:00
Add EDK2 FTW parser
This commit is contained in:
parent
e00fc916bb
commit
271465eb61
8 changed files with 331 additions and 6 deletions
100
common/generated/edk2_ftw.cpp
Normal file
100
common/generated/edk2_ftw.cpp
Normal file
|
@ -0,0 +1,100 @@
|
|||
// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
|
||||
|
||||
#include "edk2_ftw.h"
|
||||
#include "../kaitai/exceptions.h"
|
||||
|
||||
edk2_ftw_t::edk2_ftw_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent, edk2_ftw_t* p__root) : kaitai::kstruct(p__io) {
|
||||
m__parent = p__parent;
|
||||
m__root = this; (void)p__root;
|
||||
f_len_ftw_store_header_32 = false;
|
||||
f_len_ftw_store_header_64 = false;
|
||||
_read();
|
||||
}
|
||||
|
||||
void edk2_ftw_t::_read() {
|
||||
m_signature = m__io->read_u4le();
|
||||
{
|
||||
uint32_t _ = signature();
|
||||
if (!( ((_ == 4293995405UL) || (_ == 2656577835UL)) )) {
|
||||
throw kaitai::validation_expr_error<uint32_t>(signature(), _io(), std::string("/seq/0"));
|
||||
}
|
||||
}
|
||||
n_signature_main = true;
|
||||
if (signature() == 4293995405UL) {
|
||||
n_signature_main = false;
|
||||
m_signature_main = m__io->read_bytes(12);
|
||||
if (!(signature_main() == std::string("\x96\x76\x8B\x4C\xA9\x85\x27\x47\x07\x5B\x4F\x50", 12))) {
|
||||
throw kaitai::validation_not_equal_error<std::string>(std::string("\x96\x76\x8B\x4C\xA9\x85\x27\x47\x07\x5B\x4F\x50", 12), signature_main(), _io(), std::string("/seq/1"));
|
||||
}
|
||||
}
|
||||
n_signature_edk2_working_block = true;
|
||||
if (signature() == 2656577835UL) {
|
||||
n_signature_edk2_working_block = false;
|
||||
m_signature_edk2_working_block = m__io->read_bytes(12);
|
||||
if (!(signature_edk2_working_block() == std::string("\x68\x7C\x7D\x49\x0A\xCE\x65\x00\xFD\x9F\x1B\x95", 12))) {
|
||||
throw kaitai::validation_not_equal_error<std::string>(std::string("\x68\x7C\x7D\x49\x0A\xCE\x65\x00\xFD\x9F\x1B\x95", 12), signature_edk2_working_block(), _io(), std::string("/seq/2"));
|
||||
}
|
||||
}
|
||||
n_signature_vss2_working_block = true;
|
||||
if (signature() == 2656577835UL) {
|
||||
n_signature_vss2_working_block = false;
|
||||
m_signature_vss2_working_block = m__io->read_bytes(12);
|
||||
if (!(signature_vss2_working_block() == std::string("\x68\x7C\x7D\x49\xA0\xCE\x65\x00\xFD\x9F\x1B\x95", 12))) {
|
||||
throw kaitai::validation_not_equal_error<std::string>(std::string("\x68\x7C\x7D\x49\xA0\xCE\x65\x00\xFD\x9F\x1B\x95", 12), signature_vss2_working_block(), _io(), std::string("/seq/3"));
|
||||
}
|
||||
}
|
||||
m_crc = m__io->read_u4le();
|
||||
m_state = m__io->read_u1();
|
||||
m_reserved = m__io->read_bytes(3);
|
||||
m_len_write_queue_32 = m__io->read_u4le();
|
||||
n_len_write_queue_64 = true;
|
||||
if (kaitai::kstream::mod(len_write_queue_32(), 16) == 0) {
|
||||
n_len_write_queue_64 = false;
|
||||
m_len_write_queue_64 = m__io->read_u4le();
|
||||
}
|
||||
n_write_queue_32 = true;
|
||||
if (kaitai::kstream::mod(len_write_queue_32(), 16) == 4) {
|
||||
n_write_queue_32 = false;
|
||||
m_write_queue_32 = m__io->read_bytes(len_write_queue_32());
|
||||
}
|
||||
n_write_queue_64 = true;
|
||||
if (kaitai::kstream::mod(len_write_queue_32(), 16) == 0) {
|
||||
n_write_queue_64 = false;
|
||||
m_write_queue_64 = m__io->read_bytes(((static_cast<uint64_t>(len_write_queue_64()) << 32) + len_write_queue_32()));
|
||||
}
|
||||
}
|
||||
|
||||
edk2_ftw_t::~edk2_ftw_t() {
|
||||
_clean_up();
|
||||
}
|
||||
|
||||
void edk2_ftw_t::_clean_up() {
|
||||
if (!n_signature_main) {
|
||||
}
|
||||
if (!n_signature_edk2_working_block) {
|
||||
}
|
||||
if (!n_signature_vss2_working_block) {
|
||||
}
|
||||
if (!n_len_write_queue_64) {
|
||||
}
|
||||
if (!n_write_queue_32) {
|
||||
}
|
||||
if (!n_write_queue_64) {
|
||||
}
|
||||
}
|
||||
|
||||
int8_t edk2_ftw_t::len_ftw_store_header_32() {
|
||||
if (f_len_ftw_store_header_32)
|
||||
return m_len_ftw_store_header_32;
|
||||
m_len_ftw_store_header_32 = 28;
|
||||
f_len_ftw_store_header_32 = true;
|
||||
return m_len_ftw_store_header_32;
|
||||
}
|
||||
|
||||
int8_t edk2_ftw_t::len_ftw_store_header_64() {
|
||||
if (f_len_ftw_store_header_64)
|
||||
return m_len_ftw_store_header_64;
|
||||
m_len_ftw_store_header_64 = 32;
|
||||
f_len_ftw_store_header_64 = true;
|
||||
return m_len_ftw_store_header_64;
|
||||
}
|
105
common/generated/edk2_ftw.h
Normal file
105
common/generated/edk2_ftw.h
Normal file
|
@ -0,0 +1,105 @@
|
|||
#pragma once
|
||||
|
||||
// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
|
||||
|
||||
#include "../kaitai/kaitaistruct.h"
|
||||
#include <stdint.h>
|
||||
#include <memory>
|
||||
|
||||
#if KAITAI_STRUCT_VERSION < 9000L
|
||||
#error "Incompatible Kaitai Struct C++/STL API: version 0.9 or later is required"
|
||||
#endif
|
||||
|
||||
class edk2_ftw_t : public kaitai::kstruct {
|
||||
|
||||
public:
|
||||
|
||||
edk2_ftw_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent = nullptr, edk2_ftw_t* p__root = nullptr);
|
||||
|
||||
private:
|
||||
void _read();
|
||||
void _clean_up();
|
||||
|
||||
public:
|
||||
~edk2_ftw_t();
|
||||
|
||||
private:
|
||||
bool f_len_ftw_store_header_32;
|
||||
int8_t m_len_ftw_store_header_32;
|
||||
|
||||
public:
|
||||
int8_t len_ftw_store_header_32();
|
||||
|
||||
private:
|
||||
bool f_len_ftw_store_header_64;
|
||||
int8_t m_len_ftw_store_header_64;
|
||||
|
||||
public:
|
||||
int8_t len_ftw_store_header_64();
|
||||
|
||||
private:
|
||||
uint32_t m_signature;
|
||||
std::string m_signature_main;
|
||||
bool n_signature_main;
|
||||
|
||||
public:
|
||||
bool _is_null_signature_main() { signature_main(); return n_signature_main; };
|
||||
|
||||
private:
|
||||
std::string m_signature_edk2_working_block;
|
||||
bool n_signature_edk2_working_block;
|
||||
|
||||
public:
|
||||
bool _is_null_signature_edk2_working_block() { signature_edk2_working_block(); return n_signature_edk2_working_block; };
|
||||
|
||||
private:
|
||||
std::string m_signature_vss2_working_block;
|
||||
bool n_signature_vss2_working_block;
|
||||
|
||||
public:
|
||||
bool _is_null_signature_vss2_working_block() { signature_vss2_working_block(); return n_signature_vss2_working_block; };
|
||||
|
||||
private:
|
||||
uint32_t m_crc;
|
||||
uint8_t m_state;
|
||||
std::string m_reserved;
|
||||
uint32_t m_len_write_queue_32;
|
||||
uint32_t m_len_write_queue_64;
|
||||
bool n_len_write_queue_64;
|
||||
|
||||
public:
|
||||
bool _is_null_len_write_queue_64() { len_write_queue_64(); return n_len_write_queue_64; };
|
||||
|
||||
private:
|
||||
std::string m_write_queue_32;
|
||||
bool n_write_queue_32;
|
||||
|
||||
public:
|
||||
bool _is_null_write_queue_32() { write_queue_32(); return n_write_queue_32; };
|
||||
|
||||
private:
|
||||
std::string m_write_queue_64;
|
||||
bool n_write_queue_64;
|
||||
|
||||
public:
|
||||
bool _is_null_write_queue_64() { write_queue_64(); return n_write_queue_64; };
|
||||
|
||||
private:
|
||||
edk2_ftw_t* m__root;
|
||||
kaitai::kstruct* m__parent;
|
||||
|
||||
public:
|
||||
uint32_t signature() const { return m_signature; }
|
||||
std::string signature_main() const { return m_signature_main; }
|
||||
std::string signature_edk2_working_block() const { return m_signature_edk2_working_block; }
|
||||
std::string signature_vss2_working_block() const { return m_signature_vss2_working_block; }
|
||||
uint32_t crc() const { return m_crc; }
|
||||
uint8_t state() const { return m_state; }
|
||||
std::string reserved() const { return m_reserved; }
|
||||
uint32_t len_write_queue_32() const { return m_len_write_queue_32; }
|
||||
uint32_t len_write_queue_64() const { return m_len_write_queue_64; }
|
||||
std::string write_queue_32() const { return m_write_queue_32; }
|
||||
std::string write_queue_64() const { return m_write_queue_64; }
|
||||
edk2_ftw_t* _root() const { return m__root; }
|
||||
kaitai::kstruct* _parent() const { return m__parent; }
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue