关于VB内存映射文件的使用

合集下载

内存映射文件(专门读写大文件)

内存映射文件(专门读写大文件)

内存映射⽂件(专门读写⼤⽂件)引⾔ ⽂件操作是应⽤程序最为基本的功能之⼀,Win32 API和MFC均提供有⽀持⽂件处理的函数和类,常⽤的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。

⼀般来说,以上这些函数可以满⾜⼤多数场合的要求,但是对于某些特殊应⽤领域所需要的动辄⼏⼗GB、⼏百GB、乃⾄⼏TB的海量存储,再以通常的⽂件处理⽅法进⾏处理显然是⾏不通的。

⽬前,对于上述这种⼤⽂件的操作⼀般是以内存映射⽂件的⽅式来加以处理的,本⽂下⾯将针对这种Windows核⼼编程技术展开讨论。

内存映射⽂件概述 内存⽂件映射也是Windows的⼀种内存管理⽅法,提供了⼀个统⼀的内存管理特征,使应⽤程序可以通过内存指针对磁盘上的⽂件进⾏访问,其过程就如同对加载了⽂件的内存的访问。

通过⽂件映射这种使磁盘⽂件的全部或部分内容与进程虚拟地址空间的某个区域建⽴映射关联的能⼒,可以直接对被映射的⽂件进⾏访问,⽽不必执⾏⽂件I/O操作也⽆需对⽂件内容进⾏缓冲处理。

内存⽂件映射的这种特性是⾮常适合于⽤来管理⼤尺⼨⽂件的。

在使⽤内存映射⽂件进⾏I/O处理时,系统对数据的传输按页⾯来进⾏。

⾄于内部的所有内存页⾯则是由虚拟内存管理器来负责管理,由其来决定内存页⾯何时被分页到磁盘,哪些页⾯应该被释放以便为其它进程提供空闲空间,以及每个进程可以拥有超出实际分配物理内存之外的多少个页⾯空间等等。

由于虚拟内存管理器是以⼀种统⼀的⽅式来处理所有磁盘I/O的(以页⾯为单位对内存数据进⾏读写),因此这种优化使其有能⼒以⾜够快的速度来处理内存操作。

使⽤内存映射⽂件时所进⾏的任何实际I/O交互都是在内存中进⾏并以标准的内存地址形式来访问。

磁盘的周期性分页也是由操作系统在后台隐蔽实现的,对应⽤程序⽽⾔是完全透明的。

内存映射⽂件的这种特性在进⾏⼤⽂件的磁盘事务操作时将获得很⾼的效益。

使用内存映射文件处理大文件应用示例

使用内存映射文件处理大文件应用示例

使用内存映射文件处理大文件应用示例在许多应用程序中,处理大文件可能是一项具有挑战性的任务。

传统的文件操作方式会占用大量的内存,并且读取和写入过程也可能非常缓慢。

为了解决这个问题,许多开发人员开始使用内存映射文件来处理大文件。

本文将通过一个示例来介绍如何使用内存映射文件处理大文件。

首先,我们需要了解内存映射文件是什么。

内存映射文件是一种将磁盘文件映射到内存中的机制。

通过将文件的内容映射到内存中,我们可以直接在内存中进行读写操作,而无需将整个文件加载到内存中。

这种方式不仅可以减少内存的使用量,还可以提高读写的效率。

下面我们通过一个具体的示例来说明如何使用内存映射文件处理大文件。

假设我们有一个大小为2GB的日志文件,我们需要对其中的一些数据进行分析。

首先,我们需要创建一个内存映射文件。

```pythonimport mmap# 打开文件file = open('log.txt', 'r+b')# 将文件映射到内存中mm = mmap.mmap(file.fileno(), 0)# 关闭文件file.close()```现在,我们可以通过`mm`对象访问文件的内容。

接下来,我们可以使用正则表达式来查找文件中的特定数据。

