|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.02.2013, 11:13 | #1 |
Пользователь
Регистрация: 16.02.2013
Сообщений: 18
|
CreateFileMapping. Размер проецируемого файла
Создаю проецируемый файл:
CreateFileMapping(INVALID_HANDLE_VA LUE, NULL, PAGE_READWRITE, 0, 100, L"FileName"); Если я все правильно понял размер его будет - 100 Байт. Этот размер нельзя превышать. Вопрос: Что произойдет с размером и содержимым проецируемого файла если вызвать: CreateFileMapping(INVALID_HANDLE_VA LUE, NULL, PAGE_READWRITE, 0, 200, L"FileName"); ИЛИ CreateFileMapping(INVALID_HANDLE_VA LUE, NULL, PAGE_READWRITE, 0, 50, L"FileName"); По моей информации в первом случае размер увеличится и содержимое сохранится. Непонятен второй вариант, где размер задан 50 Байт. Уменьшится ли размер? Если ошибаюсь во всем, распишите первый и второй случай. |
16.02.2013, 11:19 | #2 | |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
RTFM
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx Цитата:
|
|
16.02.2013, 11:55 | #3 |
Пользователь
Регистрация: 16.02.2013
Сообщений: 18
|
Сколько памяти я имею в распоряжении?
вызвав: CreateFileMapping(INVALID_HANDLE_VA LUE, NULL, PAGE_READWRITE, 0, sizeof(DWORD), L"MapFileName); Почему у меня получается записывать в: LPVOID MapView =MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(DWORD)); DWORD v =123; DWORD* p =(DWORD*)MapView; memcpy(&p[5], &v, sizeof(DWORD)); |
16.02.2013, 15:27 | #4 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Ничего не понял,что хочет топикстартер. Сколько памяти можно спроецировать? До 4 гб на х86 и до 16 эксабайт на х64.
Я делаю так: CreateFile -> GetFileSize -> CreateFileMapping -> MapViewOfFileEx и всё нормально работает |
16.02.2013, 18:40 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
топикстартер жалуется, что может писать за пределы заявленной памяти.
Память выделяется страницами, обычно по 4К (для 32бит систем). |
16.02.2013, 19:57 | #6 |
Пользователь
Регистрация: 16.02.2013
Сообщений: 18
|
Все понял.
Благодарю. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Размер файла | саша40 | Общие вопросы Delphi | 2 | 17.10.2012 17:20 |
Работа с CreateFileMapping. С++ | Angriff | Помощь студентам | 0 | 16.03.2012 18:58 |
Размер файла | Димонн | Помощь студентам | 2 | 21.09.2010 08:40 |
Размер файла | NetSpace | Свободное общение | 2 | 15.06.2009 13:36 |
Размер файла | Tesmont | Помощь студентам | 1 | 15.05.2009 17:31 |