Манипуляции с ByteBuffer из JNI

Мне нужно пройти (прямой)ByteBufferк нативным функциям, которые будут читать/записывать из/в буфер. После завершения этих операций я хотел бы получить доступ к ByteBufferиз кода Java, используя обычные функции; в частности, limit()и position()должны отражать текущее состояние буфера.

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

Может ли кто-нибудь указать мне на рабочий пример этого? Заранее спасибо.

16
задан maba 4 July 2012 в 16:20
поделиться