```pythonimport re# 在内存映射文件中查找匹配的字符串result = re.findall(b'pattern', mm)# 打印匹配结果print(result)```在这个示例中,我们使用了正则表达式`pattern`来查找文件中匹配的字符串。

`findall()`方法返回的是一个列表,包含了所有找到的匹配结果。

现在,我们可以对匹配结果进行进一步的处理,例如统计匹配结果的数量。

```python# 计算匹配结果的数量count = len(result)# 打印匹配结果的数量print(count)```使用内存映射文件处理大文件不仅可以提高读取文件的效率,还可以减少内存的使用量。

VBA中常见的内存管理和资源释放方法

VBA中常见的内存管理和资源释放方法

VBA中常见的内存管理和资源释放方法VBA(Visual Basic for Applications)是一种被广泛应用于微软Office应用程序中的编程语言。

在VBA编程中,内存管理和资源释放是非常重要的,以确保代码的稳定性和效率。

本文将介绍VBA中常见的内存管理和资源释放方法,以帮助开发者更好地优化代码。

1. 变量的及时释放在编写VBA代码时,使用变量是必不可少的。

在使用完变量后,及时释放变量所占用的内存空间是非常重要的。

可以通过设置变量为Nothing来释放内存。

例如:```Dim myVariable As ObjectSet myVariable = New Object' 使用myVariableSet myVariable = Nothing ' 释放内存空间```另外,可以使用End语句来终止当前过程,并释放当前过程中的所有局部变量。

例如:```Sub MySub()' 一些代码EndEnd Sub```2. 清空对象的引用在VBA中,许多对象(如工作簿、工作表、Range等)会占用大量的内存空间。

在使用完这些对象后,将其设置为Nothing可以释放其所占用的内存。

例如:```Sub MySub()Dim wb As WorkbookSet wb = Workbooks.Open("路径")' 使用wbwb.CloseSet wb = Nothing ' 释放内存空间End Sub```3. 使用ReleaseComObject函数如果VBA代码中使用了COM(Component Object Model)对象,可以使用ReleaseComObject函数来手动释放COM对象所占用的内存。

ReleaseComObject函数位于Microsoft.VisualBasic命名空间中,需要在代码中进行引用,例如:```Sub MySub()Dim excelApp As ObjectSet excelApp = CreateObject("Excel.Application")' 使用excelAppexcelApp.QuitIf Not excelApp Is Nothing ThenDim o As ObjectFor Each o In excelAppexcelApp.ReleaseComObject(o)Next oEnd IfSet excelApp = Nothing ' 释放内存空间End Sub```4. 使用On Error Resume Next语句在处理大量对象时,VBA代码可能会出现异常错误,导致代码中断。

映射文件的使用

映射文件的使用

映射文件的使用在WIN32种,通过使用映像文件在进程间实现共享文件或内存共享,如果利用相同的映像名字或文件句柄,则不同的进程可以通过一个指针来读写同一个文件或者同一内存数据块,并把他们当成该进程内存空间的一部分。

内存映像文件可以映射一个文件、一个文件中的指定区域或者指定的内存块,其中的数据就可以用内存读取指令来直接访问,而不用频繁的使用操作文件的I/O系统函数,从而提高文件的存取速度和效率。

映像文件的另一个重要作用就是用来支持永久命名的共享内存。

要在两个应用程序之间共享内存,可以在一个应用程序中创建一个文件并映射,然后另外一个程序通过打开和映射此文件,并把它当作自己进程的内存来使用。

事实上,此内存是所有进程共享的。

