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