Вы заполнили поля класса Java для своей структуры SHARE_INFO_2
после ее создания, но вы не записали новые поля в собственную память до использования структуры, поэтому собственная функция видит нулевые указатели и начальные значения созданной структуры.
Когда при отображении метода используется класс Structure
, эта запись java в нативную выполняется автоматически. В этом случае, однако, метод NetShareAdd()
ожидает Pointer
(поскольку существует несколько различных классов, которые можно использовать). JNA не знает, откуда появился указатель или насколько велик буфер, и т. Д. c., Поэтому он не может автоматически копировать память на исходную сторону после того, как вы внесли изменения java.
Добавление shi.write()
после установки всех значений Java на стороне shi
скопирует эти данные в собственную память, а ваш буфер будет содержать данные и указатели, которые ожидает метод.