Я пытаюсь отобразить следующий метод C, предоставленный из vxlapi.dll, в java:
XLstatus xlCanTransmit (
XLportHandle portHandle,
Xlaccess accessMask,
unsigned int *messageCount,
void *pMessages)
Моя проблема связана с void * pmessages , я пытался использоватьУказатель, как указано на странице сопоставления JNA, но DLL, кажется, не принимает этот тип.Мне нужно передать сообщение s_xl_event, что это определенная структура:
public class s_xl_event extends Structure {
public class ByReference extends s_xl_event implements Structure.ByReference {}
public byte tag;
public byte chanIndex;
public short transId;
public short portHandle;
public byte flags;
public byte reserved;
public long timeStamp;
public s_xl_tag_data tagData;
public s_xl_event() {
allocateMemory(56); // vxlapi.h: s_xl_event requires 48 byte
}
@Override
protected List<String> getFieldOrder() {
return Arrays.asList("tag","chanIndex","transId","portHandle","flags","reserved","timeStamp","tagData");
}
}
Если я передаю элемент s_xl_event, dll отвечает нормально, но не работает должным образом, отправляет все 0. С указателемвозвращает XL_ERR_WRONG_PARAMETER.Можете ли вы помочь мне понять, в чем я не прав?Спасибо