我试图在JNA中映射Win32函数EnumJobs。该方法具有以下特征:如何将指针映射到JNA中的结构阵列
BOOL EnumJobs(
__in HANDLE hPrinter,
__in DWORD FirstJob,
__in DWORD NoJobs,
__in DWORD Level,
__out LPBYTE pJob,
__in DWORD cbBuf,
__out LPDWORD pcbNeeded,
__out LPDWORD pcReturned
);
我想出大部分除了LPBYTE pJob根据文档这是一个指向接收JOB_INFO结构的阵列的缓冲器。我似乎无法弄清楚如何正确执行此映射。到目前为止,我有:
boolean EnumJobs(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs, DWORD Level, JOB_INFO_2[] pJob, DWORD cbBuf, IntByReference pcbNeeded, IntByReference pcReturned);
但我发现了一个IllegalArgumentException:无法确定嵌套结构的大小:不能实例类com.sun.jna.structure(java.lang.InstantiationException)任何见解进入如何映射和处理将不胜感激。
我得到了传递指针的函数调用。我不太清楚您的Java结构内存与本机内存的同步是什么意思。有没有这样做的例子? – 2011-05-06 14:42:20
没关系想通了。在添加EnumJobs调用之前,需要调用JOB_INFO_2结构的写入方法,然后我需要调用JOB_INFO_2结构的read方法。谢谢你的帮助! – 2011-05-06 14:56:23