Convertir cadena a puntero para JNA
Estoy intentando usar JNA para consultar los permisos efectivos de un archivo en Windows. Eventualmente, planeo usar elFunción GetEffectiveRightsFromAcl, pero para hacerlo, necesito proporcionar un puntero a unEstructura del fideicomiso. La plataforma JNA (platform.jar) no aparece define esta estructura, por lo que estoy intentando definirla yo mismo. Esto es lo que tengo hasta ahora:
<code>public static class TRUSTEE extends Structure { public TRUSTEE() { super(); } public TRUSTEE(Pointer p) { super(p); read(); } public Pointer pMultipleTrustee; public int MultipleTrusteeOperation; public int TrusteeForm; public int TrusteeType; public Pointer ptstrName; } </code>
Estoy tratando de poblar la estructura de esta manera:
<code>private TRUSTEE createTrusteeForCurrentUser() { TRUSTEE result = new TRUSTEE(); result.TrusteeForm = TRUSTEE_FORM.TRUSTEE_IS_NAME; result.TrusteeType = TRUSTEE_TYPE.TRUSTEE_IS_USER; String strName = "CURRENT_USER"; // How can I set result.ptstrName using strName? } </code>
Este hilo de Grupos de Google recomienda usarString
campos en estructuras cuando unachar *
se pide para Sin embargo, no creo que esto sea apropiado en mi situación, considerando laptstrName
campo está permitido para apuntar a diferentes tipos de cosas, dependiendo del valor deTrusteeForm
. Por lo tanto, creo que de alguna manera necesito convertir deString
aPointer
en lugar. Encontré laNativeString clase en JNA, que funcionaría, excepto que es una clase de paquete privado.
¿Cuál es la forma recomendada para convertir un Java?String
a un formato nativo y obtener unaPointer
¿lo? ¿Estoy usando el tipo de datos correcto para elTRUSTEE
estructura? Soy algo nuevo en JNA, así que discúlpeme si me falta algo obvio.
Actualizar
Encontré una solución a mi problema, pero si alguien tiene una solución mejor, me gustaría escucharla.