После загрузки PE в память и некоторых действий мне становится не нужна почти вся последняя секция. Каким образом мне можно освободить память и выгрузить эту секцию. Вопрос может и тупой, но я ничего придумать не смог. VirtualFree ясно понятно не работает. вот тут сказано что никак, но в это с трудом верится. и может все-таки есть способ? пробовал ставить флаг Discardable но он походу не для этих целей.
Не понятно, зачем тебе это нужно Винда сама разберется - если физ.памяти хватает, то и фиг с ней с этой секцией, а если не будет хватать, то эта секция как давно неиспользованная будет первым кандидатом на вылет
Может ты и прав, но лучшеб конечно выгружать... Но если никак в нельзя простыми средставами то ладно. Но может кто и знает. Тогда пусть поделится опытом...
как я понимаю, для чего это тебе могло понадобиться: ты добавляешь к упакованному исполняемому файлу секцию, перенаправляешь в неё точку входа, передаёшь управление загрузчику распаковщика и хочешь, чтобы твоя добавленная секция исчезла из памяти. так?
Jupiter В таком случае видимо достаточно исправить PE-заголовок, убрав из него описание секции, и саму секцию забить нулями - и пусть себе висит наздоровье BaGiE Дело в том, что секции являются отображением exe-файла и к ним VirtualFree не применимы. А вот UnMapViewOfFile - пожалуйста, только при этом грохнется не одна секция, а весь образ со всеми вытекающими последствиями )) Поэтому удалить одну секцию "простыми средставами" нельзя
вообще я так делал в своем пакере ... но тут не пакер, а просто прога, которая содержит много данных, которые не нужны ей после того как она их потрогала.
Ну тогда хрен с ней. Выставить флаг Discardable, который, я как понимаю, нужен для того чтобы система в первую очередь выгружала такие секции если необходимо. leo пасиб, что насправил на путь истинный