工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 移动开发 > 正文
Platform Builder实践之文件系统
[文章信息]
作者:付林林
时间:2004-10-26
出处:天极网
责任编辑:方舟
[文章导读]
随着CE的发展,对象存储(Object Store)的作用越来越小,而大容量的永久存储设备被越来越多地采用
advertisement
热点推荐
· 真没想到VB也可以这样用之指针技术
· 禁止QQ登录的方法
· 给你的XML文件做个数字签名
· ImageReady制作“焰火”小动画
· Java加密和数字签名编程快速入门
[正文]
  随着CE的发展,对象存储(Object Store)的作用越来越小,而大容量的永久存储设备被越来越多地采用,这一章将针对CE的文件系统阐述相关的知识,让PB开发者除了能够加入对永久存储设备的支持,还能做一些优化。记得在以前讲过的文章中提到了如何在PB中向定制的内核加入对硬盘、光驱的支持(包括ATA设备驱动和各种文件系统),在这里就不再重复了。

  CE提供了三种文件系统,基于ROM的文件系统、基于RAM的文件系统、FAT文件系统。FAT文件系统使用的范围最广,能够应用在ATA设备、Flash存储设备、SRAM存储设备上,另外CE还允许开发者自己编写并注册一套文件系统,只要接口符合Win32文件系统API即可。

  CD/UDFS 文件系统

  这两种文件系统被用于读取CD、DVD等。除了通过在PB的“catalog”中加入这个文件系统外,还可以在PB中添加SYSGEN_UDFS环境变量来实现。CDFS和UDFS在注册表中的注册信息如下:

; Default values for udfs. These can be overridden per profile.

[HKEY_LOCAL_MACHINE\System\StorageManager\UDFS]

"FriendlyName"="CDFS/UDFS FileSystem"

"Dll"="udfs.dll"

"Paging"=dword:1

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\CDProfile]

"Name"="IDE CDROM/DVD Drive"

"Folder"="CDROM Drive"

"DefaultFileSystem"="UDFS"

"PartitionDriver"=""

  上面注册表信息在文件common.reg中。注册表数据是从上至下有效,也就是说下面的数据可以覆盖上面的数据。从注册表数据可以看出udfs.dll包含了UDFS文件系统的驱动程序,CDROM的驱动器名为”CDROM Drive”,采用的文件系统为UDFS,没有分区驱动程序。如果我们要访问CDROM的目录或者文件就要在名字前加”\CDROM Driver\”。注意,可能你的common.reg文件中的数据在”Flolder”处不同于上面,比如为"Folder"=LOC_STORE_CD_FOLDER,那么你可以直接按照上面数据更改,或者在*.str文件中查找LOC_STORE_CD_FOLDER,找到这个ID对应的字符串再更改(查找到的文件可能很多,应查找以本国家码为目录名的目录)。

  FAT文件系统

  除了安全性外,FAT文件系统是一个很优秀的文件系统,很适合在嵌入式设备中使用。CE也把FAT作为外部存储设备的通用文件系统。添加FAT文件系统的环境变量为SYSGEN_FATFS。随便列出CE提供的操作FAT文件系统的函数:

  DefragVolume 碎块整理,在碎块整理前先进行磁盘扫描。

  DefragVolumeUI 同上,但是包含一个选项对话框。

  FormatVolume 按要求格式化分区。

  FormatVolumeUI 同上,但是包含一个操作对话框。

  ScanVolume 扫描一个分区的FAT和目录。

  ScanVolumeUI 同上,但是包含一个操作对话框。

  FAT文件系统在注册表中的注册信息如下:

; Default values for fatfs. These can be overridden per profile

[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]

"FriendlyName"="FAT FileSystem"

"Dll"="fatfsd.dll"

"Flags"=dword:00000024

"Paging"=dword:1

"CacheSize"=dword:0

  从注册表数据可以看出fatfsd.dll包含了FAT文件系统的驱动程序。对”Flags”值的描述如下:

