Necesito pasar un (directo) ByteBuffer
a funciones nativas que leerán/escribirán desde/hacia el búfer. Una vez que se completen estas operaciones, me gustaría acceder al código ByteBuffer
desde Java usando las funciones regulares; en particular, limit()
y position()
deben reflejar el estado actual del búfer.Manipulación de ByteBuffer de JNI
Desde JNI utilizará GetDirectBufferAddress()
para acceder directamente a la memoria intermedia subyacente, estoy asumiendo que debería llamar flip()
/limit()
/position()
después que haya terminado la lectura/escritura. Sin embargo, no he podido hacer que esto funcione. Por ejemplo, después de leer un par de bytes en el búfer de C y establecer su límite y posición en consecuencia, no puedo consultar esos bytes desde Java; La idea de Java del límite y la posición del buffer no son consistentes con lo que hice en el código C.
¿Alguien me puede indicar un ejemplo de esto? Gracias por adelantado.
Debería funcionar, esa es toda la idea. ¿Qué posición y valores límites está configurando, y cómo, y qué valores está viendo para ellos en Java? – EJP