可以通过MapViewOfFile映射大于2G的文件吗?(100分)

C

chcw

Unregistered / Unconfirmed
GUEST, unregistred user!
如果映射成功,那么返回的指针只有4个字节,如何用它来表示大于2G的文件地址呢?
 
参见这里
http://forum.vclxx.org/topic.asp?TOPIC_ID=10812&FORUM_ID=9&CAT_ID=2&Topic_Title=%BD%D0%B0%DD+MapViewOfFile%28+%29%A4%A4%AA%BA%B0%D1%BC%C6&Forum_Title=WinAPI
 
MapViewOfFile映射的是一个由操作系统页文件支持的特殊逻辑映象文件,
而不是由实际操作系统的文件支持的逻辑映象文件。

var
MapFile: THandle;
MapFilePointer: Pointer;

MapFilePointer:=MapViewOfFile(MapFile,File_Map_All_Access,0,0,0);//访问整个映象文件,最后一个参数要为0
MEMO.Text:=PChar(MapFilePointer);//读出所有内容
 
各位,我的意思是如果我映射的文件是10G的,那么调用MapViewOfFile后得到的指针,如果
要读8G处的一个字节应该怎么做呢?
 
mapViewOfFile 的第三和第四个参数就是文件的偏移大小. 和起来就是64bit的地址啦.

返回的指针就是只有32位的. 因为win32可访问的内存只有4GB . 所以要访问10G的文件的话,

只要中途多次修改映射的偏移大小就可以了.
 
接受答案了.
 
顶部