2 ===================================================================
3 --- mpr.spec (revision 49877)
4 +++ mpr.spec (working copy)
45 22 stdcall @(long) MPR_Alloc
46 23 stdcall @(ptr long) MPR_ReAlloc
47 24 stdcall @(ptr) MPR_Free
49 ===================================================================
50 --- wnet.c (revision 71983)
51 +++ wnet.c (working copy)
53 PF_NPGetResourceInformation getResourceInformation;
54 PF_NPAddConnection addConnection;
55 PF_NPAddConnection3 addConnection3;
57 + PF_NPGetConnection getConnection;
59 } WNetProvider, *PWNetProvider;
61 typedef struct _WNetProviderTable
64 provider->addConnection = MPR_GETPROC(NPAddConnection);
65 provider->addConnection3 = MPR_GETPROC(NPAddConnection3);
67 + provider->getConnection = MPR_GETPROC(NPGetConnection);
69 TRACE("NPAddConnection %p\n", provider->addConnection);
70 TRACE("NPAddConnection3 %p\n", provider->addConnection3);
71 providerTable->numProviders++;
73 /* find the network connection for a given drive; helper for WNetGetConnection */
74 static DWORD get_drive_connection( WCHAR letter, LPWSTR remote, LPDWORD size )
78 struct mountmgr_unix_drive *data = (struct mountmgr_unix_drive *)buffer;
80 @@ -1991,6 +1998,32 @@
85 + DWORD ret = WN_NO_NETWORK;
87 + WCHAR local[3] = {letter, ':', 0};
89 + if (providerTable != NULL)
91 + for (index = 0; index < providerTable->numProviders; index++)
93 + if(providerTable->table[index].getCaps(WNNC_CONNECTION) &
94 + WNNC_CON_GETCONNECTIONS)
96 + if (providerTable->table[index].getConnection)
97 + ret = providerTable->table[index].getConnection(
98 + local, remote, size);
100 + ret = WN_NO_NETWORK;
101 + if (ret == WN_SUCCESS || ret == WN_MORE_DATA)
112 /**************************************************************************