Dll from Dll
От: BreakHeart  
Дата: 25.10.18 12:37
Оценка:
Здравствуйте! Подскажите, пожалуйста, как можно реализовать следующую схему:
-Приложение вызывает некую длл
-Эта длл выполняет некоторые действия
-Затем загружает другую длл
-приложение получает хендл последней длл и берёт все функции из нее
Заранее благодарен за помощь
Re: Dll from Dll
От: Maniacal Россия  
Дата: 25.10.18 12:45
Оценка:
Здравствуйте, BreakHeart, Вы писали:

BH>Здравствуйте! Подскажите, пожалуйста, как можно реализовать следующую схему:

BH>-Приложение вызывает некую длл
BH>-Эта длл выполняет некоторые действия
BH>-Затем загружает другую длл
BH>-приложение получает хендл последней длл и берёт все функции из нее
BH>Заранее благодарен за помощь

Почему нет? Все в одном адресном пространстве и в одном процессе. Все HANDLE'ы валидны для всех компонентов внутри одного процесса.
Re[2]: Dll from Dll
От: BreakHeart  
Дата: 25.10.18 12:50
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>Здравствуйте, BreakHeart, Вы писали:


BH>>Здравствуйте! Подскажите, пожалуйста, как можно реализовать следующую схему:

BH>>-Приложение вызывает некую длл
BH>>-Эта длл выполняет некоторые действия
BH>>-Затем загружает другую длл
BH>>-приложение получает хендл последней длл и берёт все функции из нее
BH>>Заранее благодарен за помощь

M>Почему нет? Все в одном адресном пространстве и в одном процессе. Все HANDLE'ы валидны для всех компонентов внутри одного процесса.

Т.е. я правильно понимаю. Приложение делает LoadLibrary и загружает первую библиотеку. Библиотека выполняется, в конце делает LoadLibrary на вторую библиотеку и возвращает её хэндл, да?
Re[3]: Dll from Dll
От: Stanislav V. Zudin Россия  
Дата: 25.10.18 12:54
Оценка:
Здравствуйте, BreakHeart, Вы писали:

M>>Почему нет? Все в одном адресном пространстве и в одном процессе. Все HANDLE'ы валидны для всех компонентов внутри одного процесса.

BH>Т.е. я правильно понимаю. Приложение делает LoadLibrary и загружает первую библиотеку. Библиотека выполняется, в конце делает LoadLibrary на вторую библиотеку и возвращает её хэндл, да?

По хорошему после LoadLibrary надо дёрнуть GetProcAddress, получить нужную тебе функцию и вызвать её, А вот она уже сделает LoadLibrary для третьей либы и далее по списку.
Или ты собираешься что-то делать прямо из DllMain? В общем случае так делать не стоит.
_____________________
С уважением,
Stanislav V. Zudin
Re[3]: Dll from Dll
От: Maniacal Россия  
Дата: 25.10.18 13:14
Оценка:
Здравствуйте, BreakHeart, Вы писали:

M>>Почему нет? Все в одном адресном пространстве и в одном процессе. Все HANDLE'ы валидны для всех компонентов внутри одного процесса.

BH>Т.е. я правильно понимаю. Приложение делает LoadLibrary и загружает первую библиотеку. Библиотека выполняется, в конце делает LoadLibrary на вторую библиотеку и возвращает её хэндл, да?

В DllMain нельзя вызывать LoadLibrary. Дизайн системы построен таким образом (если верить комментариям специалистов), что функция DllMain однозначно не увеличивает количество загруженных модулей. Вот тут кто-то даже пытался. Безуспешно.
Re: Dll from Dll
От: B0FEE664  
Дата: 25.10.18 13:44
Оценка: :)
Здравствуйте, BreakHeart, Вы писали:

BH>-Приложение вызывает некую длл

BH>-Эта длл выполняет некоторые действия
BH>-Затем загружает другую длл
BH>-приложение получает хендл последней длл и берёт все функции из нее

В лицензионных соглашениях некоторых DLL написано, что так делать нельзя.
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.