WINCE下创建多个文件分区

原创 2011年01月11日 22:22:00

********************************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

做这些修改更新系统后,真的可以看到kandikandi2这两个盘符,可是当我把A.exe拷贝到kandi文件夹中,而把B.exe拷贝到kandi2文件夹中,然后重启发现kandikandi2文件夹中都有A.exeB.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下使用SQLite数据库

SQLite是一个开源的跨平台的轻型数据库,WINCE本身也有一个自带的数据库SQLCE ,但占用的资源会比较大。最近项目中考虑用到 SQLite,因此特别研究了一下,下面介绍一下具体的移植方法。 ...
  • xuqiang918
  • xuqiang918
  • 2014年04月04日 09:24
  • 7304

Wince6.0 对文件、文件夹的操作

2011-07-15 11:58 Wince6.0 操作文件CFile 2011-03-04 13:40 typedef struct _CSiteNameInfo {  TCHAR SiteI...
  • q472599451
  • q472599451
  • 2013年07月08日 11:57
  • 4731

Qt应用如何移植到Windows CE系统上

在刚学习Qt时,一直以为Qt良好的跨平台移植性会成为很火的编程语言,可是随着诺基亚的衰落发现自己错了,而且它的移植性也没有想象中的那么好,要不是毕业设计需要用到,本人早已放弃,下面我将一个多月时间查阅...
  • best2012power
  • best2012power
  • 2015年11月17日 22:30
  • 1160

能创建多个虚拟分区以储存私密文件的软件

  • 2013年06月10日 09:38
  • 852KB
  • 下载

]在wince50里创建多个文件分区的方法

注意: 创建多个文件分区与C:\WINCE500\PLATFORM\SMDK2443\Src\Bootloader\Eboot\nand.cpp和C:\WINCE500\PUBLIC\COMMON\...
  • xiaolei05
  • xiaolei05
  • 2012年05月09日 17:15
  • 428

WINCE NAND FLASH eboot 创建多个分区

方法一: 1.      三星原厂两个分区的实现方式 1.1  WriteOSImageToBootMedia函数  // create extended partition in what...
  • xingyuan1hao
  • xingyuan1hao
  • 2013年08月15日 11:41
  • 807

Wince MFC OLE DB SQLCE数据库访问技术(二):嵌入式目标平台创建本地数据库sdf文件

前言 上一节已经讲述了嵌入式目标平台上安装sqlCE,本章将介绍如何在目标平台上创建本地数据库sdf文件。 备注:博客中所有关于Wince MFC OLE DB   SQLCE数据库访问技术的文章...
  • shejiannan
  • shejiannan
  • 2013年04月01日 14:19
  • 769

wince串口驱动-串口调用流程:先创建注册表,用文件函数打开:

串口调用流程:先创建注册表,用文件函数打开:     // SPL-test-1Dlg.cpp : 实现文件 // #include "stdafx.h" #include "SPL-...
  • quanguoheme
  • quanguoheme
  • 2012年02月15日 16:39
  • 1523

OS课程所有的试验 处理及调度 可变分区存储管理,设备管理,文件管理,存储管理,进城创建与撤销,进程同步,及综合实验的源码 相关的实验报告

  • 2010年07月11日 00:22
  • 3.17MB
  • 下载

java 在指定的目录下创建多个临时文件

  • 2010年06月21日 08:44
  • 59KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WINCE下创建多个文件分区
举报原因:
原因补充:

(最多只允许输入30个字)