Module: wine Branch: master Commit: 164fe0470ccf7cb3c0946cbb52d4139aec0c4a03 URL: http://source.winehq.org/git/wine.git/?a=commit;h=164fe0470ccf7cb3c0946cbb52...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Feb 12 14:03:43 2016 +0300
mpr: Query for NPAddConnection and NPAddConnection3 when loading a provider.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mpr/wnet.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-)
diff --git a/dlls/mpr/wnet.c b/dlls/mpr/wnet.c index 01e49e7..834a826 100644 --- a/dlls/mpr/wnet.c +++ b/dlls/mpr/wnet.c @@ -56,6 +56,8 @@ typedef struct _WNetProvider PF_NPEnumResource enumResource; PF_NPCloseEnum closeEnum; PF_NPGetResourceInformation getResourceInformation; + PF_NPAddConnection addConnection; + PF_NPAddConnection3 addConnection3; } WNetProvider, *PWNetProvider;
typedef struct _WNetProviderTable @@ -162,8 +164,9 @@ static void _tryLoadProvider(PCWSTR provider)
if (hLib) { - PF_NPGetCaps getCaps = (PF_NPGetCaps)GetProcAddress(hLib, - "NPGetCaps"); +#define MPR_GETPROC(proc) ((PF_##proc)GetProcAddress(hLib, #proc)) + + PF_NPGetCaps getCaps = MPR_GETPROC(NPGetCaps);
TRACE("loaded lib %p\n", hLib); if (getCaps) @@ -182,22 +185,17 @@ static void _tryLoadProvider(PCWSTR provider) if (provider->dwEnumScopes) { TRACE("supports enumeration\n"); - provider->openEnum = (PF_NPOpenEnum) - GetProcAddress(hLib, "NPOpenEnum"); - TRACE("openEnum is %p\n", provider->openEnum); - provider->enumResource = (PF_NPEnumResource) - GetProcAddress(hLib, "NPEnumResource"); - TRACE("enumResource is %p\n", - provider->enumResource); - provider->closeEnum = (PF_NPCloseEnum) - GetProcAddress(hLib, "NPCloseEnum"); - TRACE("closeEnum is %p\n", provider->closeEnum); - provider->getResourceInformation = (PF_NPGetResourceInformation) - GetProcAddress(hLib, "NPGetResourceInformation"); - TRACE("getResourceInformation is %p\n", - provider->getResourceInformation); - if (!provider->openEnum || !provider->enumResource - || !provider->closeEnum) + provider->openEnum = MPR_GETPROC(NPOpenEnum); + TRACE("NPOpenEnum %p\n", provider->openEnum); + provider->enumResource = MPR_GETPROC(NPEnumResource); + TRACE("NPEnumResource %p\n", provider->enumResource); + provider->closeEnum = MPR_GETPROC(NPCloseEnum); + TRACE("NPCloseEnum %p\n", provider->closeEnum); + provider->getResourceInformation = MPR_GETPROC(NPGetResourceInformation); + TRACE("NPGetResourceInformation %p\n", provider->getResourceInformation); + if (!provider->openEnum || + !provider->enumResource || + !provider->closeEnum) { provider->openEnum = NULL; provider->enumResource = NULL; @@ -206,6 +204,10 @@ static void _tryLoadProvider(PCWSTR provider) WARN("Couldn't load enumeration functions\n"); } } + provider->addConnection = MPR_GETPROC(NPAddConnection); + provider->addConnection3 = MPR_GETPROC(NPAddConnection3); + TRACE("NPAddConnection %p\n", provider->addConnection); + TRACE("NPAddConnection3 %p\n", provider->addConnection3); providerTable->numProviders++; } else @@ -215,6 +217,8 @@ static void _tryLoadProvider(PCWSTR provider) HeapFree(GetProcessHeap(), 0, name); FreeLibrary(hLib); } + +#undef MPR_GETPROC } else {