2010-11-01 10 views
2

У меня есть приложение windows C++, которое создает файл с отображением памяти для растрового изображения, которое часто обновляется. Я хотел бы получить доступ к этому файлу с отображением памяти для отображения живого изображения в Java-приложении. Как я могу это сделать?Как получить доступ к файлам с отображением памяти C++ в java

Я знаю, что FileChannel может быть отображен в память, но я не вижу, как получить доступ к файлу с отображением памяти, созданному другим процессом.

Я уже использую JNA в своем приложении java, должен ли я использовать его для доступа к стандартным функциям файлов с памятью в окнах?

Или у вас есть другое решение, кроме файла с отображением памяти, чтобы отображать поток живых изображений в java из образа, созданного отдельной программой?

ответ

1

У меня окончательно используется jna и платформа библиотека, которую они предоставляют. Пакет Kernel32 предлагает доступ к функциям MapViewOfFile. CreateFileMapping и .

2

Существует пример кода here, который делает то, что вы хотите, используя JNI для перехода с C++ (файлы с отображением памяти Win32) на Java. Может просто работать так, как есть, хотя в зависимости от вашего сценария может потребоваться очистка для обеспечения безопасности и потоковой передачи.

0

Файл с отображением памяти по-прежнему является файлом. Вы могли бы прочитать его с помощью java.io, или вы могли бы использовать MappedByteBuffer из java.nio, если хотите, чтобы он отображался в памяти на Java.