еще раз повторю: нужно досканально знать компилятор, который генерирует код... этого знания достаточно) да, только ради этого)) во-первых... в своем загрузщике я сначала отображал файл в память, а затем из образа соответствующим образом выделял и копировал память... работать с отображениями быстрее, чем читать файл по частям... кроме того, не так давно делал базу данных с шифрованием, так вот операции записи/чтения 32 мегабайт (1024 * 1024 * 2 операции записи/чтения) происходила в течении 2 секунд, а вас смущает 4 операции чтения... во-вторых... вообще грамотный программист, если выделяет память, то затем очищает ее, как только она ему становится не нужна... так вот отображение удаляется, после того как становится без надобности... тем более виртуальная память на 32-битных машинах способна вмещать достаточно данных, чтобы удержать не одну сотню ваших PE-файлов... в-третьих, код загрузки секций с учетом выравнивания имеет меньший размер чем код настройки релоков или таблицы импорта например...
Rel С помощью CreateFileMapping(NtCreateSection) можно сразу отобразить PE-файл с учётом выравниваний (флаг SEC_IMAGE).
вот видите... вы решили все проблемы ТС))) мне же это не подходит, так как частенько бывает (обусловлено моей спецификой деятельности), что файл надо удалять после загрузки)))
Я вобще начинал с LoadlibraryEx ))) потом и CreateFileMapping пробовал. Не подходят они. У меня файл до загрузки, как бы это сказать, не много нечитабельный ) Ну а насчёт там Rel уже написал.
SZ Ну в таком случае либо делайте его читабельным, а потом используйте CreateFileMapping(NtCreateSection), либо грузите с учётом выравниваний.