Convertendo String em Ponteiro para JNA
Estou tentando usar o JNA para consultar as permissões efetivas de um arquivo no Windows. Eventualmente, eu pretendo usar oFunção GetEffectiveRightsFromAcl, mas para fazer isso, eu preciso fornecer um ponteiro para um povoadoEstrutura do TRUSTEE. A Plataforma JNA (platform.jar) não aparece define essa estrutura, então estou tentando definir isso sozinho. Aqui está o que eu tenho até agora:
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;
}
Eu estou tentando preencher a estrutura assim:
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?
}
Este tópico do Grupos do Google recomenda usarString
campos em estruturas quando umchar *
é chamado. No entanto, não acho que isso seja apropriado na minha situação, considerando aptstrName
campo é permitido apontar para diferentes tipos de coisas, dependendo do valor deTrusteeForm
. Então, eu acho que de alguma forma preciso converter deString
paraPointer
em vez de. Eu encontrei oNativeString classe em JNA, o que funcionaria, exceto que é uma classe privada de pacotes.
Qual é a maneira recomendada para converter um JavaString
para um formato nativo e obter umPointer
para isso? Eu estou mesmo usando o tipo de dados certo para oTRUSTEE
struct? Sou um pouco novo no JNA, então, por favor, me desculpe se estou perdendo algo óbvio.
Atualizar
Eu encontrei uma solução para o meu problema, mas se alguém tiver uma solução melhor eu ainda gostaria de ouvir.