![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
Добого времени суток.
У меня такой вопрос. Есть две независимыx просесса ,первый процесс загружает какую то дллку.Второй процесс вить может получить имя этой дллки.А вот второй процесс может загрузить этот длл уже в свое адрессное пространство или нет. Спасибо. --------------------
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
а вопрос в чем?
т.е. это один и тот же процесс? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| knut |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
_hunter,
нет это два разных процесса (пазные проги).
а вопрос в том что может процесс А загрузить длл каторую уже загрузил просесс Б(в свое адессное пространство)? --------------------
|
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
может. для этого их (dll) и придумали...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
_hunter, не ну я спашиваю можно ли как то помешать процессу А загрузить dll .Или же выгрузить
зная имя длл? --------------------
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
так бы и спрашивал...
помешать -- нужно перехватывать LoadLibrary выгрузить -- тут все сложнее: FreeLibrary не ао имени работает... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
_hunter,
но можно? и как? --------------------
|
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
Ну проинжетируй код(VirtualProtectEx, VirtualAllocEx) для выгрузки dll(FreeLibrary, ExitThread) в адресное пространство процесса A и запусти на выполнение(CreateRemoteThread).
|
|||
|
||||
| knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
BUGOR, т.е по твоему одним Load ом я могу выгрузить модуль каторый заггрузила другое прелажение?
--------------------
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
одним FreeLibrary, выполненным в контексте "прелажения", загрузившего библу, ты можешь выгрузить dll из адресного пространства этого приложения.
больше конкретики, ибо суть вопроса непонятна. опиши то, что хочешь сделать и зачем. |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: нет Всего: 56 |
можешь попробовать CriticalSection s или Mutex для ограничения доступа к методам описанным в длл. загрузить процессу B твою DLL они не помешают, но вот далее твой процесс Б зависнет, пока процесс А не освободит длл.
|
|||
|
||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 10 Всего: 124 |
В DLL сделайте Shared Section, в которой объявите BOOL variable
При загрузке (в самой этой DLL — DLL_PROCESS_ATTACH) — проверяйте эту variable (посредством InterlockedCompareExchange с TRUE) И возвращайте FALSE, если уже TRUE В MSDN почитайте про DllMain Можете и счётчик там организовать наподобие семафора — для разрешения одновременной загрузки не более # раз P.S. Про то, как сделать Shared Section, прочтите у Рихтера Это сообщение отредактировал(а) SergeCpp - 2.11.2006, 09:22 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |