Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

CreateFileMapping - весь файл сразу маппирует?

13K
09 сентября 2007 года
Wintos
10 / / 04.03.2006
Не пойму, CreateFileMapping на входе хэндл файла, потом результат используем в MapViewOfFile и ... весь файл в памяти?
12K
10 сентября 2007 года
lifs
163 / / 06.09.2007
Не обязательно, в параметрах функции MapViewOfFile можно указать позицию и размер участка. Вот прототип из MSDN:
 
Код:
LPVOID MapViewOfFile(
  HANDLE hFileMappingObject,
  DWORD dwDesiredAccess,
  DWORD dwFileOffsetHigh,           // смещение
  DWORD dwFileOffsetLow,           // в файле
  SIZE_T dwNumberOfBytesToMap // размер
);
13K
12 сентября 2007 года
Wintos
10 / / 04.03.2006
DWORD dwFileOffsetHigh, // смещение
DWORD dwFileOffsetLow, // в файле
SIZE_T dwNumberOfBytesToMap // размер
а можно пример?
PS:ну и промаппирует оно dwNumberOfBytesToMap один раз, а как весь файл читать?
12K
12 сентября 2007 года
lifs
163 / / 06.09.2007
dwNumberOfBytesToMap - размер части файла, которую следует мэппировать в память;
dwFileOffsetLow - младшая часть смещения мэппируемой части в файле;
dwFileOffsetHigh - старшая часть смещения мэппируемой части в файле, используется в том случае, если размер файла >= 4 Gb.

Пример:
Код:
hMapFile = CreateFileMapping( ... );
if ((hMapFile == NULL) || (hMapFile == INVALID_FILE_HANDLE))
 return;

// мэппируем первую половину файла
buffer = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, FileSize / 2);
if (buffer == NULL)
 return;

/*
 что-то делаем с данными
*/

UnmapViewOfFile(buffer);

// мэппируем вторую половину файла
buffer = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, FileSize / 2, FileSize - FileSize / 2);
if (buffer == NULL)
 return;

/*
 что-то делаем с данными
*/

UnmapViewOfFile(buffer);

CloseHandle(hMapFile);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог