Saya mencoba memasang beberapa perangkat jaringan menggunakan WNetAddConnection2W dan terus-menerus mendapatkan com.sun.jna.LastErrorException: [997] Operasi I/O yang tumpang tindih sedang berlangsung. Sebelum setiap menjalankan saya memeriksa bahwa tidak ada pemetaan sebelumnya yang tersisa. Juga perintah net use bekerja dengan sempurna. Bagaimana saya bisa menyelesaikan masalah ini?

Ini kode saya

public static final String remotename = "\\\\10.10.19.33\\C$";


public int WNetAddConnection2A(NETRESOURCEA lpNetResource, String lpPassword, String lpUserName, int dwFlags) throws LastErrorException;
public int WNetAddConnection2W(NETRESOURCEW lpNetResource, WString lpPassword, WString lpUserName, int dwFlags) throws LastErrorException;

private NETRESOURCEW setNetresourcew() {
        NETRESOURCEW lpNetResource;
        lpNetResource = new NETRESOURCEW();
        lpNetResource.dwScope = 0;
        lpNetResource.dwType = NETRESOURCE.RESOURCETYPE_DISK;
        lpNetResource.dwDisplayType = NETRESOURCE.RESOURCEDISPLAYTYPE_SHARE;
        lpNetResource.dwUsage = NETRESOURCE.RESOURCEUSAGE_CONNECTABLE;
        lpNetResource.lpLocalName = null;
        lpNetResource.lpRemoteName = new WString(remotename);
        lpNetResource.lpComment = null;
        lpNetResource.lpProvider = null;
        return lpNetResource;
    }

  @Test
  public void testW() {
      NETRESOURCEW lpNetResource = setNetresourcew();

      WString lpPassword = new WString(password);
      WString lpUserName = new WString(username);

      int dwFlags = Mpr.CONNECT_TEMPORARY;
    
      try {
        int errorCode = Mpr.INSTANCE.WNetAddConnection2W(lpNetResource, lpPassword, lpUserName, dwFlags);
    
        if (errorCode == 0) {
            errorCode = Mpr.INSTANCE.WNetCancelConnection2W(lpNetResource.lpRemoteName, 0, 1);
        }
      } catch (LastErrorException ex){
          System.out.println("Mounting Windows Share: " + ex + " " + ex.getErrorCode() + " " + ex.getCause());
          Mpr.INSTANCE.WNetCancelConnection2W(lpNetResource.lpRemoteName, 0, 1);
      }
  }
0
TanyaSK 1 Juli 2020, 19:34

1 menjawab

Jawaban Terbaik

Pengecualian kesalahan terakhir tidak boleh dibuang dari definisi WNetAddConnection2 karena melalui pengecualian APAPUN, meskipun tidak melalui panggilan ini.

0
user13848425user13848425 6 Juli 2020, 13:13