Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1569171
  • 博文数量: 884
  • 博客积分: 52280
  • 博客等级: 大将
  • 技术积分: 13060
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-06 09:46
文章分类

全部博文(884)

文章存档

2008年(884)

我的朋友

分类: C/C++

2008-08-06 09:59:58

下载本文示例代码
  随着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 禁止自动检测压缩分区
阅读(168) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~