我正在为我的应用程序开发JNA,我对在java中使用 typedef struct pointer 感到困惑。 请检查我的代码并指导我。 提前谢谢!
以下是我的c ++代码
typedef struct tagHWDeviceInfo
{
USHORT VendorID; // vendor id
USHORT ProductID; // product id
DWORD nXExt; // firmware width
DWORD nYExt; // firmware height
DWORD preesure; // pressure level
DWORD penState; // pen state
}HWDeviceInfo, *PHWDeviceInfo;
和java代码
public class HWDeviceInfo extends Structure{
short VendorID;
short ProductID;
int nXExt; // firmware width
int nYExt; // firmware height
int preesure; // pressure level
int penState;
}
现在我的问题是: c ++代码中*PHWDeviceInfo
的含义是什么?如何在我的java代码中使用此指针?
答案 0 :(得分:0)
JNA会在函数调用中自动将Structure
的实例转换为struct *
,并在结构字段定义中自动转换为struct
。 Structure.getPointer()
为您提供JNA将使用的指针。
您可以通过使用Structure.ByReference
和Structure.ByValue
接口标记类和/或参数类型来修改此默认行为。
@ areeba-irfan-ullah-khan所指出的JNA documents this clearly。