Сейчас на форуме: zds, UniSoft, ManHunter (+5 невидимых)

 eXeL@B —› Программирование —› winapi file mapping
Посл.ответ Сообщение

Ранг: 590.6 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 12 января 2012 03:20
· Личное сообщение · #1

есть такой код
Code:
  1.          HANDLE lFile = ::CreateFile(m_FileName, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
  2.          if (lFile == INVALID_HANDLE_VALUE) return;
  3.  
  4.          LPVOID lPtr = NULL;
  5.          HANDLE lFileMap = CreateFileMapping(lFile, 0, PAGE_READWRITE | SEC_IMAGE, 0, 0, NULL);
  6.          if (!lFileMap) goto l_finish;
  7.  
  8.          lPtr = MapViewOfFile(lFileMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
  9.          if (!lPtr) goto l_finish;
  10.  
  11. ... тут в lPtr пишется много всякого
  12.  
  13.          if (!FlushViewOfFile(lPtr, 0))
  14.          {
  15.                  lMsg.Format(_T("Error = 0x%08x"), GetLastError());
  16.                  AfxMessageBox(lMsg);
  17.          }
  18.  
  19. l_finish:;
  20.          if (lPtr) UnmapViewOfFile(lPtr);
  21.          if (lFileMap) CloseHandle(lFileMap);
  22.          CloseHandle(lFile);


проблема: код отрабатывает, но изменений в оригинальном бинаре нет. где косяк?

-----
старый пень





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 12 января 2012 08:13
· Личное сообщение · #2

все дело в SEC_IMAGE. не пишет с ним система. как поправить - хз

-----
От многой мудрости много скорби, и умножающий знание умножает печаль


| Сообщение посчитали полезным: r_e


Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 12 января 2012 08:18
· Личное сообщение · #3

SEC_IMAGE увеличивает файл автоматически. Попробуй убрать этот параметр, измени что нибудь и проверь запишется или нет. Если запишется, то кури доки.

-----
Yann Tiersen best and do not fuck




Ранг: 590.6 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 12 января 2012 12:40
· Личное сообщение · #4

При SEC_IMAGE работает по принципу COW. Пришлось менять обработку.

-----
старый пень



 eXeL@B —› Программирование —› winapi file mapping
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати