Pointeur sur un tableau de structures en tant qu’arguments de méthode JNA

J’essaie de créer une implémentation de la JNA sur la bibliothèque SctpDrv . Mon problème est que je ne comprends pas trop d’indicateurs pour structurer des tableaux. J’ai essayé de chercher une solution, mais elles ont toujours été légèrement différentes de ce que j’ai besoin de savoir. La documentation de la JNA ne montre qu’un exemple avec un pointeur sur un tableau de type primitif. Il semble également y avoir différentes façons de le faire, dont certaines sont dépréciées.

int WSAAPI internal_sctp_getpaddrs (SOCKET, sctp_assoc_t, struct sockaddr **); void WSAAPI internal_sctp_freepaddrs (struct sockaddr *); 

Selon la documentation, le troisième argument de getpaddrs est utilisé pour renvoyer un tableau de structures sockaddr . Quelle est la méthode recommandée pour déclarer les méthodes JNA correspondantes, comment préparer l’argument et comment y accéder après l’appel dans mon code java?

Aussi, pour m’aider à comprendre, comment pourrais-je déclarer et utiliser une fonction où à la place, l’argument est un tableau contenant des pointeurs?

 // Declare the SOCKADDR struct public class SOCKADDR extends Structure { // Declare fields here public SOCKADDR() { // required for toArray() } public SOCKADDR(Pointer pointer) { super(pointer); } } // Declare these Java methods to be mapped by JNA to the C APIs public int internal_sctp_getpaddrs(int socket, int sctp, PointerByReference sockaddrRef); public void internal_sctp_freepaddrs(SOCKADDR sockaddr); // Use this code to call internal_sctp_getpaddrs() // This code assumes the number of SOCKADDRs returned is in the int return value. { PointerByReference sockaddrRef; Pointer pointer; SOCKADDR sockaddr, sockaddrs[]; int size; sockaddrRef = new PointerByReference(); size = internal_sctp_getpaddrs(socket, sctp, sockaddrRef); pointer = sockaddrRef.getValue(); sockaddr = new SOCKADDR(pointer); sockaddrs = (SOCKADDR[]) sockaddr.toArray(size); }