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 *
,并在结构字段定义中转换为 struct
。 Structure.getPointer()
为您提供 JNA 将使用的指针。
您可以通过使用 Structure.ByReference
和 Structure.ByValue
接口标记 class and/or 参数类型来修改此默认行为。
JNA documents this clearly 如@areeba-irfan-ullah-khan 所述。
我正在为我的应用程序开发 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 *
,并在结构字段定义中转换为 struct
。 Structure.getPointer()
为您提供 JNA 将使用的指针。
您可以通过使用 Structure.ByReference
和 Structure.ByValue
接口标记 class and/or 参数类型来修改此默认行为。
JNA documents this clearly 如@areeba-irfan-ullah-khan 所述。