2016-11-03 5 views
1

Ich arbeite an JNA für meine Anwendung, und ich bin verwirrt über die Verwendung typedef struct Zeiger in Java. Bitte überprüfen Sie meinen Code und führen Sie mich. Vielen Dank im Voraus!typedef struct Zeiger in JNA

Unten ist mein C++ Code

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; 

und Java-Code

public class HWDeviceInfo extends Structure{ 
    short VendorID; 
    short ProductID; 
    int nXExt;  // firmware width 
    int nYExt;  // firmware height 
    int preesure;  // pressure level 
    int penState; 
} 

Nun meine Frage:, was es von *PHWDeviceInfo in C++ Code bedeutet und wie kann ich benutze diesen Zeiger in meinem Java Code?

+0

Sie könnten [lesen Sie dies über Zeiger/Referenzen] (http://softwareengineering.stackexchange.com/a/141838). –

+0

Was genau verstehst du nicht? Es ist ein Zeiger. Siehe hier: http://stackoverflow.com/questions/1543713/c-typedef-of-pointer-to-structure –

+0

Und Sie können nicht wirklich Zeiger in Java-Code verwenden. Was kannst du damit machen? –

Antwort

0

JNA konvertiert Instanzen von Structure automatisch in Funktionsaufrufe in struct * und in Strukturfelddefinitionen in struct. Structure.getPointer() gibt Ihnen den Zeiger, den JNA verwenden wird.

Sie können dieses Standardverhalten ändern, indem Sie Ihre Klassen- und/oder Parametertypen mit den Schnittstellen Structure.ByReference und Structure.ByValue kennzeichnen.

JNA documents this clearly wie von @ areeba-irfan-ullah-khan.