Ich habe ein Problem beim Abrufen von Informationen aus einem Speicherblock, der von der aufgerufenen Funktion zugewiesen wurde. Insbesondere gibt es die Funktion XGetWindowProperties
in der X11-Bibliothek, die in JNA enthalten ist. Sie gibt die Ergebnisse über den letzten Parameter - PointerByReference prop_return
- zurück.Abrufen eines Arrays über JNA
Ich weiß, dass der tatsächliche Speicherbereich ein Array von Window
enthält. Aber wie erstelle ich diese Objekte? Ich sehe keine Möglichkeit, es vom Zeiger selbst zu bekommen und ich kann kein Buffer
davon bekommen, da ich die Größe von Window
nicht kenne.
Die echte Funktion ist: int XGetWindowProperty(...., unsigned char **prop_return)
und mit den Parametern, die ich damit anrufe, ist es eigentlich int XGetWindowProperty(...., Window *prop_return[])
.
Während dies mein unmittelbares Problem löst, würde ich trotzdem eine allgemeine Lösung sehen wollen: wie man von PointerByReference zu einem Array von bekannten native-mapped Typen geht. – viraptor
Ja, ich kann die JNA-Frage nicht beantworten, nur die Xlib-Frage. fwiw "Window" ist nur eine Integer-ID, es ist kein sinnvolles Objekt. –