Bulat_Ziganshin Цитата: я не могу динамически подгружать dll, которые я не использую напрямую. а напрямую я использую только wininet (ну и то, что она лично за собой тянет). всё остальное автоматом загружается виндами перед выполнением программы, afaik
пришла мысля, может сделать dll-ку, которая будет загружаться "раньше всех" и резервировать адресное пространство, но раньше всех загружается сам
exe а у него есть такой параметр -
Size of Heap Reserve http://msdn.microsoft.com/ru-ru/library/f90ybzkh.aspx выставил в FreeArc.exe вместо 00100000h (1МБ) 70100000h (1793МБ), зарезервировалось, dll-ки подгрузились по другим адресам, то что нужно было
а дальше уже удерживать непрерывный кусок наверно можно и "вручную".
70100000h (1793МБ) - какой объем резервировать лучше, это вопрос
при поиске максимума (1950МБ - 0x79E00000) видел такое сообщение:
Цитата: FreeArc.exe - Недопустимое перемещение системной DLL
Системная библиотека user32.dll перемещена в памяти. Работа приложения будет нарушена. Перемещение произошло из-за того, что библиотека Dynamically Allocated Memory заняла область адресов, зарезервированную для системных DLL Windows. Обратитесь к поставщику за новой версией библиотеки.
проблема не только в размере резерва, но и то что другие dll-ки тоже перемещаются
посмотрел какие dll-ки успевают загрузится, получил dll-ку с меньшим Image Base:
COMDLG32.DLL - 0x76380000 (1891.5МБ)
поставил heap 1891МБ 0x76300000 (для надёжности) FreeArc.exe запустился
осталось выяснить - зарезервированный heap кусок разрезервировать возможно?
PS: не программер, мысли вслух.