关于FlushViewOfFile的问题
大狗狗 2008-05-20 10:22:17 这两天学习<<windows核心编程>>内存映射文件这部分,书上说:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
为了提高速度,系统将文件的数据页面进行高速缓存,并且在对文件的映射视图进行操作时不立即更新文件的磁盘映像。如果需要确保你的更新被写入磁盘,可以强制系统将修改过的数据的一部分或全部重新写入磁盘映像中,方法是调用F l u s h Vi e w O f F i l e函数:
BOOL FlushViewOfFile(
PVOID pvAddress,
SIZE_T dwNumberOfBytesToFlush);
第一个参数是包含在内存映射文件中的视图的一个字节的地址。该函数将你在这里传递的地址圆整为一个页面边界值。第二个参数用于指明你想要刷新的字节数。系统将把这个数字向上圆整,使得字节总数是页面的整数。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
请问一下:
1 "对文件的映射视图进行操作时不立即更新文件的磁盘映像" 那么何时更新?我程序正常退出前一定会更新吧?如果程序意外结束(比如电脑死机)那是不是就可能无法将更改写入磁盘?
2 是不是只要程序不意外结束,我们就没使用FlushViewOfFile的必要?否则请问在什么情况下有必要使用它?