Вот рабочий пример, который я только что поднял из своей библиотеки JNI AS / 400, чтобы разрешить собственный указатель пользовательской очереди для проверки существования очереди - он копирует библиотеку очереди и имя из байтового массива Java (уже переведенного в CCSID задания) в нативный код и использует его. Принять к сведению вызовы функции выпуска; их можно изменить, чтобы скопировать содержимое собственного массива обратно в байтовые массивы Java для перемещения данных другим способом:
JNIEXPORT jboolean JNICALL Java_com_mycompany_jni400_UserQueue_jniResolve(JNIEnv *jep,jobject thsObj,
jbyteArray queueLibrary,jbyteArray queueName) {
jbyte *lib,*nam;
bool rtn;
thsObj=thsObj;
lib=(*jep)->GetByteArrayElements(jep,queueLibrary,0);
nam=(*jep)->GetByteArrayElements(jep,queueName,0);
rtn=(usrq_resolve((byte*)lib,(byte*)nam)!=NULL);
(*jep)->ReleaseByteArrayElements(jep,queueLibrary,lib,JNI_ABORT); /* abort to not copy back contents */
(*jep)->ReleaseByteArrayElements(jep,queueName ,nam,JNI_ABORT); /* abort to not copy back contents */
if(rtn) { return JNI_TRUE; }
else { return JNI_FALSE; }
}