关于 MapViewOfFile 的问题
大狗狗 2008-05-20 08:37:39 <<windows核心编程>>上说:
~~~~~~~~~~~~~~~~~~~~~
当创建了一个文件映射对象后,仍然必须让系统为文件的数据保留一个地址空间区域,并将文件的数据作为映射到该区域的物理存储器进行提交。可以通过调用M a p Vi e w O f F i l e函数来进行这项操作
PVOID MapViewOfFile(
HANDLE hFileMappingObject,
DWORD dwDesiredAccess,
DWORD dwFileOffsetHigh,
DWORD dwFileOffsetLow,
SIZE_T dwNumberOfBytesToMap);
~~~~~~~~~~~~~~~~~~~~~
该函数可以一次映射整个文件,也可只映射文件的一部分。如果一个文件较大达数百M,我要全部映射的话,会不会给系统造成较大负担特别是对内存的占用?因为前面说“将文件的数据作为映射到该区域的物理存储器进行提交”。
我目前认为应该不会造成多大负担,因为提交物理存贮器并不是要立即将文件数据转入内存。只有当用户频繁、大量对映射到进程空间中的文件视图进行操作时,系统才需要较多内存。因此可以一次映射整个文件,而不必分批映射。
请大家发表下你们的看法:)