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?

Foi útil?

Solução 2

Eu tenho usado Finaly JNA e a plataforma biblioteca que eles fornecem. o Kernel32 O pacote oferece acesso ao Createfilemapping e MapViewOffile funções.

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top