2016-11-03 3 views
1

Я работаю над JNA для моего приложения, и я смущен насчет использования typedef struct pointer в java. Пожалуйста, проверьте мой код и назовите меня. Спасибо заранее!typedef struct pointer в JNA

Ниже мой 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; 
} 

Теперь мой вопрос: что это значит по *PHWDeviceInfo в C++ код и как я могу использовать этот указатель в моем java-коде?

+0

Возможно, вы захотите [прочитать об указателях/ссылках] (http://softwareengineering.stackexchange.com/a/141838). –

+0

Что именно вы не понимаете? Это указатель. См. Здесь: http://stackoverflow.com/questions/1543713/c-typedef-of-pointer-to-structure –

+0

И вы не можете использовать указатели в коде Java. Что вы можете с этим сделать? –

ответ

0

JNA автоматически преобразует экземпляры Structure в struct * в вызовы функций и до struct в определениях полей структуры. Structure.getPointer() дает указатель, который будет использовать JNA.

Вы можете изменить это поведение по умолчанию, пометя свой класс и/или типы параметров с помощью интерфейсови Structure.ByValue.

JNA documents this clearly как указано @ areeba-irfan-уллах-ханом.

Смежные вопросы