Asignar un búfer de char con JNA, Rhino, JavaScript
-
22-09-2019 - |
Pregunta
En Narwhal, estamos usando JNA para hacer libc
llamadas como getcwd
y chdir
. Solo he podido usar esto con mi conocimiento limitado de la interfaz JNA en lo que respecta a JavaScript en Rhino, tratando exclusivamente con primitivas. Necesito saber cómo asignar un búfer de char para poder pasarlo a getcwd
, recupere una cadena de JavaScript de ese búfer, y traiga el búfer, presumiblemente en un finally
cláusula.
Así es como tomamos el libc
interfaz:
Así es cómo chdir
está implementado:
Aquí es donde necesitamos la solución para getcwd
Las soluciones en Ruby o cualquier otro lenguaje integrado para JNA ayudarían.
Solución
Puede usar un nio.buffer o jna.pointer para pasar un búfer de salida, algo así como:
invokeString(new jna.Memory(4097), 4097)
GetCWD devolverá un char* al búfer de entrada, por lo que JNA marcará el regreso a una cadena
Para admitir rutas más largas, puede tomar una longitud opcional
en Java, nuevo archivo ("."). GetAbSolutePath () puede obtener la ruta actual, por lo que es posible que no necesite getCwd ...