All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ASP.NET技术获取IP与MAC地址的方法_[Asp.Net教程]
C#中一维数组的使用
技巧:ASP.NET里的Session详细解释_.net资料_编程技术
Asp.net动态生成页面控件的办法_[Asp.Net教程]
asp.net2.0服务器控件之HyperLink控件
ASP.NET,2.0使用user,profile储存信息前,如何部署aspnetdb.mdf和连接_[Asp.Net教程]
C#根据条件搜索Infopath生成的XML数据_.net资料_编程技术
.NET,3.x新特性体验之扩展方法_.net资料_编程技术
PHP代码:得到客户端的IP_[PHP教程]
关于C#中的DLLImport_.net资料_编程技术
Reading number is top 10 pictures
美女浴室写真3
移民小国也实惠1
色狗系列
中国的阶级现状
Beautiful Japanese beauty(漂亮的日本美女)
NeedWallpaper5
人美胸美腿更美3
China telecom 114 spokesman MeiYanXu2
Discharge accidentally Actresses by the breast4
The little girl with long hair2
Download software ranking
Prostitutes diary
Popkart Cracked versions Mobile phone games
I'm come from Beijing1
C#编程思想
I for your crazy
linux高级编程
株洲本地在线棋牌游戏
matrix3
C#COM编程指南
Kung.Fu.Panda.2
aaa published in(发表于) 2014/7/19 0:09:44 Edit(编辑)
delphi内存映像的步骤

delphi内存映像的步骤

delphi内存映像的步骤

内存映像的步骤

在Win32 上的所有共享内存都依赖于Win32 的内存映像文件I/O 的支持。一个内存映像文件使用共享内存来提供公共的基于文件的共享数据。

内存映像文件I/O 是Win32 API 处理磁盘文件的一种方式。如果对虚拟内存不控制数据缓冲和内存缓冲,则当一个文件被映像到内存区时,从映像内存读写数据和从文件中读写数据会产生同样的效果。内存映像文件I/O 效率很高,且使用非常方便。内存映像文件I/O 允许两个或多个进程共享基于文件的数据。每个和共享有关的进程直接存取一组公共页。由于共享导致可用资源最很小,所以当大量的数据必须被共享时,通过内存映像文件I/O 共享就显得非常有用。

内存映像文件的支持需要3 个Windows 内核对象:文件、文件映像和视图。为了映像一个文件到内存,首先从磁盘打开一个文件,再建立映像文件,然后将映像文件连接到内存。为了在不同进程间使数据同步,它提供了一个基于磁盘文件的逻辑连接,最终通过一个数据地址指针来实现对数据块的访问。一个内存映像文件对象可以创建多个视图,它们可以分别存取文件的不同部分。

使用内存映像文件I/O 需遵循以下步骤。

1.打开磁盘文件

打开磁盘文件可采用CreateFile 或OpenFile 等函数。打开一个基于磁盘的文件,一般采用OpenFile()

函数,其原型如下:

function OpenFile(const lpFileName:LPCSTR;var lpReOpenBuff:TOFStruct;uStyle:UINT

):HFILE;stdcall;

POFStruct=^TOFStruct;

TOFSTRUCT=record

cBytes:Byte;

fFixedDisk:Byte;

nErrCode:Word;

Reserved1:Word;

Reserved2:Word;

szPathName:array[0..OFS_MAXPATHNAME-1] of CHAR;

end;

注意:OpenFile 的返回值为-1 时,表示打开文件失败。参数uStyle 定义了打开文件标示(OF_READ、OF_WRITE、OF_READWRITE 等)、文件被其他进程共享的文件方式(OF_SHARE_EXCLUTIVE、OF_SHARE_DENY_WRITE 等),以及文件打开时采取的动作(OF_CREATE、OF_DELETE、OF_EXIST 等)。在不再使用该文件时,记得调用函数CloseHandle。

2.创建文件映像对象

通过函数CreateFileMapping 创建文件映像对象,才能使用内存映像文件。CreateFileMapping 函数的第1 个参数使用上一步得到文件句柄,当然,也可以设置为$FFFFFFFF,这时文件映像对象是基于内存的,而不是基于文件的。lpszMapName 参数是给文件映像对象起的名字,必须确保其惟一性,因为与一个未知进程的名字冲突会产生非希望的共享。

除了CreateFileMapping 函数之外,还有两个函数可以操作文件映像对象,分别是OpenFileMapping和DuplicateHandle。

3.创建视图对象

创建视图对象需要调用MapViewOfFile()函数。

注意:可以在一个文件中创建多个视图,以便分别访问文件的不同部分。调用MapViewOfFile函数时需要传递视图在文件的起始位置偏移和要映射的字节数。




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.