Я пытаюсь использовать комбинацию функций CreateFileMapping, MapViewOfFile, FlushViewOfFile.
общий размер буфера больше отображенного представления.
пример буфера составляет 50 КБ. и сопоставленное представление составляет 2 КБ. в таком сценарии,
я хочу записать общий буфер в физический файл, используя вышеуказанную функцию.
Первая часть, которую я могу записать в файл. но остальная часть как записать в файл. Я имею в виду, как перейти на следующую страницу и записать следующую часть данных.
#define MEM_UNIT_SIZE 100
-первый модуль ... Создатель карты памяти
GetTempPath (256, szTmpFile);
GetTempFileName (szTmpFile, pName, 0, szMMFile);
hFile = CreateFile (szMMFile, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, NULL);
HANDLE hFileMMF = CreateFileMapping( hFile ,NULL,PAGE_READWRITE,0,
(MEM_UNIT_SIZE),pName)
второй модуль ... Модуль записи в память
long lBinarySize = 1000;
long lPageSize = MEM_UNIT_SIZE;
HANDLE hFileMMF = OpenFileMapping(FILE_MAP_WRITE,FALSE,pMemName);
LPVOID pViewMMFFile = MapViewOfFile(hFileMMF,FILE_MAP_WRITE,0,0, lPageSize );
CMutex mutex (FALSE, _T("Writer"));
mutex.Lock();
try
{
ASSERT(FALSE);
CopyMemory(pViewMMFFile,pBinary,lPageSize); // write
FlushViewOfFile(pViewMMFFile,lPageSize);
// first 100 bytes flushed to file.
//how to move to next location and write next 900 bytes..<---??
}
catch(CException e)
{
...
}
Пожалуйста, поделитесь, если у вас есть предложения.
заранее спасибо,
haranadh