egor23
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору 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: не программер, мысли вслух. |