[英]JNA Java struct from pointer
我有一个结构,没有像原始C语言那样完整地描述。
public class DISPLAY_DEVICE extends Structure {
public char DeviceName[] = new char[32];
public int StateFlags;
}
实际上,它实际上需要更多的变量。 但是,将它们移植到所有位置都需要花费我很长时间。 现在,我创建该结构并将指针传递给dll函数,并尝试使用device.read();。 重新获得变量。 但是,变量返回空。 所以我的问题是,我需要填写整个结构吗? 还是还有其他问题?
DISPLAY_DEVICE displayDevice = new DISPLAY_DEVICE();
int i = 0;
while((CLibrary.INSTANCE.EnumDisplayDevicesA(Pointer.NULL, i, displayDevice.getPointer(), 0))) {
System.out.println("screen" + i);
displayDevice.read();
System.out.println(displayDevice.StateFlags);
System.out.println(displayDevice.DeviceName);
至少,您必须将结构定义为与其本机对应的结构相同的大小(您可以在byte []字段中填充不需要的内容)。
例如:
public class MyStruct extends Structure {
public char[] DeviceName = new char[32];
public char StateFlags;
public byte[] dontcare = new char[128];
}
如果该定义在JNA的platform.jar中不可用,您还可以使用JNAerator从C标头自动生成映射。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.