JNA - Как использовать класс FOREIGN_THREAD_START_ROUTINE? - PullRequest
0 голосов
/ 11 октября 2018

Кажется, что класс FOREIGN_THREAD_START_ROUTINE (который представляется как JNA представление для класса LPTHREAD_START_ROUTINE в C ) может быть нарушен и / или не является полной реализациейкласса.Я никоим образом не нашел его работоспособным и даже не успешно создал его экземпляр.

Функция Kernel32 CreateRemoteThread требует его в качестве параметра, однако я не нашел способа фактически создать его экземпляр и любые временные идентичные классы, которые яВыполнено исключение « недопустимый доступ к памяти ».При создании его нового экземпляра он всегда выдает исключение со следующим сообщением об ошибке:

Exception in thread "main" java.lang.Error: Structure.getFieldOrder() on class com.sun.jna.platform.win32.WinBase$FOREIGN_THREAD_START_ROUTINE returns names ([foreignLocation]) which do not match declared field names ([])

Но он также имеет ONLY конструктор без аргументов и не объявляется абстрактным,поэтому необходимо переопределить метод getFieldOrder и повторно объявить член foreignLocation (он уже объявлен в классе, но объявлен как закрытый, а getFieldOrder не переопределен в самом классе, поэтому член foreignLocation поэтомунедоступен методу getFieldOrder, объявленному в классе Structure) в самом экземпляре, мне кажется плохим дизайном.

Короче:

- это FOREIGN_THREAD_START_ROUTINE класс действительно функционален, и если это так, как его можно успешно создать?

Любая помощь будет принята с благодарностью!

...