2016-11-03 16 views
1

私のアプリケーション用のJNAで作業していますが、使用について混乱していますtypedef struct pointer in java 私のコードをチェックし、私を案内してください。 ありがとうございます!以下はtypedef struct pointer to 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; 
} 

が今私の質問は次のとおりです。それはC++コードに*PHWDeviceInfoによって何を意味しているし、どのようにすることができます私の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.ByReferenceStructure.ByValueインターフェイスをタグ付けします。

JNA documents this clearly @ areeba-irfan-ullah-khanに記載されている。