1*76af099aSliuyi #ifndef RKIMAGE_HEADER 2*76af099aSliuyi #define RKIMAGE_HEADER 3*76af099aSliuyi #include "DefineHeader.h" 4*76af099aSliuyi #include "RKBoot.h" 5*76af099aSliuyi #define IMAGE_RESERVED_SIZE 61 6*76af099aSliuyi #pragma pack(1) 7*76af099aSliuyi typedef struct { 8*76af099aSliuyi UINT uiTag; 9*76af099aSliuyi USHORT usSize; 10*76af099aSliuyi DWORD dwVersion; 11*76af099aSliuyi DWORD dwMergeVersion; 12*76af099aSliuyi STRUCT_RKTIME stReleaseTime; 13*76af099aSliuyi ENUM_RKDEVICE_TYPE emSupportChip; 14*76af099aSliuyi DWORD dwBootOffset; 15*76af099aSliuyi DWORD dwBootSize; 16*76af099aSliuyi DWORD dwFWOffset; 17*76af099aSliuyi DWORD dwFWSize; 18*76af099aSliuyi BYTE reserved[IMAGE_RESERVED_SIZE]; 19*76af099aSliuyi } STRUCT_RKIMAGE_HEAD, *PSTRUCT_RKIMAGE_HEAD; 20*76af099aSliuyi #pragma pack() 21*76af099aSliuyi class CRKImage 22*76af099aSliuyi { 23*76af099aSliuyi public: 24*76af099aSliuyi UINT GetVersion(); 25*76af099aSliuyi property<CRKImage, UINT, READ_ONLY> Version; 26*76af099aSliuyi UINT GetMergeVersion(); 27*76af099aSliuyi property<CRKImage, UINT, READ_ONLY> MergeVersion; 28*76af099aSliuyi STRUCT_RKTIME GetReleaseTime(); 29*76af099aSliuyi property<CRKImage, STRUCT_RKTIME, READ_ONLY> ReleaseTime; 30*76af099aSliuyi ENUM_RKDEVICE_TYPE GetSupportDevice(); 31*76af099aSliuyi property<CRKImage, ENUM_RKDEVICE_TYPE, READ_ONLY> SupportDevice; 32*76af099aSliuyi ENUM_OS_TYPE GetOsType(); 33*76af099aSliuyi property<CRKImage, ENUM_OS_TYPE, READ_ONLY> OsType; 34*76af099aSliuyi 35*76af099aSliuyi unsigned short GetBackupSize(); 36*76af099aSliuyi property<CRKImage, unsigned short, READ_ONLY> BackupSize; 37*76af099aSliuyi UINT GetBootOffset(); 38*76af099aSliuyi property<CRKImage, UINT, READ_ONLY> BootOffset; 39*76af099aSliuyi UINT GetBootSize(); 40*76af099aSliuyi property<CRKImage, UINT, READ_ONLY> BootSize; 41*76af099aSliuyi UINT GetFWOffset(); 42*76af099aSliuyi property<CRKImage, UINT, READ_ONLY> FWOffset; 43*76af099aSliuyi long long GetFWSize(); 44*76af099aSliuyi property<CRKImage, long long, READ_ONLY> FWSize; 45*76af099aSliuyi bool GetSignFlag(); 46*76af099aSliuyi property<CRKImage, bool, READ_ONLY> SignFlag; 47*76af099aSliuyi 48*76af099aSliuyi CRKBoot *m_bootObject; 49*76af099aSliuyi bool SaveBootFile(string filename); 50*76af099aSliuyi bool SaveFWFile(string filename); 51*76af099aSliuyi bool GetData(long long dwOffset, DWORD dwSize, PBYTE lpBuffer); 52*76af099aSliuyi void GetReservedData(PBYTE &lpData, USHORT &usSize); 53*76af099aSliuyi int GetMd5Data(PBYTE &lpMd5, PBYTE &lpSignMd5); 54*76af099aSliuyi long long GetImageSize(); 55*76af099aSliuyi CRKImage(string filename, bool &bCheck); 56*76af099aSliuyi ~CRKImage(); 57*76af099aSliuyi protected: 58*76af099aSliuyi 59*76af099aSliuyi private: 60*76af099aSliuyi DWORD m_version; 61*76af099aSliuyi DWORD m_mergeVersion; 62*76af099aSliuyi STRUCT_RKTIME m_releaseTime; 63*76af099aSliuyi ENUM_RKDEVICE_TYPE m_supportDevice; 64*76af099aSliuyi DWORD m_bootOffset; 65*76af099aSliuyi DWORD m_bootSize; 66*76af099aSliuyi DWORD m_fwOffset; 67*76af099aSliuyi long long m_fwSize; 68*76af099aSliuyi 69*76af099aSliuyi BYTE m_md5[32]; 70*76af099aSliuyi BYTE m_signMd5[256]; 71*76af099aSliuyi BYTE m_reserved[IMAGE_RESERVED_SIZE]; 72*76af099aSliuyi bool m_bSignFlag; 73*76af099aSliuyi int m_signMd5Size; 74*76af099aSliuyi FILE *m_pFile; 75*76af099aSliuyi long long m_fileSize; 76*76af099aSliuyi }; 77*76af099aSliuyi #endif