Здравствуйте! Подскажите, пожалуйста, как можно реализовать следующую схему:
-Приложение вызывает некую длл
-Эта длл выполняет некоторые действия
-Затем загружает другую длл
-приложение получает хендл последней длл и берёт все функции из нее
Заранее благодарен за помощь
Здравствуйте, BreakHeart, Вы писали:
BH>Здравствуйте! Подскажите, пожалуйста, как можно реализовать следующую схему: BH>-Приложение вызывает некую длл BH>-Эта длл выполняет некоторые действия BH>-Затем загружает другую длл BH>-приложение получает хендл последней длл и берёт все функции из нее BH>Заранее благодарен за помощь
Почему нет? Все в одном адресном пространстве и в одном процессе. Все HANDLE'ы валидны для всех компонентов внутри одного процесса.
Здравствуйте, Maniacal, Вы писали:
M>Здравствуйте, BreakHeart, Вы писали:
BH>>Здравствуйте! Подскажите, пожалуйста, как можно реализовать следующую схему: BH>>-Приложение вызывает некую длл BH>>-Эта длл выполняет некоторые действия BH>>-Затем загружает другую длл BH>>-приложение получает хендл последней длл и берёт все функции из нее BH>>Заранее благодарен за помощь
M>Почему нет? Все в одном адресном пространстве и в одном процессе. Все HANDLE'ы валидны для всех компонентов внутри одного процесса.
Т.е. я правильно понимаю. Приложение делает LoadLibrary и загружает первую библиотеку. Библиотека выполняется, в конце делает LoadLibrary на вторую библиотеку и возвращает её хэндл, да?
Здравствуйте, BreakHeart, Вы писали:
M>>Почему нет? Все в одном адресном пространстве и в одном процессе. Все HANDLE'ы валидны для всех компонентов внутри одного процесса. BH>Т.е. я правильно понимаю. Приложение делает LoadLibrary и загружает первую библиотеку. Библиотека выполняется, в конце делает LoadLibrary на вторую библиотеку и возвращает её хэндл, да?
По хорошему после LoadLibrary надо дёрнуть GetProcAddress, получить нужную тебе функцию и вызвать её, А вот она уже сделает LoadLibrary для третьей либы и далее по списку.
Или ты собираешься что-то делать прямо из DllMain? В общем случае так делать не стоит.
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, BreakHeart, Вы писали:
M>>Почему нет? Все в одном адресном пространстве и в одном процессе. Все HANDLE'ы валидны для всех компонентов внутри одного процесса. BH>Т.е. я правильно понимаю. Приложение делает LoadLibrary и загружает первую библиотеку. Библиотека выполняется, в конце делает LoadLibrary на вторую библиотеку и возвращает её хэндл, да?
В DllMain нельзя вызывать LoadLibrary. Дизайн системы построен таким образом (если верить комментариям специалистов), что функция DllMain однозначно не увеличивает количество загруженных модулей. Вот тут кто-то даже пытался. Безуспешно.
Здравствуйте, BreakHeart, Вы писали:
BH>-Приложение вызывает некую длл BH>-Эта длл выполняет некоторые действия BH>-Затем загружает другую длл BH>-приложение получает хендл последней длл и берёт все функции из нее
В лицензионных соглашениях некоторых DLL написано, что так делать нельзя.