📄 emboloader.h
字号:
/*************************************************
Copyright (C), 2002-2005, Embedded-Tech. Co., Ltd.
File name: emboloader.h
Author: Peica Chen
Version: 5.0
Date: 2005-09-19
Description:
Others:
History:
*************************************************/
#ifndef _EMBOLOADER_H_
#define _EMBOLOADER_H_
/*一个值为16的长度*/
#define MAX_LEN_16 16
/*一个值为32的长度*/
#define MAX_LEN_32 32
/*一个值为64的长度*/
#define MAX_LEN_64 64
/*%MACHINES_FILE%中可存放的最大机器数*/
#define MAX_MACHS 32
/*EmboImageInfo数组的最大长度,该值不可大于32*/
#define MAX_IMGS 4
/*EmboUserInfo数组的最大长度,该值不可大于32*/
#define MAX_USERS 9
/*EmboHardwareInfo数组的最大长度,该值不可大于32*/
#define MAX_HWIDS 4
/*EmboEncryptsInfo数组的最大长度,该值不可大于32*/
#define MAX_ENCRYPTS 4
/*Embo的指定ID*/
#define EMBO_SIG "This NK.BIN is Built from Embedded-Tech Co.,Ltd.\0"
/*Embo的Loader标识*/
#define EMBO_LOADER_SIG "Embedded"
/*用于存放机器信息的配置文件*/
#define MACHINES_FILE "machs.ini"
/*用于存放用户信息的配置文件*/
#define USERS_FILE "users.ini"
/*用于存放研博Windows CE基本配置信息的配置文件*/
#define EMBOBOOT_FILE "emboboot.ini"
/*记录本地MAC地址,由Dos启动后调用nbmac.exe>net.tmp生成此文件*/
#define NET_TMP "net.tmp"
/*链接文件,指向实际保存有本机Mac地址的net.tmp文件*/
#define NET_LIN "net.lin"
/*研博Windows CE注册表文件*/
#define REG_FILE "emboreg.reg"
#define EMBOID_SN "emboid.sn"
#define EMBOEXT_FILE "emboext.txt"
/*研博保留内存区域的默认起始地址*/
#define RES_START_ADDR 0x220000
// 研博保留内存区域的默认结束地址
#define RES_END_ADDR 0x300000
// 注册表数据相对于%RES_START_ADDR%的偏移
#define REG_OFFSET 0x10
// EmboBaseInfo相对于%RES_START_ADDR%的偏移
#define INF_OFFSET 0xd0000
// EmboUserInfo相对于%RES_START_ADDR% + %EMBO_USERS_OFFSET%的偏移
#define EMBO_USERS_OFFSET 0x1000
// EmboImagesInfo相对于%RES_START_ADDR% + %EMBO_USERS_OFFSET%的偏移
#define EMBO_IMGS_OFFSET 0x2000
// EmboHardwareInfo相对于%RES_START_ADDR% + %EMBO_USERS_OFFSET%的偏移
#define EMBO_HWIDS_OFFSET 0x3000
// EmboEncryptsInfo相对于%RES_START_ADDR% + %EMBO_USERS_OFFSET%的偏移
#define EMBO_ENCRYPTS_OFFSET 0x4000
// BOOT_ARGS相对于%RES_START_ADDR% + %EMBO_USERS_OFFSET%的偏移
#define EMBO_BOOTARG_OFFSET 0x5000
#define EMBO_EXT_OFFSET 0x6000
// Embo镜象文件详细相对于%RES_START_ADDR% + %EMBO_USERS_OFFSET%的偏移
#define EMBO_DETAIL_OFFSET 0x8000
// 为了向前兼容,Loadcepc5.0支持将解密串存放在Loadcepc4.2使用的内存区域中,以下3个宏定义了此功能
#define EMBO_OLD_MEM_ADD 0x1A0000 // 起始地址
#define EMBO_OLD_ENCRYPTS_MARK "MARKOFEMBOID.SN\0" // 解密信息标志
#define EMBO_OLD_ENCRYPTS_MARK_OFFSET 0x0100 // 解密信息标志相对于EMBO_OLD_MEM_ADD的偏移
#define EMBO_OLD_ENCRYPTS_OFFSET 0x0140 // 解密串相对于EMBO_OLD_MEM_ADD的偏移
#define EMBO_OLD_HWINFO_MARK "Embedded-Tech\0"
#define EMBO_OLD_HWINFO_MARK_OFFSET 0x0000
#define EMBO_OLD_HWINFO_OFFSET 0x0020
// 指定Embo相应数据的基本信息,如:Embo的指定ID,其它数据结构的偏移量等
typedef struct _EmboBaseInfo
{
unsigned char szEmboID[MAX_LEN_64]; // Embo的指定ID
unsigned char szHostIP[MAX_LEN_16];
unsigned long dwIsCheckID; // 指定Loadcepc是否获取硬件ID
unsigned long dwIsLoadReg; // 指定Loadcepc是否加载注册表文件(EMBOREG.REG)
unsigned long dwIsLoadEncryptString; // 指定Loadcepc是否从解密文件(EMBOID.SN)
unsigned long dwCurUserIndex; // 当前用户在EmboUserInfo中的索引号
unsigned char szCurrentPath[MAX_LEN_64]; // Loadcepc的当前启动路径
unsigned long dwReservedStartAddr; // Embo保留内存区域的起始地址
unsigned long dwReservedEndAddr; // Embo保留内存区域的结束地址
unsigned long dwCurUserInfoNum; /*当前的用户总数*/
unsigned long dwUserInfoOffset; /*EmboUserInfo相对于dwReservedStartAddr的偏移地址*/
unsigned long dwCurImageInfoNum; /*当前已加载的.bin文件总数*/
unsigned long dwImageInfoOffset; /*EmboImageInfo相对于dwReservedStartAddr的偏移地址*/
unsigned long dwCurHardwareInfoNum; /*当前已保存的硬件ID总数*/
unsigned long dwHardwareInfoOffset; /*EmboHardwareInfo相对于dwReservedStartAddr的偏移地址*/
unsigned long dwCurEncryptInfoNum; /*当前已保存的加密串总数*/
unsigned long dwEncryptInfoOffset; /*EmboEncryptInfo相对于dwReservedStartAddr的偏移地址*/
unsigned long dwBootArgsOffset; /*BOOT_ARGS相对于dwReservedStartAddr的偏移地址*/
unsigned long dwDetailRecordInfoOffset; // .bin文件的RecordInfo相对于dwReservedStartAddr的偏移地址
// 以下变量为Embo无盘网络电脑启动后恢复本机在服务器中的环境时使用
unsigned char szNCServerName[MAX_LEN_16]; // 目标服务器名
unsigned char szNCServerUser[MAX_LEN_16]; // 目标服务器的登陆名
unsigned char szNCServerPass[MAX_LEN_16]; // 目标服务器的登陆口令
unsigned char szNCServerDir[MAX_LEN_16]; // 目标服务器上的共享目录名
unsigned char szNCLocalDir[MAX_LEN_16]; // 本地计算机的映射目录名
unsigned long dwIsUserSpecifiedCRTC; // 是否由用户指定VESA的CRTC结构
unsigned long dwIsUserSpecifiedMemorySize; // 是否由用户指定Memory的大小
unsigned long dwMemorySize; // Memory的大小
unsigned long dwIsPureOS; // 控制是否加载 Wcopy 的目录
unsigned long dwHasEmboExt;
unsigned long dwEmboExtAddrOffset;
unsigned long dwEmboExtSize;
unsigned long dwIsUserMode;
unsigned long szEmboDWordRsv[MAX_LEN_32];
unsigned char szEmboStrRsv0[MAX_LEN_64];
unsigned char szEmboStrRsv1[MAX_LEN_64];
unsigned long dwDUpdatesIsNetwork; // DUpdates控制是否Network目录
unsigned char szDUpdatesRoot[MAX_LEN_64]; // DUpdates的根路径
unsigned char szDUpdatesServerName[MAX_LEN_16]; // DUpdates目标服务器名
unsigned char szDUpdatesServerUser[MAX_LEN_16]; // DUpdates目标服务器的登陆名
unsigned char szDUpdatesServerPass[MAX_LEN_16]; // DUpdates目标服务器的登陆密码
unsigned char szDUpdatesServerDir[MAX_LEN_16]; // DUpdates目标服务器上的共享目录名
unsigned char szDUpdatesLocalDir[MAX_LEN_16]; // DUpdates本地计算机的映射目录名
unsigned long dwDUpdatesWaitingTime; // DUpdates控制等待的时间。
unsigned long dwDUpdatesFlags; // DUpdates控制标识
unsigned long dwDUpdatesMask; // DUpdates控制标识的掩码
}EmboBaseInfo,*PEmboBaseInfo;
// 4096 bytes = 4Kbytes
// 用于保存一个用户的信息,通常被声明为一个不大于32个项的结构数组
typedef struct _EmboUserInfo
{
unsigned char szUserName[MAX_LEN_16]; // 用户名
unsigned char szUserDir[MAX_LEN_16]; // 主目录
unsigned char szUserPwd[MAX_LEN_16]; // 口令
unsigned long dwSize; // 此结构的大小
unsigned char szMachGuid[40]; // GUID
unsigned char szDescrption[36]; // 描述信息
}EmboUserInfo,*PEmboUserInfo;
// 用于保存一个已加载的.bin文件的相关信息,通常被声明为一个不大于32个项的结构数组
typedef struct _EmboImageInfo
{
unsigned long dwSize; // 此结构的大小
unsigned long dwImgAddress; // 加载到内存中的起始地址
unsigned long dwImgLength; // 文件的长度
unsigned long dwRecordSum; // 包含的记录总数
unsigned long dwEntryPoint; // 启动地址
unsigned long dwBuildDate; // 生成日期
unsigned char szFileName[MAX_LEN_16]; // 文件名
unsigned long dwIsShowProgressBar; // 加载时是否显示进度条
unsigned long dwIsLaunch; // 是否可启动
unsigned long dwIsSaveDetail; // 是否保存该文件的详细记录信息
unsigned char szSave[76]; // 保留空间,用于保证此结构大小为128Bytes
}EmboImageInfo,*PEmboImageInfo;
// 保存一个硬件的ID信息,用于Embo Windows CE启动后生成SN时使用,通常被声明为一个不大于32个项的结构数组
typedef struct _EmboHardwareInfo
{
unsigned char szMark[MAX_LEN_16]; // 硬件描述
unsigned char szID[MAX_LEN_64]; // 硬件ID号
unsigned long dwSize; // 此结构是大小
unsigned long dwIsChecked; // 此ID号是否已检查
unsigned char szSave[40]; // 保留空间,用于保证此结构大小为128Bytes
}EmboHardwareInfo,*PEmboHardwareInfo;
// 保存一个Embo解密信息,通常被声明为一个不大于32个项的结构数组
typedef struct _EmboEncryptInfo
{
unsigned char szMark[MAX_LEN_16]; // 解密信息描述
unsigned char szString[MAX_LEN_64]; // 解密串
unsigned long dwSize; // 此结构是大小
unsigned long dwIsLoadEncryptString; // 此解密串是否已加载
unsigned char szSave[40]; // 保留空间,用于保证此结构大小为128Bytes
}EmboEncryptInfo,*PEmboEncryptInfo;
/*.bin文件中每个记录的记录头部份*/
typedef struct _RecordInfo{
unsigned long dwAddress; /*记录的起始地址*/
unsigned long dwSize; /*记录的大小*/
unsigned long dwCheckSum; /*记录的校验和*/
}RecordInfo,*PRecordInfo;
#endif // _EMBOLOADER_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -