超过1G的内存映射 ( 积分: 100 )

  • 主题发起人 主题发起人 denglijunchen
  • 开始时间 开始时间
D

denglijunchen

Unregistered / Unconfirmed
GUEST, unregistred user!
内存映射,我有一个程序,文件超过1G就不行了.有谁能提供我一个把文件分开来映射的例子吗,或者能够大文件映射的例子也行,太感谢了
 
需要作两个设置<br>第一,操作系统必须是Window2000服务器操作系统或者Windows&nbsp;XP以上,<br>在boot.ini文件里面,&nbsp;加入/3GB<br>第二,修改应用程序,进入大内存模式,<br>也可以在工程文件里面加入&nbsp;{$SETPEFLAGS&nbsp;IMAGE_FILE_LARGE_ADDRESS_AWARE}<br><br>如果还不行,那么32位下应该没有办法了。<br>估计不出意外,可以到达1.5G以上。<br>我成功过。<br>还有,内存映射文件,CreateFileMapping的时候,不要指定文字共享,否则也会受到更加严格的大小限制。
 
搞不定,可否提供源码给我谢谢了
 
如果哪位大哥大姐有这样的例子源码可以发给到我邮箱,,太感谢了,我急用.
 
我的邮箱地址是lijun87122@126.com
 
我以前试过创建,读写4G的映射文件,win98系统,代码没特别,网上的随便找的,只是<br>改文件大小为4G,创建要花几分钟,读写则很快,比普通读写文件快,普通读写文件有时要全部读进内存,所以慢,&nbsp;代码现在忘了。你是不是把视图搞得太大?
 
FH:=FileOpen(Edit2.Text,fmOpenRead);<br>MH:=CreateFileMapping(FH,nil,Page_ReadOnly,0,FileSize,nil);<br>CloseHandle(FH);<br>MP:=MapViewOfFile(MH,File_Map_Read,0,0,FileSize);<br>CloseHandle(MH);&nbsp;&nbsp;这是我的传输端的代码<br>FH1:=FileCreate('Files/'+FileName);<br>FileClose(FH1);<br>FH1:=FileOpen('Files/'+FileName,fmOpenreadWrite);<br>FH2:=CreateFileMapping(FH1,nil,Page_ReadWrite,0,size,nil);<br>CloseHandle(FH1);<br>FileMapPointer:=MapViewOfFile(FH2,File_Map_All_Access,0,0,size);&nbsp;这是接收端的代码,看下什么地方有错误,为什么就是超过1G大的文件就不行呢
 
后退
顶部