⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emboloader.h

📁 1,wince下做的导入注册表的程序.
💻 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 + -