Здравствуйте, Poseidon, Вы писали:
P>Здравствуйте! Не секрет что mapviewoffile терпит неудачу при работе с достаточно большим по размеру файлом. P>Вопрос — можно ли это вылечить если сначала вызвать CreateFileMapping или MapViewOfFile с флагом MEM_RESERVE? P>Для достаточно большой области памяти. P>А потом узнать объем памяти которую можно закомитить (кстати какой функцией это можно сделать?) P>Заключить код работы с памятью в SEH и при возникновении ошибки доступа к памяти вызывать MapViewOfFile P>повторно с указанием флага MEM_COMMIT и размера блока который система способна выделить?
P>делал нечто подобное с VirtualAlloc, а теперь хочу разобраться как это можно сделать для образа файла.
MEM_RESERVE обычно используется если память надо выделить по определенному адресу. Если адрес не имеет значение, можно просто MEM_COMMIT.
Если какие то есть проблемы с большими файлами (о чем я не знаю), можно просто маппить не весь файл, а его часть?
См. 3 последние аргумента MapViewOfFile.