我試圖在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