标志 描述
FATFS_UPDATE_ACCESS 0x00000001 更新访问时间
FATFS_DISABLE_AUTOSCAN 0x00000004 不能自动调用ScanVolume
FATFS_VERIFY_WRITES 0x00000008 检验所有写操作
FATFS_ENABLE_BACKUP_FAT 0x00000010 备份FAT表
FATFS_FORCE_WRITETHROUGH 0x00000020 让系统可以直接将任何缓冲区中的数据写到磁盘上,这样系统将加快写数据到磁盘的速度
FATFS_DISABLE_AUTOFORMAT 0x00000040 禁止自动格式化未格式化的分区
FATFS_DISABLE_COMPCHECK 0x00000080 禁止自动检测压缩分区

  “Paging”用于指定是否能够分页,值为1可以分页,0不能分页。“CacheSize”用于指定FAT文件系统缓冲区大小。具体的值是用16进制数表示的扇区数量。假如”CacheSize”的值为400,那么用于FAT缓冲的字节数为1024 * 512 = 512KB。

  存储管理器默认的文件系统是FAT文件系统,所以硬盘、USB、PCMCIA等存储设备的注册表信息默认都没有指定文件系统。

  文件系统过滤器

  文件系统过滤器是一个DLL。存储管理器在调用文件系统API之前先调用文件系统过滤器的过滤函数,通过过滤函数能够实现对文件数据的加密、解密、压缩甚至扫描文件是否存在病毒。实现文件系统过滤器的步骤是先编写DLL,CE提供了例子程序,位于%_WINCEROOT%\Public\Common\OAK\Drivers\FSD下。添加代码之后再修改注册表数据。注册表位置如下:

  1.HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\ProfileName\FileSystem\Filters

  2.HKEY_LOCAL_MACHINE\System\StorageManager\FileSystem\Filters

  3.HKEY_LOCAL_MACHINE\System\StorageManager\Filters

  注册表键及其键值例子如下:

"Dll" := "fsdspy.dll" ////DLL名称

Order = 0 ////顺序

  这里ProfileName是指Profile的名称,比如HDProfile。FileSystem是指具体的文件系统,如FATFS, UDFS, RELFSD。数字1指出的文件系统过滤器对指定存储硬件的文件系统有效;数字2指出的文件系统过滤器对指定的文件系统有效;数字3为所有文件系统多有效。

  存储管理器

  存储管理器 (Storage Manager) 是 Windows CE .NET 的新功能,主要管理存储设备驱动程序、文件系统驱动程序、分区驱动程序、文件系统过滤器。存储管理器根据注册表数据来加载需要的模块。具体注册表数据如下:

[HKEY_LOCAL_MACHINE\System\StorageManager]

"Dll"="fsdmgr.dll"

"PNPUnloadDelay"=dword:1000

  fsdmgr.dll包含存储管理器的代码。”PNPUnloadDelay”是指存储管理器在接收到即插即用设备的卸载通知后的延时时间。具体存储管理器需要管理的存储设备的注册表信息在HKEY_LOCAL_MACHINE\System\StorageManager\Profiles下。例如硬盘的注册表信息如下:

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\HDProfile]

"Name"="IDE Hard Disk Drive"

"Folder"="Hard Disk"

"AutoMount"=dword:1

"AutoPart"=dword:0

"AutoFormat"=dword:0

"MountFlags"=dword:0

"FileSystem"="fatfsd.dll"

"PartitionDriver"="mspart.dll"

  “Name”指名称;”Folder”指目录名,可以在此更改目录名称;”AutoMount”指如果检测到分区后就自动安装文件系统;”AutoPart”指如果没有分区则自动将最大可用空间划分成一个分区;”AutoFormat”指如果没有格式化则自动格式化;”FileSystem”指定这个存储设备采用的文件系统,如果不指定就采用默认的文件系统;”PartitionDriver”指定分区驱动程序;”MountFlags”指文件系统如何被安装。值为1指定一个隐藏文件系统,如果文件系统被隐藏,那么这个文件系统将不会被查找文件的API发现,但是如果指定文件的绝对路径,还是可以访问的。值为2指定当前文件系统能够包含系统注册表。一个存储设备第一个分区将包含基于HIVE的系统注册表(关于基于HIVE的注册表见以前讲过的文章)。值为4指定这个文件系统作为整个文件系统的根(\),这里要说明一下,CE默认对象存储作为整个文件系统的根(\),当在根下放置一个文件时,例如\a.dat,这个文件实际存放在对象存储中。如果指定其它文件系统作为根,那么文件将存放在这个文件系统所在的存储设备中。值为8指定当指定值为4时隐藏ROM。

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • Platform Builder实践之拾遗补缺
  • Platform Builder实践之配置文件
  • Platform Builder实践之编译
  • Platform Builder实践之运行环境
  • 民营家电商排队造手机 设备商全面杀入
  • 英特尔澄清杨旭任职传闻 官方没宣布此消息
  • 国资委河北密制联通拆分方案
  • 垃圾邮件害人害企害国 清除垃圾邮件不手软
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索