Como acessar arquivos mapeados de memória C ++ em java
-
28-09-2019 - |
Pergunta
Eu tenho um aplicativo Windows C ++ que cria um arquivo mapeado de memória para um bitmap que é atualizado com frequência. Gostaria de acessar esse arquivo mapeado de memória para exibir a imagem ao vivo em um aplicativo Java. Como eu posso fazer isso?
Sei que o FileChannel pode ser mapeado para a memória, mas não consigo ver como acessar um arquivo mapeado de memória criado por outro processo.
Eu já uso o JNA no meu aplicativo Java, devo usá -lo para acessar a funcionalidade padrão do Windows Memory Mapped Files?
Ou você tem alguma outra solução além do arquivo mapeado de memória para exibir um fluxo de imagens ao vivo em Java a partir de uma imagem criada por um programa separado?
Outras dicas
Existe uma amostra de código aqui Isso faz o que você deseja usando o JNI para fazer a ponte de C ++ (arquivos mapeados da memória Win32) para Java. Pode funcionar como está, embora alguma limpeza de segurança e rosqueamento possa ser necessária, dependendo do seu cenário.
Um arquivo mapeado de memória ainda é um arquivo. Você pode lê-lo com java.io, ou pode usar um MappedByteBuffer do java.nio se você o desejar mapeado na memória em java também.