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