调用CreateFile,指定FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE

时间:2010-05-16 06:56:15

标签: ram createfile

在我描述我的问题之前,这里是我正在编写的程序的描述:

这是一个C ++应用程序。

我的程序的目的是在RAM内存上创建文件。

如果指定FILE_ATTRIBUTE_TEMPORARY |,我会读到创建文件时FILE_FLAG_DELETE_ON_CLOSE将直接加载到RAM内存中。

其中一个博客就是这个:http://blogs.msdn.com/larryosterman/archive/2004/04/19/116084.aspx

我已经建立了一个迷你程序,但它没有实现目标。相反,它在我指定的目录上的硬盘驱动器上创建一个文件。

这是我的计划:

void main ()

{

LPCWSTR str = L“c:\ temp.txt”;  HANDLE fh = CreateFile(str,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE,NULL);

if(fh == INVALID_HANDLE_VALUE)     {   printf(“无法打开TWO.TXT”);   返回;     }

DWORD dwBytesWritten;

for(long i = 0; i <20000000; i ++)  {   WriteFile(fh,“这是一个测试\ r \ n”,16,&amp; dwBytesWritten,NULL);  }

返回; }

我认为CreateFile函数存在问题,但我无法修复它。请帮帮我。

1 个答案:

答案 0 :(得分:2)

拉里奥斯特曼还提到:

  

如果你超过可用内存,那么   内存管理器将刷新文件   数据到磁盘。这导致了   性能命中,但你的操作   会成功而不是失败。

因此操作系统会创建该文件,以防因内存限制而需要刷新数据。