下面将先描述一下几个操作内存的API函数1、创建内存映射的API函数This function creates a named or unnamed file-mapping object for the specified file.HANDLE CreateFileMapping(//通过调用fileopen or FileCreate后返回的文件句柄,如果是内存,则//$FFFFFFFFHANDLE hFile,//安全性结构,一般nullLPSECURITY_ATTRIBUTES lpFileMappingAttributes,//文件试图的保护类型,PAGE_READONLY,PAGE_READWRITE,DWORD flProtect,//文件大小的高32位,一般设置为0,除非文件大于4GDWORD dwMaximumSizeHigh,//文件大小低32位DWORD dwMaximumSizeLow,//映射的名字LPCTSTR lpName);2、打开一个映射文件HANDLE OpenFileMapping(//访问数据模式:FILE_MAP_ALL_ACCESS,FILE_MAP_COPY,FILE_MAP_READ, //FILE_MAP_WRITEDWORD dwDesiredAccess,//子进程是否可以继承BOOL bInheritHandle,//映射文件名LPCTSTR lpName);3、将映射文件映射到本进程的API函数LPVOID MapViewOfFile(//通过CreateFileMapping或OpenFileMapping返回的文件句柄HANDLE hFileMappingObject,//访问的数据模式:FILE_MAP_WRITE,FILE_MAP_READ,FILE_MAP_ALL_ACCESSDWORD dwDesiredAccess,//指定数据在映射文件中起始位置的高32位DWORD dwFileOffsetHigh,//低32位DWORD dwFileOffsetLow,//需要映射的大小,0表示全部DWORD dwNumberOfBytesToMap);4、关闭映射的api函数BOOL UnmapViewOfFile(//由MapViewofFile产生的映射文件的地址LPCVOID lpBaseAddress);5、下面例子中还会用到的几个api函数创建互斥对象HANDLE WINAPI CreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes,BOOL bInitialOwner,LPCTSTR lpName);DWORD WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds);上文中曾经提到我们使用内存映射的方式来在多个程序或DLL中共享数据。

VB文件操作范文

VB文件操作范文

VB文件操作范文在VB中,可以使用FileSystemObject对象和File对象来进行文件操作。

FileSystemObject对象是VB中的文件系统对象,它可以用来处理文件夹和文件,包括创建、删除、重命名等操作。

File对象则是用来处理单个文件,包括读写文件内容等操作。

下面是VB文件操作常用的一些方法和属性:1. CreateTextFile方法:创建一个新的文本文件。

示例:`FileSystemObject.CreateTextFile("C:\test.txt")`2. DeleteFile方法:删除指定的文件。

示例:`FileSystemObject.DeleteFile("C:\test.txt")`3. MoveFile方法:移动指定的文件。

示例:`FileSystemObject.MoveFile("C:\test.txt","C:\newfolder\test.txt")`4. CopyFile方法:复制指定的文件。

示例:`FileSystemObject.CopyFile("C:\test.txt","C:\newfolder\test.txt")`5. GetFile方法:返回一个对指定文件的引用。

示例:`FileSystemObject.GetFile("C:\test.txt")`6. OpenTextFile方法:打开一个文本文件,并返回一个TextStream 对象,可以用来读取或写入文件内容。

示例:`FileSystemObject.OpenTextFile("C:\test.txt", 1)` 7. ReadAll方法:一次性读取整个文件的内容。

示例:`TextStreamObject.ReadAll(`8. WriteLine方法:向文件中写入一行文本。

VBA中的内存管理和资源优化技巧

VBA中的内存管理和资源优化技巧

VBA中的内存管理和资源优化技巧VBA(Visual Basic for Applications)是一种用于自动化任务和自定义程序的编程语言,在微软的各种办公软件中广泛使用。

由于VBA是一种解释型语言,它在运行时会占用计算机的内存资源。

因此,了解和掌握VBA中的内存管理和资源优化技巧对于提高程序效率和性能至关重要。

本文将为您介绍几个常用的VBA内存管理和资源优化技巧,帮助您改进代码并优化程序性能。

1. 变量声明和释放在VBA中,变量的声明和释放对于内存管理至关重要。

声明不使用的变量会浪费内存资源,而释放不再使用的变量则可以释放内存空间。

在编写VBA代码时,应该尽量避免使用Variant类型的变量,因为它占用的内存较大。

另外,使用公共变量时应谨慎,因为公共变量会一直占用内存,而不管它们是否被使用。

使用关键字“Set”来释放对象变量也是很重要的。

当我们不再需要一个对象变量时,应该使用“Set 变量名= Nothing”来释放该对象,以释放占用的内存空间。

2. 数组的使用在VBA中,数组是一种可以存储大量数据的数据结构。

合理使用数组可以降低内存占用和提高代码运行效率。

在声明数组时,可以使用“Dim 数组名() As 数据类型”来定义数组。

另外,为了最大限度地减少内存的使用,应该使用最佳大小的数组。

这可以通过动态调整数组的大小来实现。

使用“ReDim Preserve 数组名(大小)”可以调整数组的大小,并且保留数组中已有的数据。

3. 避免频繁操作Excel对象在VBA中,访问和操作Excel对象(如工作表、单元格等)会占用大量的内存资源。

因此,为了优化程序性能,应该尽量避免频繁地访问和操作Excel对象。

可以使用变量将需要访问和操作的对象保存起来,并在完成操作后释放对象,以减少内存占用。

另外,可以使用“Application.ScreenUpdating = False”来关闭Excel屏幕更新,在处理大量数据时可以提高代码的执行速度。

VB文件操作

VB文件操作
⑵ 删除一个指定的文件或文件夹,既可以使用File或 Folder对象的Delete方法,又可以使用FSO对象的DeleteFile 方法或DeleteFolder方法。 ⑶ 复制一个指定的文件,既可以使用File对象的Copy方法,
又可以使用FSO对象的CopyFile方法。
3.访问已有的驱动器、文件夹和文件
打开:Open pathname For Binary As filenumber 关闭:Close
8.4 二进制文件操作—读、写操作
二、二进制文件的读、写操作
⑴ Get [#]filenumber,[recnumber],varname ⑵ Put [#]filenumber,[recnumber] ,varname
①GetDrive方法:返回与指定路径中驱动器对应的Drive对象。
8.8 使用文件系统对象编程—FSO对象
② GetFolder方法:返回与指定路径中驱动器对应的Folder
对象。 ③ GetFile方法:返回与指定路径中文件对应的File对象。 4.访问对象的属性 获得对象的句柄,就能访问其属性。
文件夹操作的一些方法创建文件夹objectcreatefolderfoldername删除文件夹filesystemobjectdeletefolderfolderspecforce或folderdeleteforce移动文件夹filesystemobjectmovefoldersourcedestination或foldermovedestination88使用文件系统对象编程管理文件夹复制文件夹filesystemobjectcopyfoldersourcedestinationoverwrite或foldermovedestinationoverwrite检查文件夹是否存在filesystemobjectfolderexistsfolderspec获得当前文件夹的名称filesystemobjectgetabsolutepathnamepathspec获得已有folder对象的一个实例filesystemobjectgetfolderfolderspec88使用文件系统对象编程管理文件夹获得文件夹的父文件夹的名称filesystemobjectgetparentfolderpath获得特殊文件夹的路径objectgetspecialfolderfolderspec3

VB文件操作

VB文件操作

关闭文件
13.1顺序文件打开
顺序文件:
记录的逻辑顺序与存储顺序相一致,对文件的读写操作只能按记 录的顺序进行。 优点:占空间少,易使用 缺点:无法灵活随意存取,查找修改不便,只适用于有规律,不 经常修改的数据
打开与关闭
格式:Open 文件名 For Input| Output| Append As [#] 文件号 格式 [Len=记录长度]
13.1 顺序文件打开
顺序文件的关闭 格式 Close 文件号 1[,文件号2,[,…..]]
一个Close语句可以同时关闭若干个已打开的文件,其中“文 件号”是用Open语句打开时指定的文件标识。
13.2 顺序文件读、写操作
顺序文件的“写”操作
将内存中的数据存入磁盘称为“写”操作。
格式 Print| Write # 文件号, 输出表达式列表 [,|;] 说明 (1)文件号与Open后的文件号一致
(2)“输出表达式列表”是指可以输出若干项。为了使记录 按列输出,常常要用到Spc(n)和Tab(n)两个函数。省略表达 式列表,则向文件写入一个空行。 (3)用Print#时,每个数据项之间没有分隔符,字符型数据 不加双引号;而如果选用Write#,则数据项之间用“,”分 隔,字符型数据用双引号括起。 (4)Print#语句常与Line Input#语句配合使用。
13.2 顺序文件读、写操作
格式[2] Line Input# 文件号, 字符型(或可变型) 变量名 注意(1)将指定数据文件中的一行读入一个字符型(可 变型)变量或字符型数组元素中
(2)3] Input$(整数,[#] 文件号) 注意:整数是要读取的字符个数,Input函数返回从文件中 读出的所有字符,包括括号、回车符、引号和空格符 例:str1$=Input$(50, #2)表示从2号文件读取50个字符赋 给字符型变量str1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB内存映射文件的使用引言文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。

一般来说,以上这些函数可以满足大多数场合的要求,但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储,再以通常的文件处理方法进行处理显然是行不通的。

目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。

内存映射文件内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,只是内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而非系统的页文件,而且在对该文件进行操作之前必须首先对文件进行映射,就如同将整个文件从磁盘加载到内存。

由此可以看出,使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,这意味着在对文件进行处理时将不必再为文件申请并分配缓存,所有的文件缓存操作均由系统直接管理,由于取消了将文件数据加载到内存、数据从内存到文件的回写以及释放内存块等步骤,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用。

另外,实际工程中的系统往往需要在多个进程之间共享数据,如果数据量小,处理方法是灵活多变的,如果共享数据容量巨大,那么就需要借助于内存映射文件来进行。

实际上,内存映射文件正是解决本地多个进程间数据共享的最有效方法。

内存映射文件并不是简单的文件I/O操作,实际用到了Windows的核心编程技术--内存管理。

所以,如果想对内存映射文件有更深刻的认识,必须对Windows操作系统的内存管理机制有清楚的认识,内存管理的相关知识非常复杂,超出了本文的讨论范畴,在此就不再赘述,感兴趣的读者可以参阅其他相关书籍。

内存映射文件使用方法1) 首先要通过CreateFile()函数来创建或打开一个文件内核对象,这个对象标识了磁盘上将要用作内存映射文件的文件。

2)在用CreateFile()将文件映像在物理存储器的位置通告给操作系统后,只指定了映像文件的路径,映像的长度还没有指定。

为了指定文件映射对象需要多大的物理存储空间还需要通过CreateFileMapping()函数来创建一个文件映射内核对象以告诉系统文件的尺寸以及访问文件的方式。

3)在创建了文件映射对象后,还必须为文件数据保留一个地址空间区域,并把文件数据作为映射到该区域的物理存储器进行提交。

由MapViewOfFile()函数负责通过系统的管理而将文件映射对象的全部或部分映射到进程地址空间。

此时,对内存映射文件的使用和处理同通常加载到内存中的文件数据的处理方式基本一样。

4)在完成了对内存映射文件的使用时,还要通过一系列的操作完成对其的清除和使用过资源的释放。

