【发布时间】:2011-05-05 20:09:04
【问题描述】:
我正在尝试在 JNA 中映射 Win32 函数 EnumJobs。该方法具有以下签名:
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: Can't determine size of nested structure: can't instantiate class com.sun.jna.structure (java.lang.InstantiationException) 任何关于如何映射和处理的见解都会不胜感激。
【问题讨论】: