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