【发布时间】:2019-07-08 22:26:24
【问题描述】:
在描述我的问题之前,先描述一下我正在编写的 C++ 程序:
- 我的程序的目的是在 RAM 内存上创建文件。
我读到如果在创建文件时指定FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE,它将直接加载到RAM内存中。
谈论的博客之一是这个:
It’s only temporary ????
拉里·奥斯特曼,2004 年 4 月 19 日
要创建“临时”文件,请调用 CreateFile,并在 dwFlagsAndAttributes 属性中指定
FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE。这种位组合作为对文件系统的提示,文件数据不应该被刷新到磁盘。换句话说,无需系统接触磁盘即可创建、写入和读取此类文件。
我已经建立了一个小程序,但它没有达到目标。相反,它会在硬盘驱动器上的我指定的目录中创建一个文件。
这是我的程序:
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 ("Could not open TWO.TXT");
return;
}
DWORD dwBytesWritten;
for (long i=0; i<20000000; i++)
{
WriteFile(fh, "This is a test\r\n", 16, &dwBytesWritten, NULL);
}
return;
}
我认为CreateFile 函数存在问题,但我无法修复它。请帮帮我。
【问题讨论】:
标签: ram createfile