搜索
您的当前位置:首页WinCE文件

WinCE文件

来源:爱问旅游网
WinCE实训课题IV

WinCE文件系统和文件系统

一. 目的

1.了解Windows CE文件管理的基本原理。 2.掌握Windows CE文件操作基本方法。

二. WinCE文件系统简介 1. 对象存储

Windows CE 提供了三种类型的文件系统:基于 RAM 的文件系统、基于 ROM 的文件系统、以及用于 支持 ATA(Advanced Technology Attachment)设备和 SRAM 卡等外围存储设备的FAT文件系统。其中, 前两种文件系统属于Windows CE 的内置文件系统,后者属于可安装文件系统。另外,用户也可以编写自己的文件系统并在注册表中注册使用。不过,不论存储设备属于何种类型,所有对文件系统的访问都是通过Win32 API 完成的,实现Windows CE 设备无关的文件访问。

Windows CE 默认使用 RAM 存储设备,被称为对象存储(object store)。对象存储包含三部分:文件系统,数据库以及系统注册表。文件系统,注册表以及数据库不一定要驻留在对象存储里,它可以存放在ROM或是外围存储设备中。这样即使系统掉电后,注册表,文件系统以及数据库的数据也不会丢失。 2. 存储管理器

硬盘,CF 卡等存储设备在Windows CE中属于外围存储设备,对这些外围存储设备以及它们使用的文件系统和块设备驱动程序的管理都是由存储管理器负责的。存储管理器的功能由系统中fsdmgr.dll 模块实现,它包含块设备驱动程序管理器、分区管理器以及文件系统驱动程序管理器。 存储管理器是一个分层结构,一次完整的磁盘 I/O 操作必需经过存储管理器的各个层。首先到达的是过滤器层,它的功能是加密、压缩和病毒扫描等工作。之后到达的是文件系统驱动程序,文件系统驱动程序层对参数进行格式化,将文件名转换为块设备驱动程序可以识别的设备地址。在这之后,就可以经分区管理器或直接交由块设备驱动程序完成最终的 I/O 操作。

3. 文件系统驱动程序

文件系统驱动程序的作用是向用户提供一个按文件名访问的文件系统接口,它建立在块设备驱动程序之上, 完成了对块设备驱动的进一步抽象,把毫无规律的数据块组织成文件,

1

WinCE实训课题IV

提供文件操作的函数接口。

Windows CE 支持大多数 Windows 桌面平台上使用的文件 I/O 函数,比如 CreateFile、ReadFile、WriteFile、和CloseHandle 等Win32 API。同时,Windows CE 仍然遵循使用句柄对文件进行访问的方法。

分区驱动程序管理管理存储设备的分区,并负责分区的装载和卸载,Windows CE 可以同时支持多个分区驱动程序,但是对一个指定的存储设备来讲只能使用一个分区驱动程序,由它解释设备上的所有分区。

块设备驱动主要是提供对存储设备的分块操作, 块的大小一般是固定的, 常用的是 512 字节、 1KB 字节、 2KB 字节和 4KB 字节。块设备驱动程序向上层输出一个流接口,应用程序通过 CreateFile 和 ReadFile这些标准的文件系统 API 对块设备进行访问。

三. 课题内容

实现一个简单的班级名单浏览器。

四. 说明与提示

(一)班级名单浏览器 1. 创建工程 :

使用 EVC 创建FileOperation 工程,界面如下图所示:

2

WinCE实训课题IV

2. 文本编辑框和组合框显示一条学生记录的各个字段; 3. 按钮实现名单浏览,以及编辑、修改记录的功能; 4. 关键数据结构和相关代码:

1) 使用定长记录存放学生的信息,同时,记录各字段长度也固定:

typedef struct _CStudentData {

TCHAR stuID[7]; // studentID TCHAR name[21]; // name TCHAR gender[7]; // sex

TCHAR birth[11]; // birthdate TCHAR classNo[21]; // class } CStudentData;

2)使用文件存放学生名单:

文件名:

const LPCTSTR STUFILEPATH = _T(\"\\\\My Documents\\\\student.dat\");

读文件中的记录: CFile stuFile;

CStudentData studentData; DWORD dwRead;

ZeroMemory( &studentData,sizeof(studentData) );

if ( stuFile.Open( STUDENTFILEPATH, CFile::modeRead) ) // 打开文件成功 {

dwRead = stuFile.Read( &studentData, sizeof(studentData) ); // 读一条记录 if (dwRead != 0 ) { … } // 读记录成功 else { … } } stuFile.Close(); // 关闭文件

5. 在内存中采用什么数据结构存放一个班级全部学生的信息, 可以很方便地对这些记录进行编辑和修改?特别是要很方便地删除一个学生?

3

WinCE实训课题IV

6. 编译应用程序通过ActiveSync拷贝到目标平台运行。出现类似下图的界面:

4

因篇幅问题不能全部显示,请点此查看更多更全内容

Top