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自体または別の方法で、問題を解決するより簡単な方法はありますか?