0

マップ ファイルを作成するプログラムがあり、その呼び出しは問題なく実行できますm_hMap = CreateFileMapping(m_hFile,0,dwProtect,0,m_dwMapSize,NULL);が、その後の関数呼び出しMapViewOfFile(m_hMap,dwViewAccess,0,0,0)で を呼び出すと、エラー コード 8、つまり ERROR_NOT_ENOUGH_MEMORY、またはエラー文字列「エラー 十分なストレージがありません。このコマンドの処理に使用できます。」

そのため、MapViewOfFile が何をしてくれるのか、状況を修正する方法を完全には理解していません。

いくつかの数字...

m_dwMapSize = 453427200
dwProtect = PAGE_READWRITE;
dwViewAccess = FILE_MAP_ALL_ACCESS;

私のページサイズは65536

4

2 に答える 2

1

非常に大きなファイルの場合、それを読み取るには、小さな断片で読み取ってから、各断片を処理することをお勧めします。また、MapViewOfFile関数は、メモリ内のピースをマップするために使用されます。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366761(v=vs.85).aspxを見てください。非常に大きなファイルを読み取りたい場合は、適切に機能するためにオフセットが必要です。バラバラに。主に断片化と関連する理由により、非常に大きなメモリ要求が失敗します。

于 2013-03-22T15:25:15.127 に答える