这部分相对比较简单,可以通过UnmapViewOfFile()完成从进程的地址空间撤消文件数据的映像、通过CloseHandle()关闭前面创建的文件映射对象和文件对象。

内存映射文件相关函数在使用内存映射文件时,所使用的API函数主要就是前面提到过的那几个函数,下面分别对其进行介绍:Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes AsSECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long函数CreateFile()即使是在普通的文件操作时也经常用来创建、打开文件,在处理内存映射文件时,该函数来创建/打开一个文件内核对象,并将其句柄返回,在调用该函数时需要根据是否需要数据读写和文件的共享方式来设置参数dwDesiredAccess和dwShareMode,错误的参数设置将会导致相应操作时的失败。

Public Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, lpFileMappigAttributes As SECURITY_ATTRIBUTES, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long CreateFileMapping()函数创建一个文件映射内核对象,通过参数hFile指定待映射到进程地址空间的文件句柄(该句柄由CreateFile()函数的返回值获取)。

由于内存映射文件的物理存储器实际是存储于磁盘上的一个文件,而不是从系统的页文件中分配的内存,所以系统不会主动为其保留地址空间区域,也不会自动将文件的存储空间映射到该区域,为了让系统能够确定对页面采取何种保护属性,需要通过参数flProtect来设定,保护属性PAGE_READONLY、PAGE_READWRITE和PAGE_WRITECOPY分别表示文件映射对象被映射后,可以读取、读写文件数据。

