0

C 構造体へのポインターのアドレスにアクセスできます。どのように入手したかは問題ではありません。確認したところ、正しく受信されました。

C の定義は次のようになります。

union Data_u
{
  long long u_integer;
  struct another_s u_another;
};
struct Data_s
{
  unsigned long s_Type;
  union Data_u s_Value;
};

Data_s*をJava の同様の構造にマップする必要があります。インターネットで検索したところ、使用できると思われるJNAライブラリが見つかりました。

JNA を使用して C 構造体を Java 構造に変換する適切な方法が見つかりませんでした。対応するJava構造を定義できることがわかりましたが、JNAはネイティブ呼び出しへのアクセスに使用され、直接構造変換には使用されませんが、サポートされています。

具体的には、たとえば次のような方法を見つけました。

static Structure updateStructureByReference(Class type, Structure s, Pointer address)

...これにより、私が持っているポインターアドレスで構造体を埋めることができると思います。メソッドにはパッケージへのアクセス権があり、これからはパブリックに変更します。つまり、ライブラリのハッキングを開始します...

おそらくJNA自体または別の方法で、問題を解決するより簡単な方法はありますか?

4

1 に答える 1