Можно ли использовать .NET Concurrent Collections для межпроцессного взаимодействия x32 в / из x64?

У меня есть 32-битное приложение, которое я не могу контролировать. В настоящее время у меня есть связь с 32-битной C ++ DLL, которая массирует данные и передает их в 32-битную .NET DLL, где мое приложение C # может получить к нему. Я хотел бы обновить мое приложение C # до 64 бит, чтобы получить больший доступ к памяти.

Есть ли способ заставить мою 32-битную C ++ DLL общаться с .NET Concurrent Collections, в частности с ConcurrentQueue? Позволит ли это межпроцессное взаимодействие? Если да, то есть ли пример, на котором я мог бы поучиться? Если нет, кто-нибудь знает какой-либо API или библиотеку для решения двунаправленных 32 — 64-битных межпроцессных коммуникаций.

Похоже, что это будет серьезной проблемой для многих разработчиков, но мой поиск не нашел быстрого, надежного и, возможно, простого решения. Мне кажется странным, что разработчики основных компонентов не предлагают никаких решений (которые я нашел).

Спасибо заранее за любую помощь.

2

Решение

Нет никакого способа иметь в процессе смесь 32-х и 64-х битных приложений и DLL.

Если вы хотите общаться между 32- и 64-битными приложениями, у вас есть несколько вариантов:

  1. Упакуйте 32-битную библиотеку в COM-объект и разместите его вне процесса. COM будет маршаллировать вызовы от 64 бит до 32 бит и обратно.

  2. Используйте IPC (например, именованные каналы, TCP или WCF) для связи между 32- и 64-разрядными приложениями.

  3. Используйте отображенные в памяти файлы для обмена данными с использованием общих структур данных. Это, наверное, самое сложное решение.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]