Devo passare un (diretto) ByteBuffer
alle funzioni native che leggeranno/scrivono da/nel buffer. Una volta completate queste operazioni, desidero accedere allo ByteBuffer
dal codice Java utilizzando le normali funzioni; in particolare, limit()
e position()
dovrebbero riflettere lo stato corrente del buffer.Manipolazione di ByteBuffer da JNI
Da JNI utilizzerà GetDirectBufferAddress()
per accedere direttamente buffer sottostante, sto assumendo devo chiamare flip()
/limit()
/position()
dopo che sono fatto lettura/scrittura. Tuttavia, non sono stato in grado di farlo funzionare. Ad esempio, dopo aver letto un paio di byte nel buffer da C e aver impostato il suo limite e la posizione di conseguenza, non posso interrogare quei byte da Java; L'idea di Java del limite e della posizione del buffer non è coerente con ciò che ho fatto nel codice C.
Qualcuno può indicarmi un esempio funzionante di questo? Grazie in anticipo.
Dovrebbe funzionare, questa è l'idea. Quali posizioni e valori limite stai impostando, e come, e quali valori per loro stai vedendo in Java? – EJP