JNA 中的 typedef 结构指针

typedef struct pointer into 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 代码中使用这个指针?

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

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

JNA documents this clearly 如@areeba-irfan-ullah-khan 所述。