现在我已经定义了 ac 结构如下:
struct HostNameEntry {
char *hostName;
struct HostNameEntry *next;
};
我已经定义了一个方法如下:
listHosts(HostNameEntry **hostNameListPtr)
上述方法将返回一个 HostNameEntry 给调用者。
如何通过 JNA 映射此结构/方法?以及如何获取存储在 HostNameEntry 中的主机名?
非常感谢
现在我已经定义了 ac 结构如下:
struct HostNameEntry {
char *hostName;
struct HostNameEntry *next;
};
我已经定义了一个方法如下:
listHosts(HostNameEntry **hostNameListPtr)
上述方法将返回一个 HostNameEntry 给调用者。
如何通过 JNA 映射此结构/方法?以及如何获取存储在 HostNameEntry 中的主机名?
非常感谢
您使用 Structure.ByReference 标记 HostNameEntry 类的一个版本,以强制该字段采用指针值(而不是内联)。
public class HostNameEntry extends Structure {
public static class ByReference extends HostNameEntry implements Structure.ByReference { }
public String hostName;
public HostNameEntry.ByReference next;
public HostNameEntry() { }
public HostNameEntry(Pointer p) { super(p); read(); }
}
public interface MyInterface extends Library {
MyInterface INSTANCE = ...;
void listHosts(PointerByReference pr);
}
// actual usage
PointerByReference pref = new PointerByReference();
MyInterface.INSTANCE.listHosts(pref);
HostNameEntry first = new HostNameEntry(pref.getValue());