Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.08.2010, 15:30   #1
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию File Mapping

Приветствую всех. Вопрос такой: как поблочно отображать файлы в память и читать их. Задача: написать программу на WinAPI для сравнения 2-х файлов по содержанию. Различия выделить цветом. Работать с любыми файлами без ограничений. Все в общем то сделал. Но притормаживает. Хотел сделать через маппинг, но что то пока никак. То читает то нет. Не знаю где косяки. Толковых описаний не нашел.

вот так получаем хендл файла
Код:
return CreateFile(ofn.lpstrFile, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
Код:
hFile1 = FileOpen(hwnd,hwndLb1);
HANDLE hMap;
LPVOID lpBaseAddress = NULL;
LPCSTR buff;
hMap=CreateFileMapping(hFile1, NULL,  PAGE_READWRITE, 0, 0, "Map");
hMap=OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, "Map");
/*проверка открытия*/
lpBaseAddress=MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 10);
if(lpBaseAddress == NULL)MessageBox(hwnd,"ERROR","",NULL);
								 
buff =(LPCSTR)MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 16);
выдает ошибку при открытии файла.
если выделенное заменить на 0, то читается весь файл. ошибок нет.Но естественно большие файлы так не открыть.
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума
Старый 13.08.2010, 11:40   #2
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

Тему можно закрывать. Сам уже разобрался. Будут вопросы по Маппингу - пишите в личку.
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чём разница между unit, header file, cpp file? TwiX Общие вопросы C/C++ 6 29.04.2012 19:49
Свой PORT MAPPING (NAT) exploys Работа с сетью в Delphi 0 05.06.2010 01:24
Error 1 fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory s20 Общие вопросы C/C++ 2 26.09.2009 23:28
File I/O Baranka Общие вопросы C/C++ 1 30.04.2009 21:32
File of... GreenDan Общие вопросы Delphi 4 25.08.2008 22:04