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
25 #include <sys/types.h>
33 #include "wine/debug.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(mpr
);
42 /*********************************************************************
43 * WNetOpenEnumA [MPR.@]
45 DWORD WINAPI
WNetOpenEnumA( DWORD dwScope
, DWORD dwType
, DWORD dwUsage
,
46 LPNETRESOURCEA lpNet
, LPHANDLE lphEnum
)
48 FIXME( "(%08lX, %08lX, %08lX, %p, %p): stub\n",
49 dwScope
, dwType
, dwUsage
, lpNet
, lphEnum
);
51 SetLastError(WN_NO_NETWORK
);
55 /*********************************************************************
56 * WNetOpenEnumW [MPR.@]
58 DWORD WINAPI
WNetOpenEnumW( DWORD dwScope
, DWORD dwType
, DWORD dwUsage
,
59 LPNETRESOURCEW lpNet
, LPHANDLE lphEnum
)
61 FIXME( "(%08lX, %08lX, %08lX, %p, %p): stub\n",
62 dwScope
, dwType
, dwUsage
, lpNet
, lphEnum
);
64 SetLastError(WN_NO_NETWORK
);
68 /*********************************************************************
69 * WNetEnumResourceA [MPR.@]
71 DWORD WINAPI
WNetEnumResourceA( HANDLE hEnum
, LPDWORD lpcCount
,
72 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
74 FIXME( "(%p, %p, %p, %p): stub\n",
75 hEnum
, lpcCount
, lpBuffer
, lpBufferSize
);
77 SetLastError(WN_NO_NETWORK
);
81 /*********************************************************************
82 * WNetEnumResourceW [MPR.@]
84 DWORD WINAPI
WNetEnumResourceW( HANDLE hEnum
, LPDWORD lpcCount
,
85 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
87 FIXME( "(%p, %p, %p, %p): stub\n",
88 hEnum
, lpcCount
, lpBuffer
, lpBufferSize
);
90 SetLastError(WN_NO_NETWORK
);
94 /*********************************************************************
95 * WNetCloseEnum [MPR.@]
97 DWORD WINAPI
WNetCloseEnum( HANDLE hEnum
)
99 FIXME( "(%p): stub\n", hEnum
);
101 SetLastError(WN_NO_NETWORK
);
102 return WN_NO_NETWORK
;
105 /*********************************************************************
106 * WNetGetResourceInformationA [MPR.@]
108 DWORD WINAPI
WNetGetResourceInformationA( LPNETRESOURCEA lpNetResource
,
109 LPVOID lpBuffer
, LPDWORD cbBuffer
,
112 FIXME( "(%p, %p, %p, %p): stub\n",
113 lpNetResource
, lpBuffer
, cbBuffer
, lplpSystem
);
115 SetLastError(WN_NO_NETWORK
);
116 return WN_NO_NETWORK
;
119 /*********************************************************************
120 * WNetGetResourceInformationW [MPR.@]
122 DWORD WINAPI
WNetGetResourceInformationW( LPNETRESOURCEW lpNetResource
,
123 LPVOID lpBuffer
, LPDWORD cbBuffer
,
126 FIXME( "(%p, %p, %p, %p): stub\n",
127 lpNetResource
, lpBuffer
, cbBuffer
, lplpSystem
);
129 SetLastError(WN_NO_NETWORK
);
130 return WN_NO_NETWORK
;
133 /*********************************************************************
134 * WNetGetResourceParentA [MPR.@]
136 DWORD WINAPI
WNetGetResourceParentA( LPNETRESOURCEA lpNetResource
,
137 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
139 FIXME( "(%p, %p, %p): stub\n",
140 lpNetResource
, lpBuffer
, lpBufferSize
);
142 SetLastError(WN_NO_NETWORK
);
143 return WN_NO_NETWORK
;
146 /*********************************************************************
147 * WNetGetResourceParentW [MPR.@]
149 DWORD WINAPI
WNetGetResourceParentW( LPNETRESOURCEW lpNetResource
,
150 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
152 FIXME( "(%p, %p, %p): stub\n",
153 lpNetResource
, lpBuffer
, lpBufferSize
);
155 SetLastError(WN_NO_NETWORK
);
156 return WN_NO_NETWORK
;
162 * Connection Functions
165 /*********************************************************************
166 * WNetAddConnectionA [MPR.@]
168 DWORD WINAPI
WNetAddConnectionA( LPCSTR lpRemoteName
, LPCSTR lpPassword
,
171 FIXME( "(%s, %p, %s): stub\n",
172 debugstr_a(lpRemoteName
), lpPassword
, debugstr_a(lpLocalName
) );
174 SetLastError(WN_NO_NETWORK
);
175 return WN_NO_NETWORK
;
178 /*********************************************************************
179 * WNetAddConnectionW [MPR.@]
181 DWORD WINAPI
WNetAddConnectionW( LPCWSTR lpRemoteName
, LPCWSTR lpPassword
,
182 LPCWSTR lpLocalName
)
184 FIXME( "(%s, %p, %s): stub\n",
185 debugstr_w(lpRemoteName
), lpPassword
, debugstr_w(lpLocalName
) );
187 SetLastError(WN_NO_NETWORK
);
188 return WN_NO_NETWORK
;
191 /*********************************************************************
192 * WNetAddConnection2A [MPR.@]
194 DWORD WINAPI
WNetAddConnection2A( LPNETRESOURCEA lpNetResource
,
195 LPCSTR lpPassword
, LPCSTR lpUserID
,
198 FIXME( "(%p, %p, %s, 0x%08lX): stub\n",
199 lpNetResource
, lpPassword
, debugstr_a(lpUserID
), dwFlags
);
201 SetLastError(WN_NO_NETWORK
);
202 return WN_NO_NETWORK
;
205 /*********************************************************************
206 * WNetAddConnection2W [MPR.@]
208 DWORD WINAPI
WNetAddConnection2W( LPNETRESOURCEW lpNetResource
,
209 LPCWSTR lpPassword
, LPCWSTR lpUserID
,
212 FIXME( "(%p, %p, %s, 0x%08lX): stub\n",
213 lpNetResource
, lpPassword
, debugstr_w(lpUserID
), dwFlags
);
215 SetLastError(WN_NO_NETWORK
);
216 return WN_NO_NETWORK
;
219 /*********************************************************************
220 * WNetAddConnection3A [MPR.@]
222 DWORD WINAPI
WNetAddConnection3A( HWND hwndOwner
, LPNETRESOURCEA lpNetResource
,
223 LPCSTR lpPassword
, LPCSTR lpUserID
,
226 FIXME( "(%p, %p, %p, %s, 0x%08lX), stub\n",
227 hwndOwner
, lpNetResource
, lpPassword
, debugstr_a(lpUserID
), dwFlags
);
229 SetLastError(WN_NO_NETWORK
);
230 return WN_NO_NETWORK
;
233 /*********************************************************************
234 * WNetAddConnection3W [MPR.@]
236 DWORD WINAPI
WNetAddConnection3W( HWND hwndOwner
, LPNETRESOURCEW lpNetResource
,
237 LPCWSTR lpPassword
, LPCWSTR lpUserID
,
240 FIXME( "(%p, %p, %p, %s, 0x%08lX), stub\n",
241 hwndOwner
, lpNetResource
, lpPassword
, debugstr_w(lpUserID
), dwFlags
);
243 SetLastError(WN_NO_NETWORK
);
244 return WN_NO_NETWORK
;
247 /*****************************************************************
248 * WNetUseConnectionA [MPR.@]
250 DWORD WINAPI
WNetUseConnectionA( HWND hwndOwner
, LPNETRESOURCEA lpNetResource
,
251 LPCSTR lpPassword
, LPCSTR lpUserID
, DWORD dwFlags
,
252 LPSTR lpAccessName
, LPDWORD lpBufferSize
,
255 FIXME( "(%p, %p, %p, %s, 0x%08lX, %s, %p, %p), stub\n",
256 hwndOwner
, lpNetResource
, lpPassword
, debugstr_a(lpUserID
), dwFlags
,
257 debugstr_a(lpAccessName
), lpBufferSize
, lpResult
);
259 SetLastError(WN_NO_NETWORK
);
260 return WN_NO_NETWORK
;
263 /*****************************************************************
264 * WNetUseConnectionW [MPR.@]
266 DWORD WINAPI
WNetUseConnectionW( HWND hwndOwner
, LPNETRESOURCEW lpNetResource
,
267 LPCWSTR lpPassword
, LPCWSTR lpUserID
, DWORD dwFlags
,
268 LPWSTR lpAccessName
, LPDWORD lpBufferSize
,
271 FIXME( "(%p, %p, %p, %s, 0x%08lX, %s, %p, %p), stub\n",
272 hwndOwner
, lpNetResource
, lpPassword
, debugstr_w(lpUserID
), dwFlags
,
273 debugstr_w(lpAccessName
), lpBufferSize
, lpResult
);
275 SetLastError(WN_NO_NETWORK
);
276 return WN_NO_NETWORK
;
279 /*********************************************************************
280 * WNetCancelConnectionA [MPR.@]
282 DWORD WINAPI
WNetCancelConnectionA( LPCSTR lpName
, BOOL fForce
)
284 FIXME( "(%s, %d), stub\n", debugstr_a(lpName
), fForce
);
289 /*********************************************************************
290 * WNetCancelConnectionW [MPR.@]
292 DWORD WINAPI
WNetCancelConnectionW( LPCWSTR lpName
, BOOL fForce
)
294 FIXME( "(%s, %d), stub\n", debugstr_w(lpName
), fForce
);
299 /*********************************************************************
300 * WNetCancelConnection2A [MPR.@]
302 DWORD WINAPI
WNetCancelConnection2A( LPCSTR lpName
, DWORD dwFlags
, BOOL fForce
)
304 FIXME( "(%s, %08lX, %d), stub\n", debugstr_a(lpName
), dwFlags
, fForce
);
309 /*********************************************************************
310 * WNetCancelConnection2W [MPR.@]
312 DWORD WINAPI
WNetCancelConnection2W( LPCWSTR lpName
, DWORD dwFlags
, BOOL fForce
)
314 FIXME( "(%s, %08lX, %d), stub\n", debugstr_w(lpName
), dwFlags
, fForce
);
319 /*****************************************************************
320 * WNetRestoreConnectionA [MPR.@]
322 DWORD WINAPI
WNetRestoreConnectionA( HWND hwndOwner
, LPSTR lpszDevice
)
324 FIXME( "(%p, %s), stub\n", hwndOwner
, debugstr_a(lpszDevice
) );
326 SetLastError(WN_NO_NETWORK
);
327 return WN_NO_NETWORK
;
330 /*****************************************************************
331 * WNetRestoreConnectionW [MPR.@]
333 DWORD WINAPI
WNetRestoreConnectionW( HWND hwndOwner
, LPWSTR lpszDevice
)
335 FIXME( "(%p, %s), stub\n", hwndOwner
, debugstr_w(lpszDevice
) );
337 SetLastError(WN_NO_NETWORK
);
338 return WN_NO_NETWORK
;
341 /**************************************************************************
342 * WNetGetConnectionA [MPR.@]
345 * - WN_BAD_LOCALNAME lpLocalName makes no sense
346 * - WN_NOT_CONNECTED drive is a local drive
347 * - WN_MORE_DATA buffer isn't big enough
348 * - WN_SUCCESS success (net path in buffer)
351 DWORD WINAPI
WNetGetConnectionA( LPCSTR lpLocalName
,
352 LPSTR lpRemoteName
, LPDWORD lpBufferSize
)
356 TRACE( "local %s\n", lpLocalName
);
357 if (lpLocalName
[1] == ':')
359 switch(GetDriveTypeA(lpLocalName
))
362 if (!GetVolumeInformationA( lpLocalName
, label
, sizeof(label
),
363 NULL
, NULL
, NULL
, NULL
, 0 )) label
[0] = 0;
364 if (strlen(label
) + 1 > *lpBufferSize
)
366 *lpBufferSize
= strlen(label
) + 1;
369 strcpy( lpRemoteName
, label
);
370 *lpBufferSize
= strlen(lpRemoteName
) + 1;
372 case DRIVE_REMOVABLE
:
375 TRACE("file is local\n");
376 return WN_NOT_CONNECTED
;
378 return WN_BAD_LOCALNAME
;
381 return WN_BAD_LOCALNAME
;
384 /**************************************************************************
385 * WNetGetConnectionW [MPR.@]
387 DWORD WINAPI
WNetGetConnectionW( LPCWSTR lpLocalName
,
388 LPWSTR lpRemoteName
, LPDWORD lpBufferSize
)
391 DWORD ret
, x
= sizeof(buf
);
392 INT len
= WideCharToMultiByte( CP_ACP
, 0, lpLocalName
, -1, NULL
, 0, NULL
, NULL
);
393 LPSTR lnA
= HeapAlloc( GetProcessHeap(), 0, len
);
395 WideCharToMultiByte( CP_ACP
, 0, lpLocalName
, -1, lnA
, len
, NULL
, NULL
);
396 ret
= WNetGetConnectionA( lnA
, buf
, &x
);
397 HeapFree( GetProcessHeap(), 0, lnA
);
398 if (ret
== WN_SUCCESS
)
400 x
= MultiByteToWideChar( CP_ACP
, 0, buf
, -1, NULL
, 0 );
401 if (x
> *lpBufferSize
)
406 *lpBufferSize
= MultiByteToWideChar( CP_ACP
, 0, buf
, -1, lpRemoteName
, *lpBufferSize
);
411 /**************************************************************************
412 * WNetSetConnectionA [MPR.@]
414 DWORD WINAPI
WNetSetConnectionA( LPCSTR lpName
, DWORD dwProperty
,
417 FIXME( "(%s, %08lX, %p): stub\n", debugstr_a(lpName
), dwProperty
, pvValue
);
419 SetLastError(WN_NO_NETWORK
);
420 return WN_NO_NETWORK
;
423 /**************************************************************************
424 * WNetSetConnectionW [MPR.@]
426 DWORD WINAPI
WNetSetConnectionW( LPCWSTR lpName
, DWORD dwProperty
,
429 FIXME( "(%s, %08lX, %p): stub\n", debugstr_w(lpName
), dwProperty
, pvValue
);
431 SetLastError(WN_NO_NETWORK
);
432 return WN_NO_NETWORK
;
435 /*****************************************************************
436 * WNetGetUniversalNameA [MPR.@]
438 DWORD WINAPI
WNetGetUniversalNameA ( LPCSTR lpLocalPath
, DWORD dwInfoLevel
,
439 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
441 FIXME( "(%s, 0x%08lX, %p, %p): stub\n",
442 debugstr_a(lpLocalPath
), dwInfoLevel
, lpBuffer
, lpBufferSize
);
444 SetLastError(WN_NO_NETWORK
);
445 return WN_NO_NETWORK
;
448 /*****************************************************************
449 * WNetGetUniversalNameW [MPR.@]
451 DWORD WINAPI
WNetGetUniversalNameW ( LPCWSTR lpLocalPath
, DWORD dwInfoLevel
,
452 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
454 FIXME( "(%s, 0x%08lX, %p, %p): stub\n",
455 debugstr_w(lpLocalPath
), dwInfoLevel
, lpBuffer
, lpBufferSize
);
457 SetLastError(WN_NO_NETWORK
);
458 return WN_NO_NETWORK
;
467 /**************************************************************************
468 * WNetGetUserA [MPR.@]
470 * FIXME: we should not return ourselves, but the owner of the drive lpName
472 DWORD WINAPI
WNetGetUserA( LPCSTR lpName
, LPSTR lpUserID
, LPDWORD lpBufferSize
)
474 if (GetUserNameA( lpUserID
, lpBufferSize
)) return WN_SUCCESS
;
475 return GetLastError();
478 /*****************************************************************
479 * WNetGetUserW [MPR.@]
481 DWORD WINAPI
WNetGetUserW( LPCWSTR lpName
, LPWSTR lpUserID
, LPDWORD lpBufferSize
)
483 FIXME( "(%s, %p, %p): mostly stub\n",
484 debugstr_w(lpName
), lpUserID
, lpBufferSize
);
486 SetLastError(WN_NO_NETWORK
);
487 return WN_NO_NETWORK
;
490 /*********************************************************************
491 * WNetConnectionDialog [MPR.@]
493 DWORD WINAPI
WNetConnectionDialog( HWND hwnd
, DWORD dwType
)
495 FIXME( "(%p, %08lX): stub\n", hwnd
, dwType
);
497 SetLastError(WN_NO_NETWORK
);
498 return ERROR_NO_NETWORK
;
501 /*********************************************************************
502 * WNetConnectionDialog1A [MPR.@]
504 DWORD WINAPI
WNetConnectionDialog1A( LPCONNECTDLGSTRUCTA lpConnDlgStruct
)
506 FIXME( "(%p): stub\n", lpConnDlgStruct
);
508 SetLastError(WN_NO_NETWORK
);
509 return ERROR_NO_NETWORK
;
512 /*********************************************************************
513 * WNetConnectionDialog1W [MPR.@]
515 DWORD WINAPI
WNetConnectionDialog1W( LPCONNECTDLGSTRUCTW lpConnDlgStruct
)
517 FIXME( "(%p): stub\n", lpConnDlgStruct
);
519 SetLastError(WN_NO_NETWORK
);
520 return ERROR_NO_NETWORK
;
523 /*********************************************************************
524 * WNetDisconnectDialog [MPR.@]
526 DWORD WINAPI
WNetDisconnectDialog( HWND hwnd
, DWORD dwType
)
528 FIXME( "(%p, %08lX): stub\n", hwnd
, dwType
);
530 SetLastError(WN_NO_NETWORK
);
531 return ERROR_NO_NETWORK
;
534 /*********************************************************************
535 * WNetDisconnectDialog1A [MPR.@]
537 DWORD WINAPI
WNetDisconnectDialog1A( LPDISCDLGSTRUCTA lpConnDlgStruct
)
539 FIXME( "(%p): stub\n", lpConnDlgStruct
);
541 SetLastError(WN_NO_NETWORK
);
542 return ERROR_NO_NETWORK
;
545 /*********************************************************************
546 * WNetDisconnectDialog1W [MPR.@]
548 DWORD WINAPI
WNetDisconnectDialog1W( LPDISCDLGSTRUCTW lpConnDlgStruct
)
550 FIXME( "(%p): stub\n", lpConnDlgStruct
);
552 SetLastError(WN_NO_NETWORK
);
553 return ERROR_NO_NETWORK
;
556 /*********************************************************************
557 * WNetGetLastErrorA [MPR.@]
559 DWORD WINAPI
WNetGetLastErrorA( LPDWORD lpError
,
560 LPSTR lpErrorBuf
, DWORD nErrorBufSize
,
561 LPSTR lpNameBuf
, DWORD nNameBufSize
)
563 FIXME( "(%p, %p, %ld, %p, %ld): stub\n",
564 lpError
, lpErrorBuf
, nErrorBufSize
, lpNameBuf
, nNameBufSize
);
566 SetLastError(WN_NO_NETWORK
);
567 return ERROR_NO_NETWORK
;
570 /*********************************************************************
571 * WNetGetLastErrorW [MPR.@]
573 DWORD WINAPI
WNetGetLastErrorW( LPDWORD lpError
,
574 LPWSTR lpErrorBuf
, DWORD nErrorBufSize
,
575 LPWSTR lpNameBuf
, DWORD nNameBufSize
)
577 FIXME( "(%p, %p, %ld, %p, %ld): stub\n",
578 lpError
, lpErrorBuf
, nErrorBufSize
, lpNameBuf
, nNameBufSize
);
580 SetLastError(WN_NO_NETWORK
);
581 return ERROR_NO_NETWORK
;
584 /*********************************************************************
585 * WNetGetNetworkInformationA [MPR.@]
587 DWORD WINAPI
WNetGetNetworkInformationA( LPCSTR lpProvider
,
588 LPNETINFOSTRUCT lpNetInfoStruct
)
590 FIXME( "(%s, %p): stub\n", debugstr_a(lpProvider
), lpNetInfoStruct
);
592 SetLastError(WN_NO_NETWORK
);
593 return ERROR_NO_NETWORK
;
596 /*********************************************************************
597 * WNetGetNetworkInformationW [MPR.@]
599 DWORD WINAPI
WNetGetNetworkInformationW( LPCWSTR lpProvider
,
600 LPNETINFOSTRUCT lpNetInfoStruct
)
602 FIXME( "(%s, %p): stub\n", debugstr_w(lpProvider
), lpNetInfoStruct
);
604 SetLastError(WN_NO_NETWORK
);
605 return ERROR_NO_NETWORK
;
608 /*****************************************************************
609 * WNetGetProviderNameA [MPR.@]
611 DWORD WINAPI
WNetGetProviderNameA( DWORD dwNetType
,
612 LPSTR lpProvider
, LPDWORD lpBufferSize
)
614 FIXME( "(%ld, %p, %p): stub\n", dwNetType
, lpProvider
, lpBufferSize
);
616 SetLastError(WN_NO_NETWORK
);
617 return WN_NO_NETWORK
;
620 /*****************************************************************
621 * WNetGetProviderNameW [MPR.@]
623 DWORD WINAPI
WNetGetProviderNameW( DWORD dwNetType
,
624 LPWSTR lpProvider
, LPDWORD lpBufferSize
)
626 FIXME( "(%ld, %p, %p): stub\n", dwNetType
, lpProvider
, lpBufferSize
);
628 SetLastError(WN_NO_NETWORK
);
629 return WN_NO_NETWORK
;