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