Konvertieren eines Strings in einen Zeiger für JNA
Ich versuche, JNA zu verwenden, um die effektiven Berechtigungen für eine Datei in Windows abzufragen. Irgendwann habe ich vor, das zu verwendenGetEffectiveRightsFromAcl-Funktion, aber dazu muss ich einen Zeiger auf ein gefülltes bereitstellenTRUSTEE-Struktur. Die JNA-Plattform (platform.jar) scheint diese Struktur nicht zu definieren, daher versuche ich, sie selbst zu definieren. Folgendes habe ich bisher:
<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>
Ich versuche, die Struktur wie folgt zu füllen:
<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>
Dieser Google Groups-Thread empfiehlt die Verwendung vonString
Felder in Strukturen, wenn achar *
ist angesagt. Ich denke jedoch nicht, dass dies in meiner Situation angemessen ist, wenn man bedenkt, dassptstrName
Feld darf auf verschiedene Arten von Dingen zeigen, abhängig vom Wert vonTrusteeForm
. Also, ich denke, ich muss irgendwie konvertierenString
zuPointer
stattdessen. ich fand dieNativeString Klasse in JNA, die funktionieren würde, außer es ist eine Paket-private Klasse.
Was ist der empfohlene Weg, um ein Java zu konvertierenString
in ein natives Format und erhalten aPointer
dazu? Benutze ich überhaupt den richtigen Datentyp für dieTRUSTEE
Struktur? Ich bin etwas neu in JNA, entschuldigen Sie mich bitte, wenn mir etwas Offensichtliches fehlt.
Aktualisieren
Ich habe eine Lösung für mein Problem gefunden, aber wenn jemand eine bessere Lösung hat, würde ich sie immer noch gerne hören.