在使用PAGE_READONLY时,必须确保CreateFile()采用的是GENERIC_READ参数;PAGE_READWRITE则要求CreateFile()采用的是GENERIC_READ|GENERIC_WRITE参数;至于属性PAGE_WRITECOPY则只需要确保CreateFile()采用了GENERIC_READ和GENERIC_WRITE其中之一即可。

DWORD型的参数dwMaximumSizeHigh和dwMaximumSizeLow也是相当重要的,指定了文件的最大字节数,由于这两个参数共64位,因此所支持的最大文件长度为16EB,几乎可以满足任何大数据量文件处理场合的要求。

Public Declare Function MapViewOfFile Lib "kernel32" Alias "MapViewOfFile" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) As LongMapViewOfFile()函数负责把文件数据映射到进程的地址空间,参数hFileMappingObject为CreateFileMapping()返回的文件映像对象句柄。

参数dwDesiredAccess则再次指定了对文件数据的访问方式,而且同样要与CreateFileMapping()函数所设置的保护属性相匹配。

虽然这里一再对保护属性进行重复设置看似多余,但却可以使应用程序能更多的对数据的保护属性实行有效控制。

MapViewOfFile()函数允许全部或部分映射文件,在映射时,需要指定数据文件的偏移地址以及待映射的长度。

