WINCE下创建多个文件分区
来源:互联网 发布:知乎回复越来越长 编辑:程序博客网 时间:2024/04/28 14:46
作者:xiaolei05
转自:http://blog.csdn.net/xiaolei05/article/details/8331351
********************************LoongEmbedded********************************
作者:LoongEmbedded(kandi)
时间:2011.01.11
类别:WINCE驱动开发
********************************LoongEmbedded********************************
系统:WINCE6.0+S3C2443
实现分区的是在eboot/nand.cpp下面的WriteOSImageToBootMedia中实现的,
1.创建一个分区的代码如下所以
图1
关于这个函数的详细介绍,可以参考http://blog.csdn.net/LoongEmbedded/archive/2010/11/02/5981033.aspx,上面的代码就是在基于nandflash的剩余空间(除去存放系统映像占用的一部分空间)创建FAT32的文件分区。
2.创建两个分区
怎么实现呢?我在实现一个分区并且在系统启动后显示kandi这个盘符的platform.reg中下面的注册表信息
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/NANDFLASH]
"Prefix"="DSK"
"Dll"="smflash.dll"
"Index"=dword:1
"Order"=dword:0
"Profile"="NANDFLASH"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
IF IMGHIVEREG
"Flags"=dword:00001000
ENDIF ;IMGHIVEREG
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/NANDFLASH/FATFS]
"Flags"=dword:14
"Folder"="kandi"
"FormatExfat"=dword:1
"CheckForFormat"=dword:1
"EnableWriteBack"=dword:1
IF IMGHIVEREG
"MountAsBootable"=dword:1
ENDIF ;IMGHIVEREG
在上面的注册表的基础上添加下面的内容:
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/NANDFLASH2]
"Prefix"="DSK"
"Dll"="smflash.dll"
"Index"=dword:9
"Order"=dword:0
"Profile"="NANDFLASH2"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
IF IMGHIVEREG
"Flags"=dword:00001000
ENDIF ;IMGHIVEREG
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/NANDFLASH2/FATFS]
"Flags"=dword:14
"Folder"="kandi2"
"FormatExfat"=dword:1
"CheckForFormat"=dword:1
"EnableWriteBack"=dword:1
IF IMGHIVEREG
"MountAsBootable"=dword:1
ENDIF ;IMGHIVEREG
做这些修改更新系统后,真的可以看到kandi和kandi2这两个盘符,可是当我把A.exe拷贝到kandi文件夹中,而把B.exe拷贝到kandi2文件夹中,然后重启发现kandi和kandi2文件夹中都有A.exe和B.exe,说明没有真正实现两个分区,还只是同一个分区,后来想到到在eboot/nand.cpp下面的WriteOSImageToBootMedia中实现,就加参考实现一个分区的代码做了一下修改
图2
但是这样实现也只能看到kandi一个盘符,问题出现在哪里呢?原来是调用BP_OpenPartition函数会调用GetPartitionTableIndex函数,来识别BP_OpenPartition创建的文件分区是否已经创建过,如果创建过,WINCE50就不会再创建新的同种类型的文件分区。因为GetPartitionTableIndex函数的缘故,所以理论上同种类型的文件分区只能创建一个,但是也可以通过修改第二个BP_OpenPartition函数的第4个参数(由TRUE改为FALSE)再创建一个两个同种类型的文件分区,如下所示
图3
经过图3的修改,我们更新系统启动后可以看到下面的两个盘符:
图4
3.实现三个分区
有了上面的基础之后,我们不难实现3个分区,代码如下:
图5
修改更新系统之后,可以看到3个盘符:
图6
4隐藏分区
实现如下:
图7
这样的系统起来后就看不到分区了
图8
参考链接:
在wince50里创建多个文件分区的方法
http://hi.baidu.com/galloncity/blog/item/c6553700b67d7c081c958336.html
- WINCE下创建多个文件分区
- WINCE下创建多个文件分区
- WINCE下创建多个文件分区
- WINCE下创建多个文件分区
- WINCE NAND FLASH eboot 创建多个分区
- ]在wince50里创建多个文件分区的方法
- Linux下使用文件创建虚拟分区
- [转]在wince50里创建多个文件分区的方法
- wince NandFlash分区实现 MBR创建过程
- WINCE下如何虚拟多个串口
- WINCE下如何虚拟多个串口
- WINCE下如何虚拟多个串口
- WinCE下自动启动多个应用程序
- Wince下 写文件
- WinCE 在连续创建约 1000 个文件后,再创建文件失败。这是为什么???
- wince下创建不规则窗口
- WINCE下窗口的创建
- WINCE下窗口的创建
- 基于WINCE6.0系统,SD卡和flash作为PC机的U盘
- YouTube架构学习体会
- 有向图的DFS遍历及判断是否有环(算法导论)
- UVA 题目409 - Excuses, Excuses!
- 基础复习
- WINCE下创建多个文件分区
- 对jQuery的事件绑定的一些思考
- 网页内容爬取:如何提取正文内容
- 回顾MySpace架构的坎坷之路
- wince 下USB 虚拟多个串口问题
- iOS网络编程-ASIHTTPRequest异步请求
- 随机梯度下降(Stochastic Gradient Descend, SGD)算法在大规模数据机器学习问题的使用
- WinCE中将调试信息写入文件的方法
- 爱上多线程——重复初始化问题