12 #include "wine/winestring.h"
16 #include "debugtools.h"
18 DEFAULT_DEBUG_CHANNEL(mpr)
25 /*********************************************************************
26 * WNetOpenEnumA [MPR.92]
28 DWORD WINAPI WNetOpenEnumA( DWORD dwScope, DWORD dwType, DWORD dwUsage,
29 LPNETRESOURCEA lpNet, LPHANDLE lphEnum )
31 FIXME( "(%08lX, %08lX, %08lX, %p, %p): stub\n",
32 dwScope, dwType, dwUsage, lpNet, lphEnum );
34 SetLastError(WN_NO_NETWORK);
38 /*********************************************************************
39 * WNetOpenEnumW [MPR.93]
41 DWORD WINAPI WNetOpenEnumW( DWORD dwScope, DWORD dwType, DWORD dwUsage,
42 LPNETRESOURCEW lpNet, LPHANDLE lphEnum )
44 FIXME( "(%08lX, %08lX, %08lX, %p, %p): stub\n",
45 dwScope, dwType, dwUsage, lpNet, lphEnum );
47 SetLastError(WN_NO_NETWORK);
51 /*********************************************************************
52 * WNetEnumResourceA [MPR.66]
54 DWORD WINAPI WNetEnumResourceA( HANDLE hEnum, LPDWORD lpcCount,
55 LPVOID lpBuffer, LPDWORD lpBufferSize )
57 FIXME( "(%04X, %p, %p, %p): stub\n",
58 hEnum, lpcCount, lpBuffer, lpBufferSize );
60 SetLastError(WN_NO_NETWORK);
64 /*********************************************************************
65 * WNetEnumResourceW [MPR.67]
67 DWORD WINAPI WNetEnumResourceW( HANDLE hEnum, LPDWORD lpcCount,
68 LPVOID lpBuffer, LPDWORD lpBufferSize )
70 FIXME( "(%04X, %p, %p, %p): stub\n",
71 hEnum, lpcCount, lpBuffer, lpBufferSize );
73 SetLastError(WN_NO_NETWORK);
77 /*********************************************************************
78 * WNetCloseEnum [MPR.58]
80 DWORD WINAPI WNetCloseEnum( HANDLE hEnum )
82 FIXME( "(%04X): stub\n", hEnum );
84 SetLastError(WN_NO_NETWORK);
88 /*********************************************************************
89 * WNetGetResourceInformationA [MPR.80]
91 DWORD WINAPI WNetGetResourceInformationA( LPNETRESOURCEA lpNetResource,
92 LPVOID lpBuffer, LPDWORD cbBuffer,
95 FIXME( "(%p, %p, %p, %p): stub\n",
96 lpNetResource, lpBuffer, cbBuffer, lplpSystem );
98 SetLastError(WN_NO_NETWORK);
102 /*********************************************************************
103 * WNetGetResourceInformationW [MPR.80]
105 DWORD WINAPI WNetGetResourceInformationW( LPNETRESOURCEW lpNetResource,
106 LPVOID lpBuffer, LPDWORD cbBuffer,
109 FIXME( "(%p, %p, %p, %p): stub\n",
110 lpNetResource, lpBuffer, cbBuffer, lplpSystem );
112 SetLastError(WN_NO_NETWORK);
113 return WN_NO_NETWORK;
116 /*********************************************************************
117 * WNetGetResourceParentA [MPR.83]
119 DWORD WINAPI WNetGetResourceParentA( LPNETRESOURCEA lpNetResource,
120 LPVOID lpBuffer, LPDWORD lpBufferSize )
122 FIXME( "(%p, %p, %p): stub\n",
123 lpNetResource, lpBuffer, lpBufferSize );
125 SetLastError(WN_NO_NETWORK);
126 return WN_NO_NETWORK;
129 /*********************************************************************
130 * WNetGetResourceParentW [MPR.84]
132 DWORD WINAPI WNetGetResourceParentW( LPNETRESOURCEW lpNetResource,
133 LPVOID lpBuffer, LPDWORD lpBufferSize )
135 FIXME( "(%p, %p, %p): stub\n",
136 lpNetResource, lpBuffer, lpBufferSize );
138 SetLastError(WN_NO_NETWORK);
139 return WN_NO_NETWORK;
145 * Connection Functions
148 /*********************************************************************
149 * WNetAddConnectionA [MPR.50]
151 DWORD WINAPI WNetAddConnectionA( LPCSTR lpRemoteName, LPCSTR lpPassword,
154 FIXME( "(%s, %p, %s): stub\n",
155 debugstr_a(lpRemoteName), lpPassword, debugstr_a(lpLocalName) );
157 SetLastError(WN_NO_NETWORK);
158 return WN_NO_NETWORK;
161 /*********************************************************************
162 * WNetAddConnectionW [MPR.51]
164 DWORD WINAPI WNetAddConnectionW( LPCWSTR lpRemoteName, LPCWSTR lpPassword,
165 LPCWSTR lpLocalName )
167 FIXME( "(%s, %p, %s): stub\n",
168 debugstr_w(lpRemoteName), lpPassword, debugstr_w(lpLocalName) );
170 SetLastError(WN_NO_NETWORK);
171 return WN_NO_NETWORK;
174 /*********************************************************************
175 * WNetAddConnection2A [MPR.46]
177 DWORD WINAPI WNetAddConnection2A( LPNETRESOURCEA lpNetResource,
178 LPCSTR lpPassword, LPCSTR lpUserID,
181 FIXME( "(%p, %p, %s, 0x%08lX): stub\n",
182 lpNetResource, lpPassword, debugstr_a(lpUserID), dwFlags );
184 SetLastError(WN_NO_NETWORK);
185 return WN_NO_NETWORK;
188 /*********************************************************************
189 * WNetAddConnection2W [MPR.47]
191 DWORD WINAPI WNetAddConnection2W( LPNETRESOURCEW lpNetResource,
192 LPCWSTR lpPassword, LPCWSTR lpUserID,
195 FIXME( "(%p, %p, %s, 0x%08lX): stub\n",
196 lpNetResource, lpPassword, debugstr_w(lpUserID), dwFlags );
198 SetLastError(WN_NO_NETWORK);
199 return WN_NO_NETWORK;
202 /*********************************************************************
203 * WNetAddConnection3A [MPR.48]
205 DWORD WINAPI WNetAddConnection3A( HWND hwndOwner, LPNETRESOURCEA lpNetResource,
206 LPCSTR lpPassword, LPCSTR lpUserID,
209 FIXME( "(%04x, %p, %p, %s, 0x%08lX), stub\n",
210 hwndOwner, lpNetResource, lpPassword, debugstr_a(lpUserID), dwFlags );
212 SetLastError(WN_NO_NETWORK);
213 return WN_NO_NETWORK;
216 /*********************************************************************
217 * WNetAddConnection3W [MPR.49]
219 DWORD WINAPI WNetAddConnection3W( HWND hwndOwner, LPNETRESOURCEW lpNetResource,
220 LPCWSTR lpPassword, LPCWSTR lpUserID,
223 FIXME( "(%04x, %p, %p, %s, 0x%08lX), stub\n",
224 hwndOwner, lpNetResource, lpPassword, debugstr_w(lpUserID), dwFlags );
226 SetLastError(WN_NO_NETWORK);
227 return WN_NO_NETWORK;
230 /*****************************************************************
231 * WNetUseConnectionA [MPR.100]
233 DWORD WINAPI WNetUseConnectionA( HWND hwndOwner, LPNETRESOURCEA lpNetResource,
234 LPCSTR lpPassword, LPCSTR lpUserID, DWORD dwFlags,
235 LPSTR lpAccessName, LPDWORD lpBufferSize,
238 FIXME( "(%04x, %p, %p, %s, 0x%08lX, %s, %p, %p), stub\n",
239 hwndOwner, lpNetResource, lpPassword, debugstr_a(lpUserID), dwFlags,
240 debugstr_a(lpAccessName), lpBufferSize, lpResult );
242 SetLastError(WN_NO_NETWORK);
243 return WN_NO_NETWORK;
246 /*****************************************************************
247 * WNetUseConnectionW [MPR.101]
249 DWORD WINAPI WNetUseConnectionW( HWND hwndOwner, LPNETRESOURCEW lpNetResource,
250 LPCWSTR lpPassword, LPCWSTR lpUserID, DWORD dwFlags,
251 LPWSTR lpAccessName, LPDWORD lpBufferSize,
254 FIXME( "(%04x, %p, %p, %s, 0x%08lX, %s, %p, %p), stub\n",
255 hwndOwner, lpNetResource, lpPassword, debugstr_w(lpUserID), dwFlags,
256 debugstr_w(lpAccessName), lpBufferSize, lpResult );
258 SetLastError(WN_NO_NETWORK);
259 return WN_NO_NETWORK;
262 /*********************************************************************
263 * WNetCancelConnectionA [MPR.55]
265 DWORD WINAPI WNetCancelConnectionA( LPCSTR lpName, BOOL fForce )
267 FIXME( "(%s, %d), stub\n", debugstr_a(lpName), fForce );
272 /*********************************************************************
273 * WNetCancelConnectionW [MPR.56]
275 DWORD WINAPI WNetCancelConnectionW( LPCWSTR lpName, BOOL fForce )
277 FIXME( "(%s, %d), stub\n", debugstr_w(lpName), fForce );
282 /*********************************************************************
283 * WNetCancelConnection2A [MPR.53]
285 DWORD WINAPI WNetCancelConnection2A( LPCSTR lpName, DWORD dwFlags, BOOL fForce )
287 FIXME( "(%s, %08lX, %d), stub\n", debugstr_a(lpName), dwFlags, fForce );
292 /*********************************************************************
293 * WNetCancelConnection2W [MPR.54]
295 DWORD WINAPI WNetCancelConnection2W( LPCWSTR lpName, DWORD dwFlags, BOOL fForce )
297 FIXME( "(%s, %08lX, %d), stub\n", debugstr_w(lpName), dwFlags, fForce );
302 /*****************************************************************
303 * WNetRestoreConnectionA [MPR.96]
305 DWORD WINAPI WNetRestoreConnectionA( HWND hwndOwner, LPSTR lpszDevice )
307 FIXME( "(%04X, %s), stub\n", hwndOwner, debugstr_a(lpszDevice) );
309 SetLastError(WN_NO_NETWORK);
310 return WN_NO_NETWORK;
313 /*****************************************************************
314 * WNetRestoreConnectionW [MPR.97]
316 DWORD WINAPI WNetRestoreConnectionW( HWND hwndOwner, LPWSTR lpszDevice )
318 FIXME( "(%04X, %s), stub\n", hwndOwner, debugstr_w(lpszDevice) );
320 SetLastError(WN_NO_NETWORK);
321 return WN_NO_NETWORK;
324 /**************************************************************************
325 * WNetGetConnectionA [MPR.71]
328 * - WN_BAD_LOCALNAME lpLocalName makes no sense
329 * - WN_NOT_CONNECTED drive is a local drive
330 * - WN_MORE_DATA buffer isn't big enough
331 * - WN_SUCCESS success (net path in buffer)
334 DWORD WINAPI WNetGetConnectionA( LPCSTR lpLocalName,
335 LPSTR lpRemoteName, LPDWORD lpBufferSize )
339 TRACE( "local %s\n", lpLocalName );
340 if (lpLocalName[1] == ':')
342 int drive = toupper(lpLocalName[0]) - 'A';
343 switch(DRIVE_GetType(drive))
346 return WN_BAD_LOCALNAME;
348 path = DRIVE_GetLabel(drive);
349 if (strlen(path) + 1 > *lpBufferSize)
351 *lpBufferSize = strlen(path) + 1;
354 strcpy( lpRemoteName, path );
355 *lpBufferSize = strlen(lpRemoteName) + 1;
360 TRACE("file is local\n");
361 return WN_NOT_CONNECTED;
363 return WN_BAD_LOCALNAME;
366 return WN_BAD_LOCALNAME;
369 /**************************************************************************
370 * WNetGetConnectionW [MPR.72]
372 DWORD WINAPI WNetGetConnectionW( LPCWSTR lpLocalName,
373 LPWSTR lpRemoteName, LPDWORD lpBufferSize )
377 LPSTR lnA = HEAP_strdupWtoA( GetProcessHeap(), 0, lpLocalName );
378 DWORD ret = WNetGetConnectionA( lnA, buf, &x );
380 lstrcpyAtoW( lpRemoteName, buf );
381 *lpBufferSize=lstrlenW( lpRemoteName );
382 HeapFree( GetProcessHeap(), 0, lnA );
386 /**************************************************************************
387 * WNetSetConnectionA [MPR.72]
389 DWORD WINAPI WNetSetConnectionA( LPCSTR lpName, DWORD dwProperty,
392 FIXME( "(%s, %08lX, %p): stub\n", debugstr_a(lpName), dwProperty, pvValue );
394 SetLastError(WN_NO_NETWORK);
395 return WN_NO_NETWORK;
398 /**************************************************************************
399 * WNetSetConnectionW [MPR.72]
401 DWORD WINAPI WNetSetConnectionW( LPCWSTR lpName, DWORD dwProperty,
404 FIXME( "(%s, %08lX, %p): stub\n", debugstr_w(lpName), dwProperty, pvValue );
406 SetLastError(WN_NO_NETWORK);
407 return WN_NO_NETWORK;
410 /*****************************************************************
411 * WNetGetUniversalNameA [MPR.85]
413 DWORD WINAPI WNetGetUniversalNameA ( LPCSTR lpLocalPath, DWORD dwInfoLevel,
414 LPVOID lpBuffer, LPDWORD lpBufferSize )
416 FIXME( "(%s, 0x%08lX, %p, %p): stub\n",
417 debugstr_a(lpLocalPath), dwInfoLevel, lpBuffer, lpBufferSize);
419 SetLastError(WN_NO_NETWORK);
420 return WN_NO_NETWORK;
423 /*****************************************************************
424 * WNetGetUniversalNameW [MPR.86]
426 DWORD WINAPI WNetGetUniversalNameW ( LPCWSTR lpLocalPath, DWORD dwInfoLevel,
427 LPVOID lpBuffer, LPDWORD lpBufferSize )
429 FIXME( "(%s, 0x%08lX, %p, %p): stub\n",
430 debugstr_w(lpLocalPath), dwInfoLevel, lpBuffer, lpBufferSize);
432 SetLastError(WN_NO_NETWORK);
433 return WN_NO_NETWORK;
442 /**************************************************************************
443 * WNetGetUserA [MPR.86]
445 * FIXME: we should not return ourselves, but the owner of the drive lpName
447 DWORD WINAPI WNetGetUserA( LPCSTR lpName, LPSTR lpUserID, LPDWORD lpBufferSize )
449 struct passwd *pwd = getpwuid(getuid());
451 FIXME( "(%s, %p, %p): mostly stub\n",
452 debugstr_a(lpName), lpUserID, lpBufferSize );
456 if ( strlen(pwd->pw_name) + 1 > *lpBufferSize )
458 *lpBufferSize = strlen(pwd->pw_name) + 1;
460 SetLastError(ERROR_MORE_DATA);
461 return ERROR_MORE_DATA;
464 strcpy( lpUserID, pwd->pw_name );
465 *lpBufferSize = strlen(pwd->pw_name) + 1;
469 /* FIXME: wrong return value */
470 SetLastError(ERROR_NO_NETWORK);
471 return ERROR_NO_NETWORK;
474 /*****************************************************************
475 * WNetGetUserW [MPR.87]
477 DWORD WINAPI WNetGetUserW( LPCWSTR lpName, LPWSTR lpUserID, LPDWORD lpBufferSize )
479 FIXME( "(%s, %p, %p): mostly stub\n",
480 debugstr_w(lpName), lpUserID, lpBufferSize );
482 SetLastError(WN_NO_NETWORK);
483 return WN_NO_NETWORK;
486 /*********************************************************************
487 * WNetConnectionDialog [MPR.61]
489 DWORD WINAPI WNetConnectionDialog( HWND hwnd, DWORD dwType )
491 FIXME( "(%04x, %08lX): stub\n", hwnd, dwType );
493 SetLastError(WN_NO_NETWORK);
494 return ERROR_NO_NETWORK;
497 /*********************************************************************
498 * WNetConnectionDialog1A [MPR.59]
500 DWORD WINAPI WNetConnectionDialog1A( LPCONNECTDLGSTRUCTA lpConnDlgStruct )
502 FIXME( "(%p): stub\n", lpConnDlgStruct );
504 SetLastError(WN_NO_NETWORK);
505 return ERROR_NO_NETWORK;
508 /*********************************************************************
509 * WNetConnectionDialog1W [MPR.60]
511 DWORD WINAPI WNetConnectionDialog1W( LPCONNECTDLGSTRUCTW lpConnDlgStruct )
513 FIXME( "(%p): stub\n", lpConnDlgStruct );
515 SetLastError(WN_NO_NETWORK);
516 return ERROR_NO_NETWORK;
519 /*********************************************************************
520 * WNetDisconnectDialog [MPR.64]
522 DWORD WINAPI WNetDisconnectDialog( HWND hwnd, DWORD dwType )
524 FIXME( "(%04x, %08lX): stub\n", hwnd, dwType );
526 SetLastError(WN_NO_NETWORK);
527 return ERROR_NO_NETWORK;
530 /*********************************************************************
531 * WNetDisconnectDialog1A [MPR.62]
533 DWORD WINAPI WNetDisconnectDialog1A( LPDISCDLGSTRUCTA lpConnDlgStruct )
535 FIXME( "(%p): stub\n", lpConnDlgStruct );
537 SetLastError(WN_NO_NETWORK);
538 return ERROR_NO_NETWORK;
541 /*********************************************************************
542 * WNetDisconnectDialog1W [MPR.63]
544 DWORD WINAPI WNetDisconnectDialog1W( LPDISCDLGSTRUCTW lpConnDlgStruct )
546 FIXME( "(%p): stub\n", lpConnDlgStruct );
548 SetLastError(WN_NO_NETWORK);
549 return ERROR_NO_NETWORK;
552 /*********************************************************************
553 * WNetGetLastErrorA [MPR.75]
555 DWORD WINAPI WNetGetLastErrorA( LPDWORD lpError,
556 LPSTR lpErrorBuf, DWORD nErrorBufSize,
557 LPSTR lpNameBuf, DWORD nNameBufSize )
559 FIXME( "(%p, %p, %ld, %p, %ld): stub\n",
560 lpError, lpErrorBuf, nErrorBufSize, lpNameBuf, nNameBufSize );
562 SetLastError(WN_NO_NETWORK);
563 return ERROR_NO_NETWORK;
566 /*********************************************************************
567 * WNetGetLastErrorW [MPR.76]
569 DWORD WINAPI WNetGetLastErrorW( LPDWORD lpError,
570 LPWSTR lpErrorBuf, DWORD nErrorBufSize,
571 LPWSTR lpNameBuf, DWORD nNameBufSize )
573 FIXME( "(%p, %p, %ld, %p, %ld): stub\n",
574 lpError, lpErrorBuf, nErrorBufSize, lpNameBuf, nNameBufSize );
576 SetLastError(WN_NO_NETWORK);
577 return ERROR_NO_NETWORK;
580 /*********************************************************************
581 * WNetGetNetworkInformationA [MPR.77]
583 DWORD WINAPI WNetGetNetworkInformationA( LPCSTR lpProvider,
584 LPNETINFOSTRUCT lpNetInfoStruct )
586 FIXME( "(%s, %p): stub\n", debugstr_a(lpProvider), lpNetInfoStruct );
588 SetLastError(WN_NO_NETWORK);
589 return ERROR_NO_NETWORK;
592 /*********************************************************************
593 * WNetGetNetworkInformationW [MPR.77]
595 DWORD WINAPI WNetGetNetworkInformationW( LPCWSTR lpProvider,
596 LPNETINFOSTRUCT lpNetInfoStruct )
598 FIXME( "(%s, %p): stub\n", debugstr_w(lpProvider), lpNetInfoStruct );
600 SetLastError(WN_NO_NETWORK);
601 return ERROR_NO_NETWORK;
604 /*****************************************************************
605 * WNetGetProviderNameA [MPR.79]
607 DWORD WINAPI WNetGetProviderNameA( DWORD dwNetType,
608 LPSTR lpProvider, LPDWORD lpBufferSize )
610 FIXME( "(%ld, %p, %p): stub\n", dwNetType, lpProvider, lpBufferSize );
612 SetLastError(WN_NO_NETWORK);
613 return WN_NO_NETWORK;
616 /*****************************************************************
617 * WNetGetProviderNameW [MPR.80]
619 DWORD WINAPI WNetGetProviderNameW( DWORD dwNetType,
620 LPWSTR lpProvider, LPDWORD lpBufferSize )
622 FIXME( "(%ld, %p, %p): stub\n", dwNetType, lpProvider, lpBufferSize );
624 SetLastError(WN_NO_NETWORK);
625 return WN_NO_NETWORK;