JNI: Как получить размер jbyteArray

Предпосылки

Я работаю с байтовыми массивами в JNI . И я не могу получить длину из jbyteArray . Я пишу код в eclipse в Windows 7 .

Код Java:

private native int Enroll( byte[] pSeed );

Код JNI:

В JNI у меня есть структура с двумя членами unsigned long length и unsigned char data [1]

typedef struct blobData_s {
    unsigned long     length;
    unsigned char     data[1];
} blobData_t;

Теперь, когда моя функция JNI получает в качестве аргумента jbyteArray jpSeed я хочу получить длину jpSeed и установить ее как член длины структуры.

JNIEXPORT jint JNICALL Java_com_Test_Enroll( JNIEnv* env, jobject thiz, jbyteArray jpSeed ){
     blobData_t* bd = malloc( sizeof(blobData_t) );
     bd->length = **Question 1**
     bd->data[1] = jbyteArray;
}

Вопрос 1: Как я могу получить длину jpSeed в JNI?

Вопрос 2: правильно ли работает этот код bd.data [1] = jbyteArray; ?

11
задан Viktor Apoyan 7 June 2011 в 10:23
поделиться