[MPR]
[reactos.git] / reactos / dll / win32 / mpr / mpr_ros.diff
index 4d82fe0..0460538 100644 (file)
@@ -156,84 +156,3 @@ Index: wnet.c
  }\r
  \r
  /*****************************************************************\r
-@@ -1577,12 +1659,75 @@\r
-                                  LPWSTR lpAccessName, LPDWORD lpBufferSize,\r
-                                  LPDWORD lpResult )\r
- {\r
--    FIXME( "(%p, %p, %p, %s, 0x%08X, %s, %p, %p), stub\n",\r
--           hwndOwner, lpNetResource, lpPassword, debugstr_w(lpUserID), dwFlags,\r
--           debugstr_w(lpAccessName), lpBufferSize, lpResult );\r
-+    DWORD provider;\r
-+    DWORD cap;\r
-+    char id;\r
-+    DWORD drives;\r
-+    DWORD ret;\r
-+    PF_NPAddConnection3 addConn3;\r
-+    PF_NPAddConnection addConn;\r
\r
--    SetLastError(WN_NO_NETWORK);\r
--    return WN_NO_NETWORK;\r
-+    if (!providerTable || providerTable->numProviders == 0) {\r
-+        SetLastError(WN_NO_NETWORK);\r
-+        return WN_NO_NETWORK;\r
-+    }\r
-+\r
-+    if (!lpNetResource) {\r
-+        SetLastError(ERROR_INVALID_PARAMETER);\r
-+        return ERROR_INVALID_PARAMETER;\r
-+    }\r
-+\r
-+    if (!lpNetResource->lpProvider || !*lpNetResource->lpProvider) {\r
-+        SetLastError(ERROR_BAD_PROVIDER);\r
-+        return ERROR_BAD_PROVIDER;\r
-+    }\r
-+\r
-+    if (!lpNetResource->lpLocalName || !*lpNetResource->lpLocalName) {\r
-+        SetLastError(ERROR_BAD_DEVICE);\r
-+        return ERROR_BAD_DEVICE;\r
-+    }\r
-+\r
-+    if ((!(lpNetResource->lpLocalName[0] >= 'a' && lpNetResource->lpLocalName[0] <= 'z') &&\r
-+        !(lpNetResource->lpLocalName[0] >= 'A' && lpNetResource->lpLocalName[0] <= 'Z')) ||\r
-+        lpNetResource->lpLocalName[1] != ':' || lpNetResource->lpLocalName[2]) {\r
-+        SetLastError(ERROR_BAD_DEVICE);\r
-+        return ERROR_BAD_DEVICE;\r
-+    }\r
-+\r
-+    id = (lpNetResource->lpLocalName[0] >= 'a') ? lpNetResource->lpLocalName[0] - 'a' : lpNetResource->lpLocalName[0] - 'A';\r
-+    drives = GetLogicalDrives();\r
-+    if (drives & (1 << id)) {\r
-+        SetLastError(ERROR_ALREADY_ASSIGNED);\r
-+        return ERROR_ALREADY_ASSIGNED;\r
-+    }\r
-+\r
-+    provider = _findProviderIndexW(lpNetResource->lpProvider);\r
-+    if (provider == BAD_PROVIDER_INDEX) {\r
-+        SetLastError(ERROR_BAD_PROVIDER);\r
-+        return ERROR_BAD_PROVIDER;\r
-+    }\r
-+\r
-+    cap = providerTable->table[provider].getCaps(WNNC_CONNECTION);\r
-+    if (!(cap & WNNC_CON_ADDCONNECTION) && !(cap & WNNC_CON_ADDCONNECTION3)) {\r
-+        SetLastError(ERROR_BAD_PROVIDER);\r
-+        return ERROR_BAD_PROVIDER;\r
-+    }\r
-+\r
-+    ret = WN_ACCESS_DENIED;\r
-+    if (cap & WNNC_CON_ADDCONNECTION3) {\r
-+        addConn3 = (PF_NPAddConnection3)GetProcAddress(providerTable->table[provider].hLib, "NPAddConnection3");\r
-+        if (addConn3) {\r
-+            ret = addConn3(hwndOwner, lpNetResource, (LPWSTR)lpPassword, (LPWSTR)lpUserID, dwFlags);\r
-+        }\r
-+    }\r
-+    else if (cap & WNNC_CON_ADDCONNECTION) {\r
-+        addConn = (PF_NPAddConnection)GetProcAddress(providerTable->table[provider].hLib, "NPAddConnection");\r
-+        if (addConn) {\r
-+            ret = addConn(lpNetResource, (LPWSTR)lpPassword, (LPWSTR)lpUserID);\r
-+        }\r
-+    }\r
-+\r
-+    return ret;\r
- }\r
\r
- /*********************************************************************\r