1

JNA で実現した RasEnumConnections 関数が不完全なデータを返しています。
どうしたの?これは私のコードです:

public static void main(String[] args) {

    Connected();
}

private static void Connected () {
    boolean state = false;
    ArrayList<String> connectedNames = new ArrayList<>();
    IntByReference lpcb = new IntByReference(0);
    IntByReference lpcConnections = new IntByReference(0);
    Rasapi32.INSTANCE.RasEnumConnections(null, lpcb,lpcConnections);

    WinRas.RASCONN conn = new WinRas.RASCONN();
    conn.dwSize = lpcb.getValue();
    WinRas.RASCONN[] connArray;
    if(lpcConnections.getValue() > 0)
        connArray = (WinRas.RASCONN[])conn.toArray(lpcConnections.getValue());
    else
        connArray = (WinRas.RASCONN[])conn.toArray(1);
    System.out.println("lpcb: " + lpcb.getValue() + " lpcConnections: " + lpcConnections.getValue() + " RASCONN Size: " + conn.dwSize);
    int error = Rasapi32.INSTANCE.RasEnumConnections(connArray, lpcb,lpcConnections);

    if(error == WinError.ERROR_SUCCESS) {
        System.out.println("Entry name: " + Native.toString(connArray[0].szEntryName)
        + " Guid string: " + connArray[0].guidEntry.toGuidString());
        System.out.println(connArray[0].guidEntry.Data1);
        System.out.println(connArray[0].guidEntry.Data2);
        System.out.println(connArray[0].guidEntry.Data3);

    }
    else System.out.println("Error: " + error);

    WinRas.RASENTRY.ByReference entry = getPhoneBookEntry("test1");
    if(entry != null) {
        System.out.println("test1 guid: "+ entry.guidId.toGuidString());
        System.out.println(entry.guidId.Data1);
        System.out.println(entry.guidId.Data2);
        System.out.println(entry.guidId.Data3);
    }

    else System.out.println("Error: " + Native.getLastError());

    }
}

デバッガーで:

Char 配列 szEntryName には、接続名の最後の 3 文字のみが含まれます。(接続名は「test1」)

4

1 に答える 1