2013-04-18 4 views
1

Уроженец библиотека Я хочу использовать иметь метод, как это:создать глобальную ссылку в ЮНА

extern unsigned long write(void); 

, что он собирается писать, однако, должны быть определены в нескольких глобальных переменных:

short int Addr; //the starting address it write to; 
short int Length; //the length of the writing; 
void * data; //the data it will write; 

Я знаю, что в JNA у NativeLibray есть способ загрузить глобальную ссылку, определенную в родной библиотеке, но, похоже, она здесь не нужна. Мне действительно нужно объявить вышеперечисленные глобальные переменные и написать им, чтобы метод write() мог работать правильно.

Любое предложение о том, как реализовать это в JNA?

Спасибо.

ответ

0

Почему бы вам просто не обернуть «метод записи» в другой, который вы можете вызвать через Java/JNA. Там вы сначала устанавливаете эти глобальные переменные, а затем вызываете реальный.

+0

ну, это не «мой» метод записи, и я действительно не хочу прикасаться к C, если у JNA нет решения для этого. – Wudong

1

Так много хакеров, которые не хотят попасть в грязные детали.

NativeLibrary обеспечивает доступ к адресам глобальных переменных, экспортируемых совместно используемой библиотекой.

NativeLibrary lib = NativeLibray.getInstance("mylib"); 
Pointer paddr = lib.getGlobalVariableAddress("Addr"); 
paddr.setInt(0, 1234); 
Смежные вопросы