Java Jna를 사용하여 C와 같이 구조체 배열에 대한 포인터를 얻고 싶습니다. 매개 변수는에 내가 여기 EnumPrinters()
기능에 액세스하려면,하고 있습니다 : 자바에서jna에서 구조 배열에 대한 포인터를 얻는 방법
BOOL EnumPrinters(
_In_ DWORD Flags,
_In_ LPTSTR Name,
_In_ DWORD Level,
_Out_ LPBYTE pPrinterEnum,
_In_ DWORD cbBuf,
_Out_ LPDWORD pcbNeeded,
_Out_ LPDWORD pcReturned
);
는
public boolean EnumPrinters(int i, String string, int i1, com.sun.jna.Pointer pntr, int i2,
com.sun.jna.ptr.IntByReference ibr, com.sun.jna.ptr.IntByReference ibr1);
이다 나는 데 문제는 내가 실패를 의미하는 오류 (122)를 받고 계속한다는 것입니다 시스템 콜을 호출 할 때. 난 그냥 코드를 내 컴퓨터에 설치된 모든 프린터를 얻고 싶은
IntByReference pcbNeeded= new IntByReference();
int pcb=0;
pcbNeeded.setValue(pcb);
IntByReference pcReturned= new IntByReference();
int pcR=0;
pcReturned.setValue(pcR);
PRINTER_INFO_4 printer = new PRINTER_INFO_4();
PRINTER_INFO_4 PRINT[] = (PRINTER_INFO_4[])printer.toArray(20);
Pointer point = PRINT[0].getPointer();
int size = PRINT[0].size();
Winspool.INSTANCE.EnumPrinters(Winspool.PRINTER_ENUM_LOCAL,null, 4, point, size,pcbNeeded ,pcReturned);
System.out.println("Operation started!");
System.out.println(printer.pPrinterName);
int rc = Kernel32.INSTANCE.GetLastError();
System.out.println("error " + rc);
: 이것은 내 코드입니다.
코드를 올바르게 포맷하십시오. 읽을 수 없습니다. – user3078414
자바의 규칙 # 1에 포인터가 없다고하지 않습니까? – KevinDTimm
[PrintServiceLookup] (http://docs.oracle.com/javase/8/docs/api/javax/print/PrintServiceLookup.html)이 필요에 맞지 않습니까? 일이 훨씬 쉬워 질 것입니다. – VGR