创建文件视图

【勇芳软件工作室】汉化HomePreviousNext

要将数据从文件映射到进程的虚拟内存,必须创建该文件的视图。MapViewOfFileMapViewOfFileEx函数使用由CreateFileMapping 返回的文件映射对象句柄,以在进程的虚拟地址空间中创建该文件或该部分文件的视图。如果访问标志与CreateFileMapping创建文件映射对象时指定的访问标志冲突,则这些函数将失败。

MapViewOfFile函数返回一个指向文件视图的指针。通过取消引用MapViewOfFile中指定的地址范围内的指针,应用程序可以从文件中读取数据并将数据写入文件。写入文件视图会导致对文件映射对象的更改。对磁盘上文件的实际写入由系统处理。在文件映射对象写入时,实际上并不传输数据。相反,大部分文件输入和输出(I / O)被缓存以提高一般的系统性能。应用程序可以通过调用FlushViewOfFile功能来强制系统立即执行磁盘事务来覆盖此行为。

MapViewOfFileEx功能与MapViewOfFile功能完全相同,只是允许进程在【lpvBase】参数中指定进程虚拟地址空间中文件视图的基址。如果指定地址空间不足,则调用失败。因此,如果必须在多个进程中将文件映射到相同的地址,则进程应协商适当的地址。

Windows NT: 【lpvBase】参数必须是系统内存分配粒度的整数倍,否则调用失败。要获取系统的内存分配粒度,请使用GetSystemInfo功能,其中填写SYSTEM_INFO 结构的成员。

Windows 95:在Windows 95下,地址被舍入到系统内存分配粒度的最接近的整数倍。对于后续文件视图,如果指定的地址与Windows 95映射文件视图的地址不匹配,MapViewOfFileEx将失败。

应用程序可以从同一个文件映射对象创建多个文件视图。文件视图的大小可以与导出它的文件映射对象大小不同,但它必须小于文件映射对象。由【dwOffsetHigh】【dwOffsetLow】参数MapViewOfFile指定的偏移量必须是系统的分配粒度的倍数。