|
|
|
Подключение через чужую dll
|
|||
|---|---|---|---|
|
#18+
Проблема с DLL. 1. Есть DLL (чужая). Она устанавливает соединение с сервером по паролю. Хранит у себя данные об этом соединении и позволяет передавать\получать информацию, указав номер этого соединения. 2. Есть программа, которая грузит эту DLL и устанавливает соединение с сервером. 3. При попытке проделать пункт 2 из другой программы DLL сообщает, что соединение уже установлено и подключаясь вышибает подключение первой программы. 4. При попытке передать данные из другой программы, указав номер соединения, выдается сообщение, что о таком соединении она ничего не знает. Оно и понятно - инфа о соединении лежит принадлежит памяти первого процесса и не разделяется меж процессами. Нужно. Подключить программу №2 через уже запущенную dll. Исходников dll нет. Написать для нее wrapper можно. Я вижу только такой вариант. Сервис-wrapper, грузящий dll при старте ОСи. dll-wrapper для программы №1 обращающийся к сервису. и такой же dll-wrapper для программы №2. Беда в том, что dll принимает в качестве аргументов функций указатели. А значит мне придется производить перекопирование памяти в dll-wrapper'ах. (А можно ли определить размер этих аргументов?). Гемор и не факт что получится. Может есть вариант проще?!!!!! {есть у меня склонность все усложнять} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 10:39 |
|
||
|
Подключение через чужую dll
|
|||
|---|---|---|---|
|
#18+
TRUF... Может есть вариант проще?!!!!!... 1) попытаься найти для этого "канала связи" настройки через внешнии параметры (такие как IP адрес аббонента с которым нуна соединиться, номер порта на локальной машине и номер порта на удалённой машине). Если их нема...то тут два случая... 2) Использовать подложку под "чёрный ящик" (ниже, на уровне сетевого драйвера). 3) Использовать врапер, как Вы описали - над "чёрным ящиком" (выше, подсовывая ему одного клиента - но прогоняя через "чёрный ящик" данные от разных клиентов).. 4) написать своё... В принцепе это не так страшно... с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 13:31 |
|
||
|
Подключение через чужую dll
|
|||
|---|---|---|---|
|
#18+
А если положить одну копию dll в каталог программы №1, а другую копию dll - в каталог программы №2... Тогда, может, винда их загрузит как две разных dll, и соединение вышибаться не будет. А может, дизассемблировать её да посмотреть, чего там такое творится. Тогда конкретнее можно будет говорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 17:54 |
|
||
|
Подключение через чужую dll
|
|||
|---|---|---|---|
|
#18+
HryuckinnenА если положить одну копию dll в каталог программы №1, а другую копию dll - в каталог программы №2... Тогда, может, винда их загрузит как две разных dll, и соединение вышибаться не будет. А может, дизассемблировать её да посмотреть, чего там такое творится. Тогда конкретнее можно будет говорить. можно с бубном ышо походить влево... а можно вправо...но если используется один и тот же порт (к примеру) то в любом случае Вы получите оутлуп... с уважением (круглый) ЗЫ Если задача стоит как "изучить" - то да, наверное стоит дезасэмблировать. Написать на азме своё приложение - весь стэк TCP/IP. Круто...Только одно маленьчкое но... Задача именно так стоит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 19:10 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34301226&tid=2029518]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
142ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 458ms |

| 0 / 0 |
