Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1348868
  • 博文数量: 946
  • 博客积分: 52360
  • 博客等级: 大将
  • 技术积分: 13080
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-07 17:31
文章分类

全部博文(946)

文章存档

2011年(1)

2008年(945)

我的朋友

分类: C/C++

2008-08-07 17:42:29

下载本文示例代码
下载源代码

本文介绍利用内存映射文件修改大文件:在大文件内存前加入一段数据,若要使用内存映射文件,必须执行下列操作步骤:

  1. 创建或打开一个文件内核对象,该对象用于标识磁盘上你想用作内存映射文件的文件;
  2. 创建一个文件映射内核对象,告诉系统该文件的大小和你打算如何访问该文件;
  3. 让系统将文件映射对象的全部或一部分映射到你的进程地址空间中;

当完成对内存映射文件的使用时,必须执行下面这些步骤将它清除:

  1. 告诉系统从你的进程的地址空间中撤消文件映射内核对象的映像;
  2. 关闭文件映射内核对象;
  3. 关闭文件内核对象;

  下面将用一个实例详细介绍这些操作步骤,(本实例的目的就是将一个文件A其内容前面加入一些内容存入文件B,我想大家在程序开发当中会遇到这种情况的)。

一、我们打开关于A文件内核对象,并创建一个关于B文件的内核对象

若要创建或打开一个文件内核对象,总是要调用CreateFile函数:

HANDLE CreateFile(

PCSTR pszFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

PSECURITY_ATTRIBUTES psa,

DWORD dwCreationDisposition,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile);

CreateFile函数拥有好几个参数,这里只重点介绍前3个参数,即pszFileName,dwDesiredAccess和dwShareMode。

你可能会猜到,第一个参数pszFileName用于指明要创建或打开的文件的名字(包括一个选项路径),第二个参数dwDesiredAccess用于设定如何访问该文件的内容,可以设定下表所列的4个值中的一个。

下载本文示例代码
含义
0 不能读取或写入文件的内容,当只想获得文件的属性时,请设定0
GENERIC_READ 可以从文件中读取数据
GENERIC_WRITE 可以将数据写入文件
GENERIC_READ|GENERIC_WRITE 可以从文件中读取数据,也可以将数据写入文件
阅读(267) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~