diff --git a/reactos/dll/win32/mpr/mpr_ros.diff b/reactos/dll/win32/mpr/mpr_ros.diff index 349f7acd803..cea15b7205c 100644 --- a/reactos/dll/win32/mpr/mpr_ros.diff +++ b/reactos/dll/win32/mpr/mpr_ros.diff @@ -64,7 +64,8 @@ Index: wnet.c provider->addConnection3 = MPR_GETPROC(NPAddConnection3); provider->cancelConnection = MPR_GETPROC(NPCancelConnection); +#ifdef __REACTOS__ -+ provider->getConnection = MPR_GETPROC(NPGetConnection); ++ if (connectCap & WNNC_CON_GETCONNECTIONS) ++ provider->getConnection = MPR_GETPROC(NPGetConnection); +#endif TRACE("NPAddConnection %p\n", provider->addConnection); TRACE("NPAddConnection3 %p\n", provider->addConnection3); diff --git a/reactos/dll/win32/mpr/wnet.c b/reactos/dll/win32/mpr/wnet.c index 4c47ec10184..1cdddeb8949 100644 --- a/reactos/dll/win32/mpr/wnet.c +++ b/reactos/dll/win32/mpr/wnet.c @@ -171,6 +171,7 @@ static void _tryLoadProvider(PCWSTR provider) TRACE("loaded lib %p\n", hLib); if (getCaps) { + DWORD connectCap; PWNetProvider provider = &providerTable->table[providerTable->numProviders]; @@ -204,11 +205,16 @@ static void _tryLoadProvider(PCWSTR provider) WARN("Couldn't load enumeration functions\n"); } } - provider->addConnection = MPR_GETPROC(NPAddConnection); + connectCap = getCaps(WNNC_CONNECTION); + if (connectCap & WNNC_CON_ADDCONNECTION) + provider->addConnection = MPR_GETPROC(NPAddConnection); + if (connectCap & WNNC_CON_ADDCONNECTION3) provider->addConnection3 = MPR_GETPROC(NPAddConnection3); - provider->cancelConnection = MPR_GETPROC(NPCancelConnection); + if (connectCap & WNNC_CON_CANCELCONNECTION) + provider->cancelConnection = MPR_GETPROC(NPCancelConnection); #ifdef __REACTOS__ - provider->getConnection = MPR_GETPROC(NPGetConnection); + if (connectCap & WNNC_CON_GETCONNECTIONS) + provider->getConnection = MPR_GETPROC(NPGetConnection); #endif TRACE("NPAddConnection %p\n", provider->addConnection); TRACE("NPAddConnection3 %p\n", provider->addConnection3);