📄 rkbin.h
字号:
/* Copyright (C) 2006 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*
File : include\rkbin.h
Desc : 定义 资源文件的数据结构.
Author : huangsl
Date : 2007-07-11
Notes :
$Log: rkbin.h,v $
Revision 1.2 2008/06/19 04:43:26 Administrator
代码整理!
Revision 1.1 2008/06/18 02:50:03 Administrator
修改位置!
Revision 1.7 2008/01/07 12:52:15 Huangshilin
no message
Revision 1.6 2007/12/11 09:18:57 Huangshilin
把视频 6M buffer改为静态,修改 GUI 于该 BUFFER 复用,修改 窗口系统
部分 BUG.
Revision 1.5 2007/11/05 09:53:49 Huangshilin
增加GUI接口,增加应用资源互斥控制.
Revision 1.4 2007/10/25 11:13:31 Huangshilin
修改 支持 TOUCH_MOVE 消息以及GUI BUG.
Revision 1.3 2007/10/11 04:08:07 Huangshilin
System\os
Revision 1.2 2007/10/08 02:57:02 Lingzhaojun
添加版本自动注释脚本
* huangsl 2007-07-11 主要考虑扩展需要.
*
* huangsl 2007-07-22 为了方便统一管理,对 NAME 资源和 ID资源增加属性区分。
*
*/
#ifndef _ROCK_RESBIN_H_
#define _ROCK_RESBIN_H_
/***********************************************************************/
/***********************************************************************/
#define RKB_CHARA_CACHE (0X00000001U<<0) //特性
#define RKB_PROP_BIGEND (0X00000001U<<1) //属性
#define RKB_PROP_NAMERES (0X00000001U<<31) //属性
#define RKB_PROP_ACTION (0X00000001U<<30) // 打包段或者安装段.
#define RKB_MAGIC_FLAG (0X53524B52) //RKRS
#define RKST_MAGIC_FLAG (0X53544B52) //RKST,安装段.
typedef struct _IMAGE_RESBIN_DIRECTORY
{
INT32U Size;
INT32U Magic;
INT32U Property; //such as cache ,ENDIAN
INT32U DateTimeStamp; //
INT32U AllignedSize; //use as head size.
INT32U FileByteSize; //for future
INT16U SizeOfNameDir;
INT16U SizeOfIdDir;
INT16U NumberOfNamedEntries;
INT16U NumberOfIdEntries;
INT32U OffsetOfNamedEntries;
INT32U OffsetOfIdEntries;
} IMAGE_RESBIN_DIRECTORY , *PIMAGE_RESBIN_DIRECTORY;
#define IRES_ENTRYNAME 15 //等于文件的文件名.
typedef struct _IMAGE_NAMEDENTRY
{
INT32U Size; //对于PACK项,用来记录操作.
INT32U Characteristics;
INT32U OffsetToData;
INT32U SizeOfBytes;
char Name[IRES_ENTRYNAME+1];
} IMAGE_NAMEDENTRY, *PIMAGE_NAMEDENTRY;
///////////////////////////////////////////////////////////////////////////
#define IRES_PACKACT_NONE 0 // no action!
#define IRES_PACKACT_MKDIR 1 //action!
#define IRES_PACKACT_CRREATFILE 2
#define IRES_ENTRYPACK 15 //等于文件的文件名.
typedef struct _IMAGE_PACKDENTRY
{
INT32U Size ; // 由于 Name 为 路径,因此 是变长的,并且长度可能很长,因此采用动态长度.
INT32U Action; //对于PACK项,用来记录操作.
INT32U OffsetToData;
INT32U SizeOfBytes;
char Name[4];
} IMAGE_PACKDENTRY , *PIMAGE_PACKDENTRY ;
///////////////////////////////////////////////////////////////////////////
#define RSID_TYPE_STRING 0
#define RSID_TYPE_BMP 1
#define RSID_TYPE_ICON 2
#define RSID_TYPE_MENU 3
#define RSID_TYPE_MAX 4
///////////////////////////////////////////////////////////////////////////
#define RSID_LANG_MAX 10
#define RSID_LANG_BMP 0XFFFF //bmp 对应的 LANG ID
//INPUT LANGUAGE --- for LANIN , LANOUT
#define IPLC_INVALIDLANG "0" //无效的语言标志
//对于 ID 资源,有 语言和 ID之分.
typedef struct _IMAGE_ID_DIRECTORY
{
INT32U Size;
INT32U Characteristics;
INT32U IDOffsetToData; //POINT TO FIRST ID DATA
INT32U DataOffsetToData; //POINT TO FIRST RES DATA
INT16U IDType;
INT16U Language;
INT16U IdEntrySize;
INT16U totalIDCount;
INT16U Reserved;
INT16U StartID;
INT32U DataByteSize; //ID RESOURECE DATA SIZE ,//use to get the id data size;
} IMAGE_ID_DIRECTORY , *PIMAGE_ID_DIRECTORY;
//ID 项
typedef struct _IMAGE_DATAENTRY
{
INT32U SizeOfBytes;
INT32U OffsetToData;
} IMAGE_DATAENTRY, *PIMAGE_DATAENTRY;
//定义 KERNAL 的 数据结构.
//由于代码加载由各自的模块负责,此处只需要几个关键数据即可.
typedef struct _KNL_SECINFO
{
INT32U ImagicNumber;
INT32U Size; //是否增加一个 CRC ?
INT32U ImageBase; //CODE START
INT32U ImageLoadBase; //code ,rw
INT32U ImageLoadLimit; //code ,rw
INT32U ImageZiBase; //ZI LIMIT
INT32U ImageReserved0; // 加载地址
INT32U ImageReserved1; //长度.
INT32U ImageEntry; //正常启动
INT32U ImageLoadOption; //安装启动
//为了安全,可以增加一个 哈希 校验或者 CRC校验.
INT32U CRC32; // 校验码,暂时没有使用.
} KNL_SECINFO, *PKNL_SECINFO;
/************************************************************************/
//RES TYPE ID START
#ifndef RSID_START_STRING
#define RSID_START_STRING 0Xa000 //默认起始 ID
#define RSID_START_BMP 0Xb000 //默认起始 ID。
#define RSID_START_UNKNOW 0XFFFF
#endif
//对于 PACK ,2K 可能不足.
//由于 文件名长度不可控制,以及文件个数不可控制,把头部长度增加到 10 K.
#define BF_HEAD_SIZE (10*1024)
/************************************************************************/
//getbfData.c
BOOLEAN GBFOpenBinFile(char* fileName);
void GBFGetHeadInfo(void);
INT32U GBFGetBmpIDData(INT16U StartID, INT16U ID , void*outBuffer , INT32U outBufferSize);
INT32U GBFGetStringIDData(INT16U StartID, INT16U ID , INT16U lang , void*outBuffer , INT32U outBufferSize);
INT32U GBFGetNameData(char* dsName , void*outBuffer , INT32U outBufferSize);
void GBFCloseBinFile(void);
void GBFGetHeadInfo_Lib(char *outBuffer);
/************************************************************************/
/*****************************************************************************************/
#endif /* not _ROCK_RESBIN_H_ */
/*----------------------------end of file-------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -