Мне нужно передать (direct) ByteBuffer
на нативные функции, которые будут читать/записывать из/в буфер. Как только эти операции будут завершены, я хотел бы получить доступ к ByteBuffer
из кода Java, используя обычные функции; в частности, limit()
и position()
должны отражать текущее состояние буфера.
Поскольку JNI будет использовать GetDirectBufferAddress()
для прямого доступа к базовому буферу, я предполагаю, что я должен называть flip ()
/limit()
/position()
после того, как я закончил чтение/запись. Однако я не смог выполнить эту работу. Например, после того, как я прочитал пару байтов в буфере от C и задал его лимит и позицию соответственно, я не могу запросить эти байты из Java; Идея Java о пределе и позиции буфера не согласуется с тем, что я сделал в коде C.
Может ли кто-нибудь указать мне на рабочий пример? Спасибо заранее.