Как получить хэндл dll?
От: maratrus  
Дата: 31.01.07 20:18
Оценка:
Известно, что по хэндлу "проекция файла" можно вызовами MapViewOfFile добиться того, что несколько страниц адресного пространства процесса будут отображены на одни и те же страницы физической памяти. Хотелось бы вызвать MapViewOfFile применительно к загруженным dll процесса (может быть, кроме ntdll.dll), но не знаю как получить хэндлы "проекция файла" у dll, полученных, как я подозреваю, загрузчиком. Скажите пожалуйста, выполнима ли данная задача? Я имею в виду, что во-первых можно ли получить эти хэндлы, а, во-вторых, можно ли потом вызвать MApViewOfFIle, передать ей эти параметры и спроецировать другие на страницы на ту же самую физическую память dll. Или dll грузяться совсем как-то по-особому. Заранее благодарю.
Re: Как получить хэндл dll?
От: Аноним  
Дата: 31.01.07 21:34
Оценка:
HANDLE na mapping zakrivaetsa zagruzchikom srazu posle otobrazhenia ego v pamyat
Re[2]: Как получить хэндл dll?
От: maratrus  
Дата: 31.01.07 22:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А>HANDLE na mapping zakrivaetsa zagruzchikom srazu posle otobrazhenia ego v pamyat

А где можно про это поподробнее почитать. Читал Рихтера и Руссиновича, что-то ничего не смог найти.
Re: Как получить хэндл dll?
От: Sergey Storozhevykh Россия  
Дата: 01.02.07 10:15
Оценка:
Здравствуйте, maratrus, Вы писали:

M>Известно, что по хэндлу "проекция файла" можно вызовами MapViewOfFile добиться того, что несколько страниц адресного пространства процесса будут отображены на одни и те же страницы физической памяти. Хотелось бы вызвать MapViewOfFile применительно к загруженным dll процесса (может быть, кроме ntdll.dll), но не знаю как получить хэндлы "проекция файла" у dll, полученных, как я подозреваю, загрузчиком. Скажите пожалуйста, выполнима ли данная задача? Я имею в виду, что во-первых можно ли получить эти хэндлы, а, во-вторых, можно ли потом вызвать MApViewOfFIle, передать ей эти параметры и спроецировать другие на страницы на ту же самую физическую память dll. Или dll грузяться совсем как-то по-особому. Заранее благодарю.


При загрузке DLL создается секция (section object, или file mapping), с атрибутом защиты copy-on-write. Процессы могут отображать представления этой секции с атрибутом PAGE_WRITECOPY — таким образом при записи в страницы, принадлежащие созданному представлению, будет генерироваться исключение, которое диспетчер памяти обработает путем выделения новых страниц в физической памяти. С этого момента процесс, инициировавший запись в страницы представления, перестает их разделять с другими.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.