typedef struct指向JNA的指针

时间:2016-11-03 09:37:58

标签: java c++ pointers struct jna

我正在为我的应用程序开发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代码中使用此指针?

1 个答案:

答案 0 :(得分:0)

JNA会在函数调用中自动将Structure的实例转换为struct *,并在结构字段定义中自动转换为structStructure.getPointer()为您提供JNA将使用的指针。

您可以通过使用Structure.ByReferenceStructure.ByValue接口标记类和/或参数类型来修改此默认行为。

@ areeba-irfan-ullah-khan所指出的JNA documents this clearly