xref: /rkdeveloptool/RKBoot.h (revision 76af099afcbcafd97801028de2ba3421d3c12865)
1 #ifndef RKBOOT_HEADER
2 #define RKBOOT_HEADER
3 #include "DefineHeader.h"
4 
5 #define  BOOT_RESERVED_SIZE 57
6 #pragma pack(1)
7 typedef struct  {
8 	UINT uiTag;
9 	USHORT usSize;
10 	DWORD  dwVersion;
11 	DWORD  dwMergeVersion;
12 	STRUCT_RKTIME stReleaseTime;
13 	ENUM_RKDEVICE_TYPE emSupportChip;
14 	UCHAR uc471EntryCount;
15 	DWORD dw471EntryOffset;
16 	UCHAR uc471EntrySize;
17 	UCHAR uc472EntryCount;
18 	DWORD dw472EntryOffset;
19 	UCHAR uc472EntrySize;
20 	UCHAR ucLoaderEntryCount;
21 	DWORD dwLoaderEntryOffset;
22 	UCHAR ucLoaderEntrySize;
23 	UCHAR ucSignFlag;
24 	UCHAR ucRc4Flag;
25 	UCHAR reserved[BOOT_RESERVED_SIZE];
26 } STRUCT_RKBOOT_HEAD, *PSTRUCT_RKBOOT_HEAD;
27 
28 typedef struct  {
29 	UCHAR ucSize;
30 	ENUM_RKBOOTENTRY emType;
31 	WCHAR szName[20];
32 	DWORD dwDataOffset;
33 	DWORD dwDataSize;
34 	DWORD dwDataDelay;
35 } STRUCT_RKBOOT_ENTRY, *PSTRUCT_RKBOOT_ENTRY;
36 
37 
38 #pragma pack()
39 class CRKBoot {
40 public:
41 	bool GetRc4DisableFlag();
42  	property<CRKBoot, bool, READ_ONLY> Rc4DisableFlag;
43 	bool GetSignFlag();
44  	property<CRKBoot, bool, READ_ONLY> SignFlag;
45 	UINT GetVersion();
46  	property<CRKBoot, UINT, READ_ONLY> Version;
47 	UINT GetMergeVersion();
48  	property<CRKBoot, UINT, READ_ONLY> MergeVersion;
49 	STRUCT_RKTIME GetReleaseTime();
50  	property<CRKBoot, STRUCT_RKTIME, READ_ONLY> ReleaseTime;
51 	ENUM_RKDEVICE_TYPE GetSupportDevice();
52  	property<CRKBoot, ENUM_RKDEVICE_TYPE, READ_ONLY> SupportDevice;
53 	unsigned char GetEntry471Count();
54  	property<CRKBoot, unsigned char, READ_ONLY> Entry471Count;
55 	unsigned char GetEntry472Count();
56  	property<CRKBoot, unsigned char, READ_ONLY> Entry472Count;
57 	unsigned char GetEntryLoaderCount();
58  	property<CRKBoot, unsigned char, READ_ONLY> EntryLoaderCount;
59 	bool CrcCheck();
60 	bool SaveEntryFile(ENUM_RKBOOTENTRY type, UCHAR ucIndex, string fileName);
61 	bool GetEntryProperty(ENUM_RKBOOTENTRY type, UCHAR ucIndex, DWORD &dwSize, DWORD &dwDelay, char *pName = NULL);
62 	char GetIndexByName(ENUM_RKBOOTENTRY type, char *pName);
63 	bool GetEntryData(ENUM_RKBOOTENTRY type, UCHAR ucIndex, PBYTE lpData);
64 	CRKBoot(PBYTE lpBootData, DWORD dwBootSize, bool &bCheck);
65 	~CRKBoot();
66 protected:
67 private:
68 	bool m_bRc4Disable;
69 	bool m_bSignFlag;
70 	DWORD m_version;
71 	DWORD m_mergeVersion;
72 	STRUCT_RKTIME m_releaseTime;
73 	ENUM_RKDEVICE_TYPE m_supportDevice;
74 	DWORD m_471Offset;
75 	UCHAR m_471Size;
76 	UCHAR m_471Count;
77 	DWORD m_472Offset;
78 	UCHAR m_472Size;
79 	UCHAR m_472Count;
80 	DWORD m_loaderOffset;
81 	UCHAR m_loaderSize;
82 	UCHAR m_loaderCount;
83 	BYTE  m_crc[4];
84 	PBYTE m_BootData;
85 	DWORD m_BootSize;
86 	USHORT m_BootHeadSize;
87 	void WCHAR_To_wchar(WCHAR *src, wchar_t *dst, int len);
88 	void WCHAR_To_char(WCHAR *src, char *dst, int len);
89 };
90 
91 #endif