UnmapViewOfFile 函数 (memoryapi.h)
从调用进程的地址空间中取消映射文件的映射视图。
语法
BOOL UnmapViewOfFile(
[in] LPCVOID lpBaseAddress
);
参数
[in] lpBaseAddress
指向要取消映射的文件的映射视图基址的指针。 此值必须与之前调用 MapViewOfFile 系列中的函数之一返回的值相同。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
取消映射文件的映射视图会使视图在进程的地址空间中占用的范围失效,并使该范围可用于其他分配。 它删除属于进程工作集的每个未映射虚拟页面的工作集条目,并减小进程的工作集大小。 它还会递减相应物理页的共享计数。
未映射视图中修改的页面在共享计数达到零之前不会写入磁盘,或者换而言之,直到从共享页面的所有进程的工作集中取消映射或剪裁这些页面。 即便如此,修改后的页面也会“懒洋洋地”写入磁盘:也就是说,修改可以在内存中缓存,并在以后写入磁盘。 为了在电源故障或系统崩溃时最大程度地降低数据丢失的风险,应用程序应使用 FlushViewOfFile 函数显式刷新修改后的页面。
尽管应用程序可能会关闭用于创建文件映射对象的文件句柄,但系统会保持打开相应的文件,直到文件的最后一个视图未映射。 最后一个视图尚未取消映射的文件保持打开状态,没有共享限制。
在 Windows Server 2012 中,以下技术支持此函数。
技术 | 支持 |
---|---|
服务器消息块 (SMB) 3.0 协议 | 是 |
SMB 3.0 透明故障转移 (TFO) | 是 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 是 |
群集共享卷文件系统 (CSV) | 是 |
弹性文件系统 (ReFS) | 是 |
示例
有关示例,请参阅 在文件中创建视图。
要求
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | memoryapi.h (包括 Windows.h、Memoryapi.h) |
Library | onecore.lib |
DLL | Kernel32.dll |
另请参阅
内存管理函数