其中,文件的偏移地址由DWORD型的参数dwFileOffsetHigh和dwFileOffsetLow组成的64位值来指定,而且必须是操作系统的分配粒度的整数倍,对于Windows操作系统,分配粒度固定为64KB。

当然,参数dwNumberOfBytesToMap指定了数据文件的映射长度,这里需要特别指出的是,对于Windows 9x操作系统,如果MapViewOfFile()无法找到足够大的区域来存放整个文件映射对象,将返回空值(NULL);但是在Windows 2000下,MapViewOfFile()只需要为必要的视图找到足够大的一个区域即可,而无须考虑整个文件映射对象的大小。

在完成对映射到进程地址空间区域的文件处理后,需要通过函数UnmapViewOfFile()完成对文件数据映像的释放,该函数原型声明如下:Public Declare Function UnmapViewOfFile Lib "kernel32" Alias "UnmapViewOfFile" (lpBaseAddress As Any) As Long唯一的参数lpBaseAddress指定了返回区域的基地址,必须将其设定为MapViewOfFile()的返回值。

在使用了函数MapViewOfFile()之后,必须要有对应的UnmapViewOfFile()调用,否则在进程终止之前,保留的区域将无法释放。

除此之外,前面还曾由CreateFile()和CreateFileMapping()函数创建过文件内核对象和文件映射内核对象,在进程终止之前有必要通过CloseHandle()将其释放,否则将会出现资源泄漏的问题。

除了前面这些必须的API函数之外,在使用内存映射文件时还要根据情况来选用其他一些辅助函数。

例如,在使用内存映射文件时,为了提高速度,系统将文件的数据页面进行高速缓存,而且在处理文件映射视图时不立即更新文件的磁盘映像。

为解决这个问题可以考虑使用FlushViewOfFile()函数,该函数强制系统将修改过的数据部分或全部重新写入磁盘映像,从而可以确保所有的数据更新能及时保存到磁盘。

相关文档
最新文档