1

私の問題を説明する前に、私が書いている C++ プログラムについて説明します。

  • 私のプログラムの目的は、RAM メモリ上にファイルを作成することです。

ファイルの作成時に指定するFILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSEと、RAMメモリに直接ロードされることを読みました。

話題になっているブログの 1 つに、次のようなものがあります。

あくまで一時的なものです

ラリー・オスターマン、2004 年 4 月 19 日

「一時」ファイルを作成するには、 dwFlagsAndAttributes属性を指定FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSEしてCreateFile を呼び出します。このビットの組み合わせは、ファイル データをディスクにフラッシュしてはならないというファイル システムへのヒントとして機能します。つまり、このようなファイルは、システムがディスクに触れることなく、作成、書き込み、および読み取りを行うことができます。

ミニプログラムを作成しましたが、目標を達成できません。代わりに、ハードドライブの指定したディレクトリにファイルを作成します。

これが私のプログラムです:

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関数に問題があると思いますが、修正できません。私を助けてください。

4

1 に答える 1

2

ラリー・オスターマンも次のように述べています。

使用可能なメモリを超えた場合、メモリ マネージャーはファイル データをディスクにフラッシュします。これによりパフォーマンスが低下しますが、操作は失敗するのではなく成功します。

そのため、OS はメモリ制限のためにデータをフラッシュする必要がある場合に備えてファイルを作成します。

于 2010-05-16T07:01:52.090 に答える