Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых)

 eXeL@B —› Программирование —› Подключение через dll чужого процесса
Посл.ответ Сообщение

Ранг: 29.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 01 февраля 2007 23:35
· Личное сообщение · #1

Проблема с DLL.
1. Есть DLL (чужая). Она устанавливает соединение с сервером по паролю. Хранит у себя данные об этом соединении и позволяет передаватьполучать информацию, указав номер этого соединения.
2. Есть программа, которая грузит эту DLL и устанавливает соединение с сервером.
3. При попытке проделать пункт 2 из другой программы DLL сообщает, что соединение уже установлено и подключаясь вышибает подключение первой программы.
4. При попытке передать данные из другой программы, указав номер соединения, выдается сообщение, что о таком соединении она ничего не знает. Оно и понятно - инфа о соединении лежит принадлежит памяти первого процесса и не разделяется меж процессами.

Нужно. Подключить программу №2 через уже запущенную dll.

Исходников dll нет. Написать для нее wrapper можно.

Я вижу только такой вариант. Сервис-wrapper, грузящий dll при старте ОСи. dll-wrapper для программы №1 обращающийся к сервису. и такой же dll-wrapper для программы №2.
Беда в том, что dll принимает в качестве аргументов функций указатели. А значит мне придется производить перекопирование памяти в dll-wrapper'ах. (А можно ли определить размер этих аргументов?). Гемор и не факт что получится.

Может есть вариант проще?!!!!!
{есть у меня склонность все усложнять}



Ранг: 108.7 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 01 февраля 2007 23:50
· Личное сообщение · #2

Как я понял (это было очень сложно ) - только внедрение.



Ранг: 29.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 02 февраля 2007 00:09
· Личное сообщение · #3

Как я описывал? Или проще можно?



Ранг: 108.7 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 02 февраля 2007 00:32
· Личное сообщение · #4

А зачем врапер? По моему можно же приатачится к процессу. И тогда в общем адресном пространстве делай что нужно.



Ранг: 29.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 02 февраля 2007 01:13
· Личное сообщение · #5

Я не уверен, что в этом будет смысл. Есть ограничения:
1. Программа №1 - сервис под админом.
2. Программа №2 - под клиентской записью и должна подкл/откл. динамически.
3. Экземпляров Программы №2 может быть несколько и должна быть обеспечена их совместная работа.
4. Хорошо бы, чтобы все это удовольствие работоло без терминалов и удаленных рабочих столов. Remoting короче.

Мне понравился ответ на wasm.ru
"юзать RPC. т.е. один процесс грузит твою
длл и является RPC сервером. остальные
(программы N1 N2) являются RPC клиентами.
большую часть кода сгенерит MIDL. руками
останется написать .def файл и еще DllMain().
в качестве халявного бонуса будет можно
запускать проги на разных компах.
"
by kropalik

Было бы идеально, если бы у меня был опыт в RPC. Так что ищу лит-ру и прощаюсь с выходными.



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 02 февраля 2007 04:30
· Личное сообщение · #6

Боюсь, что не понял, что нужно, но можно запустить "2" процесса в одном адресном пространстве.


 eXeL@B —› Программирование —› Подключение через dll чужого процесса
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати