JNA — Как использовать обратный вызов typedef

Я использую JNA, чтобы использовать DLL.

и у меня были сомнения.

в моем предыдущем коде у меня был в library.h:

NET_DVR_API LONG __stdcall NET_DVR_function_V30(LONG lUserID, LPNET_DVR_CLIENTINFO lpClientInfo, void(CALLBACK *fRealDataCallBack_V30) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser) = NULL, void* pUser = NULL, BOOL bBlocked = FALSE);

В Java с использованием JNA я определяю следующее:

public interface NewFrameCallback extends StdCallCallback {
void invoke(int lRealHandle, int dwDataType, Pointer pBuffer, int dwBufSize, int pUser);
}

int NET_DVR_function_V30(int lUserID, HCNetSDKLibrary.NET_DVR_CLIENTINFO lpClientInfo, HCNetSDKLibrary.NewFrameCallback fakeFuncPointer, Pointer pUser, boolean bBlocked);

и это сработало.

Теперь я получаю новую DLL, и мне нужно использовать другую функцию:

в .h определяется:

typedef void (CALLBACK *REALDATACALLBACK) (LONG lPlayHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser);

NET_DVR_API LONG __stdcall NET_DVR_function_V30(LONG lUserID, LPNET_DVR_CLIENTINFO lpClientInfo, void(CALLBACK *fRealDataCallBack_V30) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser) = NULL, void* pUser = NULL, BOOL bBlocked = FALSE);
NET_DVR_API LONG __stdcall NET_DVR_function_V40(LONG lUserID, LPNET_DVR_CLIENTINFO lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30 = NULL, void* pUser = NULL)

в Java я только добавляю:

public interface NewFrameCallback extends StdCallCallback {
void invoke(int lRealHandle, int dwDataType, Pointer pBuffer, int dwBufSize, int pUser);
}

int NET_DVR_function_V30(int lUserID, HCNetSDKLibrary.NET_DVR_CLIENTINFO lpClientInfo, HCNetSDKLibrary.NewFrameCallback fakeFuncPointer, Pointer pUser, boolean bBlocked);
int NET_DVR_function_V40(int lUserID, HCNetSDKLibrary.NET_DVR_CLIENTINFO lpClientInfo, HCNetSDKLibrary.NewFrameCallback fakeFuncPointer, Pointer pUser);

Очевидно, это не работает, как я могу использовать typedef в JNA? В поисках нового .h REALDATACALLBACK выглядит идентично CALLBACK * fRealDataCallBack_V30!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]