2015-04-13 1 views
1

У нас есть VB6.0 ActiveX.exe, который получает данные из двух разных экземпляров того же процесса, то есть мой activex.exe работает в собственной памяти, и он способен получать данные из своих родительских процессов.Как два процесса могут совместно использовать одну DLL в .net?

Когда ActiveX.exe перенесен на VS 2008, ActiveX.exe потерял способность работать в своем собственном процессе. В результате он стал локальным для экземпляра родительского процесса.

Это их способ, когда я могу использовать одну DLL, которая может использоваться несколькими родительскими процессами?

ответ

0

Загрузчик Windows автоматически будет использовать одну физическую копию DLL в памяти, если она загружена несколькими процессами. Вам нечего делать, чтобы включить это поведение.

Если вы хотите обмениваться данными между процессами, вам необходимо использовать нормальные механизмы взаимодействия между процессами, такие как трубы, сокеты, файлы, сегменты разделяемой памяти и т. Д., Которые могут быть защищены правильно.

(Раньше это было несколько распространено для программ для создания общего записываемого сегмента памяти в их PE-файле и пытаться совместно использовать данные таким образом, но это позволяет любому пользователю, который может загрузить DLL (что функционально все из них) на вечеринку с данными, просто загружая DLL в вопрос ....)

+0

Могу ли я использовать таблицу «Запуск объекта» в этом контексте? –

+0

@sharan: Я не уверен, что вы подразумеваете под «таблицей запуска объектов». –