Кажется, что класс 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
класс действительно функционален, и если это так, как его можно успешно создать?
Любая помощь будет принята с благодарностью!