指向结构数组的指针作为JNA方法参数

我试图通过SctpDrv库创建一个JNA实现。 我的问题是我没有理解指向结构数组的指针。 我试图寻找解决方案,但它们总是与我需要知道的略有不同。 JNA dokumentation仅显示一个带有指向基本类型数组的指针的示例。 似乎还有不同的方法,其中一些是被贬低的。

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

根据文档,getpaddrs的第三个参数用于返回一个sockaddr结构数组。 声明相应的JNA方法的推荐方法是什么,如何准备参数,以及在我的java代码中调用之后访问它?

另外,为了帮助我理解,我将如何声明和使用一个函数,而参数是一个包含指针的数组?

 // 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); }