4 * Copyright 1999 Ulrich Weigand
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #include <sys/types.h>
30 #include "wine/debug.h"
32 WINE_DEFAULT_DEBUG_CHANNEL(mpr
);
39 /*********************************************************************
40 * WNetOpenEnumA [MPR.@]
42 DWORD WINAPI
WNetOpenEnumA( DWORD dwScope
, DWORD dwType
, DWORD dwUsage
,
43 LPNETRESOURCEA lpNet
, LPHANDLE lphEnum
)
45 FIXME( "(%08lX, %08lX, %08lX, %p, %p): stub\n",
46 dwScope
, dwType
, dwUsage
, lpNet
, lphEnum
);
48 SetLastError(WN_NO_NETWORK
);
52 /*********************************************************************
53 * WNetOpenEnumW [MPR.@]
55 DWORD WINAPI
WNetOpenEnumW( DWORD dwScope
, DWORD dwType
, DWORD dwUsage
,
56 LPNETRESOURCEW lpNet
, LPHANDLE lphEnum
)
58 FIXME( "(%08lX, %08lX, %08lX, %p, %p): stub\n",
59 dwScope
, dwType
, dwUsage
, lpNet
, lphEnum
);
61 SetLastError(WN_NO_NETWORK
);
65 /*********************************************************************
66 * WNetEnumResourceA [MPR.@]
68 DWORD WINAPI
WNetEnumResourceA( HANDLE hEnum
, LPDWORD lpcCount
,
69 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
71 FIXME( "(%04X, %p, %p, %p): stub\n",
72 hEnum
, lpcCount
, lpBuffer
, lpBufferSize
);
74 SetLastError(WN_NO_NETWORK
);
78 /*********************************************************************
79 * WNetEnumResourceW [MPR.@]
81 DWORD WINAPI
WNetEnumResourceW( HANDLE hEnum
, LPDWORD lpcCount
,
82 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
84 FIXME( "(%04X, %p, %p, %p): stub\n",
85 hEnum
, lpcCount
, lpBuffer
, lpBufferSize
);
87 SetLastError(WN_NO_NETWORK
);
91 /*********************************************************************
92 * WNetCloseEnum [MPR.@]
94 DWORD WINAPI
WNetCloseEnum( HANDLE hEnum
)
96 FIXME( "(%04X): stub\n", hEnum
);
98 SetLastError(WN_NO_NETWORK
);
102 /*********************************************************************
103 * WNetGetResourceInformationA [MPR.@]
105 DWORD WINAPI
WNetGetResourceInformationA( LPNETRESOURCEA 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 * WNetGetResourceInformationW [MPR.@]
119 DWORD WINAPI
WNetGetResourceInformationW( LPNETRESOURCEW lpNetResource
,
120 LPVOID lpBuffer
, LPDWORD cbBuffer
,
123 FIXME( "(%p, %p, %p, %p): stub\n",
124 lpNetResource
, lpBuffer
, cbBuffer
, lplpSystem
);
126 SetLastError(WN_NO_NETWORK
);
127 return WN_NO_NETWORK
;
130 /*********************************************************************
131 * WNetGetResourceParentA [MPR.@]
133 DWORD WINAPI
WNetGetResourceParentA( LPNETRESOURCEA lpNetResource
,
134 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
136 FIXME( "(%p, %p, %p): stub\n",
137 lpNetResource
, lpBuffer
, lpBufferSize
);
139 SetLastError(WN_NO_NETWORK
);
140 return WN_NO_NETWORK
;
143 /*********************************************************************
144 * WNetGetResourceParentW [MPR.@]
146 DWORD WINAPI
WNetGetResourceParentW( LPNETRESOURCEW lpNetResource
,
147 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
149 FIXME( "(%p, %p, %p): stub\n",
150 lpNetResource
, lpBuffer
, lpBufferSize
);
152 SetLastError(WN_NO_NETWORK
);
153 return WN_NO_NETWORK
;
159 * Connection Functions
162 /*********************************************************************
163 * WNetAddConnectionA [MPR.@]
165 DWORD WINAPI
WNetAddConnectionA( LPCSTR lpRemoteName
, LPCSTR lpPassword
,
168 FIXME( "(%s, %p, %s): stub\n",
169 debugstr_a(lpRemoteName
), lpPassword
, debugstr_a(lpLocalName
) );
171 SetLastError(WN_NO_NETWORK
);
172 return WN_NO_NETWORK
;
175 /*********************************************************************
176 * WNetAddConnectionW [MPR.@]
178 DWORD WINAPI
WNetAddConnectionW( LPCWSTR lpRemoteName
, LPCWSTR lpPassword
,
179 LPCWSTR lpLocalName
)
181 FIXME( "(%s, %p, %s): stub\n",
182 debugstr_w(lpRemoteName
), lpPassword
, debugstr_w(lpLocalName
) );
184 SetLastError(WN_NO_NETWORK
);
185 return WN_NO_NETWORK
;
188 /*********************************************************************
189 * WNetAddConnection2A [MPR.@]
191 DWORD WINAPI
WNetAddConnection2A( LPNETRESOURCEA lpNetResource
,
192 LPCSTR lpPassword
, LPCSTR lpUserID
,
195 FIXME( "(%p, %p, %s, 0x%08lX): stub\n",
196 lpNetResource
, lpPassword
, debugstr_a(lpUserID
), dwFlags
);
198 SetLastError(WN_NO_NETWORK
);
199 return WN_NO_NETWORK
;
202 /*********************************************************************
203 * WNetAddConnection2W [MPR.@]
205 DWORD WINAPI
WNetAddConnection2W( LPNETRESOURCEW lpNetResource
,
206 LPCWSTR lpPassword
, LPCWSTR lpUserID
,
209 FIXME( "(%p, %p, %s, 0x%08lX): stub\n",
210 lpNetResource
, lpPassword
, debugstr_w(lpUserID
), dwFlags
);
212 SetLastError(WN_NO_NETWORK
);
213 return WN_NO_NETWORK
;
216 /*********************************************************************
217 * WNetAddConnection3A [MPR.@]
219 DWORD WINAPI
WNetAddConnection3A( HWND hwndOwner
, LPNETRESOURCEA lpNetResource
,
220 LPCSTR lpPassword
, LPCSTR lpUserID
,
223 FIXME( "(%04x, %p, %p, %s, 0x%08lX), stub\n",
224 hwndOwner
, lpNetResource
, lpPassword
, debugstr_a(lpUserID
), dwFlags
);
226 SetLastError(WN_NO_NETWORK
);
227 return WN_NO_NETWORK
;
230 /*********************************************************************
231 * WNetAddConnection3W [MPR.@]
233 DWORD WINAPI
WNetAddConnection3W( HWND hwndOwner
, LPNETRESOURCEW lpNetResource
,
234 LPCWSTR lpPassword
, LPCWSTR lpUserID
,
237 FIXME( "(%04x, %p, %p, %s, 0x%08lX), stub\n",
238 hwndOwner
, lpNetResource
, lpPassword
, debugstr_w(lpUserID
), dwFlags
);
240 SetLastError(WN_NO_NETWORK
);
241 return WN_NO_NETWORK
;
244 /*****************************************************************
245 * WNetUseConnectionA [MPR.@]
247 DWORD WINAPI
WNetUseConnectionA( HWND hwndOwner
, LPNETRESOURCEA lpNetResource
,
248 LPCSTR lpPassword
, LPCSTR lpUserID
, DWORD dwFlags
,
249 LPSTR lpAccessName
, LPDWORD lpBufferSize
,
252 FIXME( "(%04x, %p, %p, %s, 0x%08lX, %s, %p, %p), stub\n",
253 hwndOwner
, lpNetResource
, lpPassword
, debugstr_a(lpUserID
), dwFlags
,
254 debugstr_a(lpAccessName
), lpBufferSize
, lpResult
);
256 SetLastError(WN_NO_NETWORK
);
257 return WN_NO_NETWORK
;
260 /*****************************************************************
261 * WNetUseConnectionW [MPR.@]
263 DWORD WINAPI
WNetUseConnectionW( HWND hwndOwner
, LPNETRESOURCEW lpNetResource
,
264 LPCWSTR lpPassword
, LPCWSTR lpUserID
, DWORD dwFlags
,
265 LPWSTR lpAccessName
, LPDWORD lpBufferSize
,
268 FIXME( "(%04x, %p, %p, %s, 0x%08lX, %s, %p, %p), stub\n",
269 hwndOwner
, lpNetResource
, lpPassword
, debugstr_w(lpUserID
), dwFlags
,
270 debugstr_w(lpAccessName
), lpBufferSize
, lpResult
);
272 SetLastError(WN_NO_NETWORK
);
273 return WN_NO_NETWORK
;
276 /*********************************************************************
277 * WNetCancelConnectionA [MPR.@]
279 DWORD WINAPI
WNetCancelConnectionA( LPCSTR lpName
, BOOL fForce
)
281 FIXME( "(%s, %d), stub\n", debugstr_a(lpName
), fForce
);
286 /*********************************************************************
287 * WNetCancelConnectionW [MPR.@]
289 DWORD WINAPI
WNetCancelConnectionW( LPCWSTR lpName
, BOOL fForce
)
291 FIXME( "(%s, %d), stub\n", debugstr_w(lpName
), fForce
);
296 /*********************************************************************
297 * WNetCancelConnection2A [MPR.@]
299 DWORD WINAPI
WNetCancelConnection2A( LPCSTR lpName
, DWORD dwFlags
, BOOL fForce
)
301 FIXME( "(%s, %08lX, %d), stub\n", debugstr_a(lpName
), dwFlags
, fForce
);
306 /*********************************************************************
307 * WNetCancelConnection2W [MPR.@]
309 DWORD WINAPI
WNetCancelConnection2W( LPCWSTR lpName
, DWORD dwFlags
, BOOL fForce
)
311 FIXME( "(%s, %08lX, %d), stub\n", debugstr_w(lpName
), dwFlags
, fForce
);
316 /*****************************************************************
317 * WNetRestoreConnectionA [MPR.@]
319 DWORD WINAPI
WNetRestoreConnectionA( HWND hwndOwner
, LPSTR lpszDevice
)
321 FIXME( "(%04X, %s), stub\n", hwndOwner
, debugstr_a(lpszDevice
) );
323 SetLastError(WN_NO_NETWORK
);
324 return WN_NO_NETWORK
;
327 /*****************************************************************
328 * WNetRestoreConnectionW [MPR.@]
330 DWORD WINAPI
WNetRestoreConnectionW( HWND hwndOwner
, LPWSTR lpszDevice
)
332 FIXME( "(%04X, %s), stub\n", hwndOwner
, debugstr_w(lpszDevice
) );
334 SetLastError(WN_NO_NETWORK
);
335 return WN_NO_NETWORK
;
338 /**************************************************************************
339 * WNetGetConnectionA [MPR.@]
342 * - WN_BAD_LOCALNAME lpLocalName makes no sense
343 * - WN_NOT_CONNECTED drive is a local drive
344 * - WN_MORE_DATA buffer isn't big enough
345 * - WN_SUCCESS success (net path in buffer)
348 DWORD WINAPI
WNetGetConnectionA( LPCSTR lpLocalName
,
349 LPSTR lpRemoteName
, LPDWORD lpBufferSize
)
353 TRACE( "local %s\n", lpLocalName
);
354 if (lpLocalName
[1] == ':')
356 switch(GetDriveTypeA(lpLocalName
))
359 if (!GetVolumeInformationA( lpLocalName
, label
, sizeof(label
),
360 NULL
, NULL
, NULL
, NULL
, 0 )) label
[0] = 0;
361 if (strlen(label
) + 1 > *lpBufferSize
)
363 *lpBufferSize
= strlen(label
) + 1;
366 strcpy( lpRemoteName
, label
);
367 *lpBufferSize
= strlen(lpRemoteName
) + 1;
369 case DRIVE_REMOVABLE
:
372 TRACE("file is local\n");
373 return WN_NOT_CONNECTED
;
375 return WN_BAD_LOCALNAME
;
378 return WN_BAD_LOCALNAME
;
381 /**************************************************************************
382 * WNetGetConnectionW [MPR.@]
384 DWORD WINAPI
WNetGetConnectionW( LPCWSTR lpLocalName
,
385 LPWSTR lpRemoteName
, LPDWORD lpBufferSize
)
388 DWORD ret
, x
= sizeof(buf
);
389 INT len
= WideCharToMultiByte( CP_ACP
, 0, lpLocalName
, -1, NULL
, 0, NULL
, NULL
);
390 LPSTR lnA
= HeapAlloc( GetProcessHeap(), 0, len
);
392 WideCharToMultiByte( CP_ACP
, 0, lpLocalName
, -1, lnA
, len
, NULL
, NULL
);
393 ret
= WNetGetConnectionA( lnA
, buf
, &x
);
394 HeapFree( GetProcessHeap(), 0, lnA
);
395 if (ret
== WN_SUCCESS
)
397 x
= MultiByteToWideChar( CP_ACP
, 0, buf
, -1, NULL
, 0 );
398 if (x
> *lpBufferSize
)
403 *lpBufferSize
= MultiByteToWideChar( CP_ACP
, 0, buf
, -1, lpRemoteName
, *lpBufferSize
);
408 /**************************************************************************
409 * WNetSetConnectionA [MPR.@]
411 DWORD WINAPI
WNetSetConnectionA( LPCSTR lpName
, DWORD dwProperty
,
414 FIXME( "(%s, %08lX, %p): stub\n", debugstr_a(lpName
), dwProperty
, pvValue
);
416 SetLastError(WN_NO_NETWORK
);
417 return WN_NO_NETWORK
;
420 /**************************************************************************
421 * WNetSetConnectionW [MPR.@]
423 DWORD WINAPI
WNetSetConnectionW( LPCWSTR lpName
, DWORD dwProperty
,
426 FIXME( "(%s, %08lX, %p): stub\n", debugstr_w(lpName
), dwProperty
, pvValue
);
428 SetLastError(WN_NO_NETWORK
);
429 return WN_NO_NETWORK
;
432 /*****************************************************************
433 * WNetGetUniversalNameA [MPR.@]
435 DWORD WINAPI
WNetGetUniversalNameA ( LPCSTR lpLocalPath
, DWORD dwInfoLevel
,
436 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
438 FIXME( "(%s, 0x%08lX, %p, %p): stub\n",
439 debugstr_a(lpLocalPath
), dwInfoLevel
, lpBuffer
, lpBufferSize
);
441 SetLastError(WN_NO_NETWORK
);
442 return WN_NO_NETWORK
;
445 /*****************************************************************
446 * WNetGetUniversalNameW [MPR.@]
448 DWORD WINAPI
WNetGetUniversalNameW ( LPCWSTR lpLocalPath
, DWORD dwInfoLevel
,
449 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
451 FIXME( "(%s, 0x%08lX, %p, %p): stub\n",
452 debugstr_w(lpLocalPath
), dwInfoLevel
, lpBuffer
, lpBufferSize
);
454 SetLastError(WN_NO_NETWORK
);
455 return WN_NO_NETWORK
;
464 /**************************************************************************
465 * WNetGetUserA [MPR.@]
467 * FIXME: we should not return ourselves, but the owner of the drive lpName
469 DWORD WINAPI
WNetGetUserA( LPCSTR lpName
, LPSTR lpUserID
, LPDWORD lpBufferSize
)
471 struct passwd
*pwd
= getpwuid(getuid());
473 FIXME( "(%s, %p, %p): mostly stub\n",
474 debugstr_a(lpName
), lpUserID
, lpBufferSize
);
478 if ( strlen(pwd
->pw_name
) + 1 > *lpBufferSize
)
480 *lpBufferSize
= strlen(pwd
->pw_name
) + 1;
482 SetLastError(ERROR_MORE_DATA
);
483 return ERROR_MORE_DATA
;
486 strcpy( lpUserID
, pwd
->pw_name
);
487 *lpBufferSize
= strlen(pwd
->pw_name
) + 1;
491 /* FIXME: wrong return value */
492 SetLastError(ERROR_NO_NETWORK
);
493 return ERROR_NO_NETWORK
;
496 /*****************************************************************
497 * WNetGetUserW [MPR.@]
499 DWORD WINAPI
WNetGetUserW( LPCWSTR lpName
, LPWSTR lpUserID
, LPDWORD lpBufferSize
)
501 FIXME( "(%s, %p, %p): mostly stub\n",
502 debugstr_w(lpName
), lpUserID
, lpBufferSize
);
504 SetLastError(WN_NO_NETWORK
);
505 return WN_NO_NETWORK
;
508 /*********************************************************************
509 * WNetConnectionDialog [MPR.@]
511 DWORD WINAPI
WNetConnectionDialog( HWND hwnd
, DWORD dwType
)
513 FIXME( "(%04x, %08lX): stub\n", hwnd
, dwType
);
515 SetLastError(WN_NO_NETWORK
);
516 return ERROR_NO_NETWORK
;
519 /*********************************************************************
520 * WNetConnectionDialog1A [MPR.@]
522 DWORD WINAPI
WNetConnectionDialog1A( LPCONNECTDLGSTRUCTA lpConnDlgStruct
)
524 FIXME( "(%p): stub\n", lpConnDlgStruct
);
526 SetLastError(WN_NO_NETWORK
);
527 return ERROR_NO_NETWORK
;
530 /*********************************************************************
531 * WNetConnectionDialog1W [MPR.@]
533 DWORD WINAPI
WNetConnectionDialog1W( LPCONNECTDLGSTRUCTW lpConnDlgStruct
)
535 FIXME( "(%p): stub\n", lpConnDlgStruct
);
537 SetLastError(WN_NO_NETWORK
);
538 return ERROR_NO_NETWORK
;
541 /*********************************************************************
542 * WNetDisconnectDialog [MPR.@]
544 DWORD WINAPI
WNetDisconnectDialog( HWND hwnd
, DWORD dwType
)
546 FIXME( "(%04x, %08lX): stub\n", hwnd
, dwType
);
548 SetLastError(WN_NO_NETWORK
);
549 return ERROR_NO_NETWORK
;
552 /*********************************************************************
553 * WNetDisconnectDialog1A [MPR.@]
555 DWORD WINAPI
WNetDisconnectDialog1A( LPDISCDLGSTRUCTA lpConnDlgStruct
)
557 FIXME( "(%p): stub\n", lpConnDlgStruct
);
559 SetLastError(WN_NO_NETWORK
);
560 return ERROR_NO_NETWORK
;
563 /*********************************************************************
564 * WNetDisconnectDialog1W [MPR.@]
566 DWORD WINAPI
WNetDisconnectDialog1W( LPDISCDLGSTRUCTW lpConnDlgStruct
)
568 FIXME( "(%p): stub\n", lpConnDlgStruct
);
570 SetLastError(WN_NO_NETWORK
);
571 return ERROR_NO_NETWORK
;
574 /*********************************************************************
575 * WNetGetLastErrorA [MPR.@]
577 DWORD WINAPI
WNetGetLastErrorA( LPDWORD lpError
,
578 LPSTR lpErrorBuf
, DWORD nErrorBufSize
,
579 LPSTR lpNameBuf
, DWORD nNameBufSize
)
581 FIXME( "(%p, %p, %ld, %p, %ld): stub\n",
582 lpError
, lpErrorBuf
, nErrorBufSize
, lpNameBuf
, nNameBufSize
);
584 SetLastError(WN_NO_NETWORK
);
585 return ERROR_NO_NETWORK
;
588 /*********************************************************************
589 * WNetGetLastErrorW [MPR.@]
591 DWORD WINAPI
WNetGetLastErrorW( LPDWORD lpError
,
592 LPWSTR lpErrorBuf
, DWORD nErrorBufSize
,
593 LPWSTR lpNameBuf
, DWORD nNameBufSize
)
595 FIXME( "(%p, %p, %ld, %p, %ld): stub\n",
596 lpError
, lpErrorBuf
, nErrorBufSize
, lpNameBuf
, nNameBufSize
);
598 SetLastError(WN_NO_NETWORK
);
599 return ERROR_NO_NETWORK
;
602 /*********************************************************************
603 * WNetGetNetworkInformationA [MPR.@]
605 DWORD WINAPI
WNetGetNetworkInformationA( LPCSTR lpProvider
,
606 LPNETINFOSTRUCT lpNetInfoStruct
)
608 FIXME( "(%s, %p): stub\n", debugstr_a(lpProvider
), lpNetInfoStruct
);
610 SetLastError(WN_NO_NETWORK
);
611 return ERROR_NO_NETWORK
;
614 /*********************************************************************
615 * WNetGetNetworkInformationW [MPR.@]
617 DWORD WINAPI
WNetGetNetworkInformationW( LPCWSTR lpProvider
,
618 LPNETINFOSTRUCT lpNetInfoStruct
)
620 FIXME( "(%s, %p): stub\n", debugstr_w(lpProvider
), lpNetInfoStruct
);
622 SetLastError(WN_NO_NETWORK
);
623 return ERROR_NO_NETWORK
;
626 /*****************************************************************
627 * WNetGetProviderNameA [MPR.@]
629 DWORD WINAPI
WNetGetProviderNameA( DWORD dwNetType
,
630 LPSTR lpProvider
, LPDWORD lpBufferSize
)
632 FIXME( "(%ld, %p, %p): stub\n", dwNetType
, lpProvider
, lpBufferSize
);
634 SetLastError(WN_NO_NETWORK
);
635 return WN_NO_NETWORK
;
638 /*****************************************************************
639 * WNetGetProviderNameW [MPR.@]
641 DWORD WINAPI
WNetGetProviderNameW( DWORD dwNetType
,
642 LPWSTR lpProvider
, LPDWORD lpBufferSize
)
644 FIXME( "(%ld, %p, %p): stub\n", dwNetType
, lpProvider
, lpBufferSize
);
646 SetLastError(WN_NO_NETWORK
);
647 return WN_NO_NETWORK
;