JNA-如何使用FOREIGN_THREAD_START_ROUTINE类?

时间:2018-10-11 00:53:14

标签: java jna

似乎FOREIGN_THREAD_START_ROUTINE类(在 C 中似乎是LPTHREAD_START_ROUTINE类的 JNA 表示形式)可能已损坏, /或者不是该类的完整实现。我从来没有发现它可以正常工作,甚至无法成功创建它的实例。

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成员不可用于{{1}中声明的getFieldOrder方法}类)对于我来说似乎是不好的设计。

简而言之:

Structure类是否真正起作用,如果可以,如何成功实例化它?

任何帮助将不胜感激!

0 个答案:

没有答案