Ich muss eine (direkte) ByteBuffer
zu nativen Funktionen übergeben, die aus/in den Puffer lesen/schreiben. Sobald diese Operationen abgeschlossen sind, möchte ich auf den ByteBuffer
von Java-Code zugreifen, der die regulären Funktionen verwendet; insbesondere sollten limit()
und position()
den aktuellen Zustand des Puffers widerspiegeln.Manipulation von ByteBuffer von JNI
Seit JNI GetDirectBufferAddress()
, um direkt den zugrunde liegenden Puffer zugreifen wird, geh davon ich mich flip()
/limit()
/position()
nachdem ich fertig bin Lesen/Schreiben rufen soll. Jedoch konnte ich diese Arbeit nicht machen. Zum Beispiel, nachdem ich ein paar Bytes in den Puffer von C gelesen habe, und seine Grenze und Position entsprechend gesetzt habe, kann ich diese Bytes nicht von Java abfragen; Javas Vorstellung von Pufferlimit und Position stimmt nicht mit dem überein, was ich im C-Code gemacht habe.
Kann mich jemand auf ein funktionierendes Beispiel davon hinweisen? Danke im Voraus.
Sollte funktionieren, das ist die ganze Idee. Welche Position und Grenzwerte setzen Sie und wie und welche Werte sehen Sie in Java? – EJP