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
26 #include <sys/types.h>
35 #include "wine/debug.h"
37 WINE_DEFAULT_DEBUG_CHANNEL(mpr
);
44 /*********************************************************************
45 * WNetOpenEnumA [MPR.@]
47 DWORD WINAPI
WNetOpenEnumA( DWORD dwScope
, DWORD dwType
, DWORD dwUsage
,
48 LPNETRESOURCEA lpNet
, LPHANDLE lphEnum
)
50 FIXME( "(%08lX, %08lX, %08lX, %p, %p): stub\n",
51 dwScope
, dwType
, dwUsage
, lpNet
, lphEnum
);
53 SetLastError(WN_NO_NETWORK
);
57 /*********************************************************************
58 * WNetOpenEnumW [MPR.@]
60 DWORD WINAPI
WNetOpenEnumW( DWORD dwScope
, DWORD dwType
, DWORD dwUsage
,
61 LPNETRESOURCEW lpNet
, LPHANDLE lphEnum
)
63 FIXME( "(%08lX, %08lX, %08lX, %p, %p): stub\n",
64 dwScope
, dwType
, dwUsage
, lpNet
, lphEnum
);
66 SetLastError(WN_NO_NETWORK
);
70 /*********************************************************************
71 * WNetEnumResourceA [MPR.@]
73 DWORD WINAPI
WNetEnumResourceA( HANDLE hEnum
, LPDWORD lpcCount
,
74 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
76 FIXME( "(%p, %p, %p, %p): stub\n",
77 hEnum
, lpcCount
, lpBuffer
, lpBufferSize
);
79 SetLastError(WN_NO_NETWORK
);
83 /*********************************************************************
84 * WNetEnumResourceW [MPR.@]
86 DWORD WINAPI
WNetEnumResourceW( HANDLE hEnum
, LPDWORD lpcCount
,
87 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
89 FIXME( "(%p, %p, %p, %p): stub\n",
90 hEnum
, lpcCount
, lpBuffer
, lpBufferSize
);
92 SetLastError(WN_NO_NETWORK
);
96 /*********************************************************************
97 * WNetCloseEnum [MPR.@]
99 DWORD WINAPI
WNetCloseEnum( HANDLE hEnum
)
101 FIXME( "(%p): stub\n", hEnum
);
103 SetLastError(WN_NO_NETWORK
);
104 return WN_NO_NETWORK
;
107 /*********************************************************************
108 * WNetGetResourceInformationA [MPR.@]
110 DWORD WINAPI
WNetGetResourceInformationA( LPNETRESOURCEA lpNetResource
,
111 LPVOID lpBuffer
, LPDWORD cbBuffer
,
114 FIXME( "(%p, %p, %p, %p): stub\n",
115 lpNetResource
, lpBuffer
, cbBuffer
, lplpSystem
);
117 SetLastError(WN_NO_NETWORK
);
118 return WN_NO_NETWORK
;
121 /*********************************************************************
122 * WNetGetResourceInformationW [MPR.@]
124 DWORD WINAPI
WNetGetResourceInformationW( LPNETRESOURCEW lpNetResource
,
125 LPVOID lpBuffer
, LPDWORD cbBuffer
,
128 FIXME( "(%p, %p, %p, %p): stub\n",
129 lpNetResource
, lpBuffer
, cbBuffer
, lplpSystem
);
131 SetLastError(WN_NO_NETWORK
);
132 return WN_NO_NETWORK
;
135 /*********************************************************************
136 * WNetGetResourceParentA [MPR.@]
138 DWORD WINAPI
WNetGetResourceParentA( LPNETRESOURCEA lpNetResource
,
139 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
141 FIXME( "(%p, %p, %p): stub\n",
142 lpNetResource
, lpBuffer
, lpBufferSize
);
144 SetLastError(WN_NO_NETWORK
);
145 return WN_NO_NETWORK
;
148 /*********************************************************************
149 * WNetGetResourceParentW [MPR.@]
151 DWORD WINAPI
WNetGetResourceParentW( LPNETRESOURCEW lpNetResource
,
152 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
154 FIXME( "(%p, %p, %p): stub\n",
155 lpNetResource
, lpBuffer
, lpBufferSize
);
157 SetLastError(WN_NO_NETWORK
);
158 return WN_NO_NETWORK
;
164 * Connection Functions
167 /*********************************************************************
168 * WNetAddConnectionA [MPR.@]
170 DWORD WINAPI
WNetAddConnectionA( LPCSTR lpRemoteName
, LPCSTR lpPassword
,
173 FIXME( "(%s, %p, %s): stub\n",
174 debugstr_a(lpRemoteName
), lpPassword
, debugstr_a(lpLocalName
) );
176 SetLastError(WN_NO_NETWORK
);
177 return WN_NO_NETWORK
;
180 /*********************************************************************
181 * WNetAddConnectionW [MPR.@]
183 DWORD WINAPI
WNetAddConnectionW( LPCWSTR lpRemoteName
, LPCWSTR lpPassword
,
184 LPCWSTR lpLocalName
)
186 FIXME( "(%s, %p, %s): stub\n",
187 debugstr_w(lpRemoteName
), lpPassword
, debugstr_w(lpLocalName
) );
189 SetLastError(WN_NO_NETWORK
);
190 return WN_NO_NETWORK
;
193 /*********************************************************************
194 * WNetAddConnection2A [MPR.@]
196 DWORD WINAPI
WNetAddConnection2A( LPNETRESOURCEA lpNetResource
,
197 LPCSTR lpPassword
, LPCSTR lpUserID
,
200 FIXME( "(%p, %p, %s, 0x%08lX): stub\n",
201 lpNetResource
, lpPassword
, debugstr_a(lpUserID
), dwFlags
);
203 SetLastError(WN_NO_NETWORK
);
204 return WN_NO_NETWORK
;
207 /*********************************************************************
208 * WNetAddConnection2W [MPR.@]
210 DWORD WINAPI
WNetAddConnection2W( LPNETRESOURCEW lpNetResource
,
211 LPCWSTR lpPassword
, LPCWSTR lpUserID
,
214 FIXME( "(%p, %p, %s, 0x%08lX): stub\n",
215 lpNetResource
, lpPassword
, debugstr_w(lpUserID
), dwFlags
);
217 SetLastError(WN_NO_NETWORK
);
218 return WN_NO_NETWORK
;
221 /*********************************************************************
222 * WNetAddConnection3A [MPR.@]
224 DWORD WINAPI
WNetAddConnection3A( HWND hwndOwner
, LPNETRESOURCEA lpNetResource
,
225 LPCSTR lpPassword
, LPCSTR lpUserID
,
228 FIXME( "(%p, %p, %p, %s, 0x%08lX), stub\n",
229 hwndOwner
, lpNetResource
, lpPassword
, debugstr_a(lpUserID
), dwFlags
);
231 SetLastError(WN_NO_NETWORK
);
232 return WN_NO_NETWORK
;
235 /*********************************************************************
236 * WNetAddConnection3W [MPR.@]
238 DWORD WINAPI
WNetAddConnection3W( HWND hwndOwner
, LPNETRESOURCEW lpNetResource
,
239 LPCWSTR lpPassword
, LPCWSTR lpUserID
,
242 FIXME( "(%p, %p, %p, %s, 0x%08lX), stub\n",
243 hwndOwner
, lpNetResource
, lpPassword
, debugstr_w(lpUserID
), dwFlags
);
245 SetLastError(WN_NO_NETWORK
);
246 return WN_NO_NETWORK
;
249 /*****************************************************************
250 * WNetUseConnectionA [MPR.@]
252 DWORD WINAPI
WNetUseConnectionA( HWND hwndOwner
, LPNETRESOURCEA lpNetResource
,
253 LPCSTR lpPassword
, LPCSTR lpUserID
, DWORD dwFlags
,
254 LPSTR lpAccessName
, LPDWORD lpBufferSize
,
257 FIXME( "(%p, %p, %p, %s, 0x%08lX, %s, %p, %p), stub\n",
258 hwndOwner
, lpNetResource
, lpPassword
, debugstr_a(lpUserID
), dwFlags
,
259 debugstr_a(lpAccessName
), lpBufferSize
, lpResult
);
261 SetLastError(WN_NO_NETWORK
);
262 return WN_NO_NETWORK
;
265 /*****************************************************************
266 * WNetUseConnectionW [MPR.@]
268 DWORD WINAPI
WNetUseConnectionW( HWND hwndOwner
, LPNETRESOURCEW lpNetResource
,
269 LPCWSTR lpPassword
, LPCWSTR lpUserID
, DWORD dwFlags
,
270 LPWSTR lpAccessName
, LPDWORD lpBufferSize
,
273 FIXME( "(%p, %p, %p, %s, 0x%08lX, %s, %p, %p), stub\n",
274 hwndOwner
, lpNetResource
, lpPassword
, debugstr_w(lpUserID
), dwFlags
,
275 debugstr_w(lpAccessName
), lpBufferSize
, lpResult
);
277 SetLastError(WN_NO_NETWORK
);
278 return WN_NO_NETWORK
;
281 /*********************************************************************
282 * WNetCancelConnectionA [MPR.@]
284 DWORD WINAPI
WNetCancelConnectionA( LPCSTR lpName
, BOOL fForce
)
286 FIXME( "(%s, %d), stub\n", debugstr_a(lpName
), fForce
);
291 /*********************************************************************
292 * WNetCancelConnectionW [MPR.@]
294 DWORD WINAPI
WNetCancelConnectionW( LPCWSTR lpName
, BOOL fForce
)
296 FIXME( "(%s, %d), stub\n", debugstr_w(lpName
), fForce
);
301 /*********************************************************************
302 * WNetCancelConnection2A [MPR.@]
304 DWORD WINAPI
WNetCancelConnection2A( LPCSTR lpName
, DWORD dwFlags
, BOOL fForce
)
306 FIXME( "(%s, %08lX, %d), stub\n", debugstr_a(lpName
), dwFlags
, fForce
);
311 /*********************************************************************
312 * WNetCancelConnection2W [MPR.@]
314 DWORD WINAPI
WNetCancelConnection2W( LPCWSTR lpName
, DWORD dwFlags
, BOOL fForce
)
316 FIXME( "(%s, %08lX, %d), stub\n", debugstr_w(lpName
), dwFlags
, fForce
);
321 /*****************************************************************
322 * WNetRestoreConnectionA [MPR.@]
324 DWORD WINAPI
WNetRestoreConnectionA( HWND hwndOwner
, LPSTR lpszDevice
)
326 FIXME( "(%p, %s), stub\n", hwndOwner
, debugstr_a(lpszDevice
) );
328 SetLastError(WN_NO_NETWORK
);
329 return WN_NO_NETWORK
;
332 /*****************************************************************
333 * WNetRestoreConnectionW [MPR.@]
335 DWORD WINAPI
WNetRestoreConnectionW( HWND hwndOwner
, LPWSTR lpszDevice
)
337 FIXME( "(%p, %s), stub\n", hwndOwner
, debugstr_w(lpszDevice
) );
339 SetLastError(WN_NO_NETWORK
);
340 return WN_NO_NETWORK
;
343 /**************************************************************************
344 * WNetGetConnectionA [MPR.@]
347 * - WN_BAD_LOCALNAME lpLocalName makes no sense
348 * - WN_NOT_CONNECTED drive is a local drive
349 * - WN_MORE_DATA buffer isn't big enough
350 * - WN_SUCCESS success (net path in buffer)
353 DWORD WINAPI
WNetGetConnectionA( LPCSTR lpLocalName
,
354 LPSTR lpRemoteName
, LPDWORD lpBufferSize
)
358 TRACE( "local %s\n", lpLocalName
);
359 if (lpLocalName
[1] == ':')
361 switch(GetDriveTypeA(lpLocalName
))
364 if (!GetVolumeInformationA( lpLocalName
, label
, sizeof(label
),
365 NULL
, NULL
, NULL
, NULL
, 0 )) label
[0] = 0;
366 if (strlen(label
) + 1 > *lpBufferSize
)
368 *lpBufferSize
= strlen(label
) + 1;
371 strcpy( lpRemoteName
, label
);
372 *lpBufferSize
= strlen(lpRemoteName
) + 1;
374 case DRIVE_REMOVABLE
:
377 TRACE("file is local\n");
378 return WN_NOT_CONNECTED
;
380 return WN_BAD_LOCALNAME
;
383 return WN_BAD_LOCALNAME
;
386 /**************************************************************************
387 * WNetGetConnectionW [MPR.@]
389 DWORD WINAPI
WNetGetConnectionW( LPCWSTR lpLocalName
,
390 LPWSTR lpRemoteName
, LPDWORD lpBufferSize
)
393 DWORD ret
, x
= sizeof(buf
);
394 INT len
= WideCharToMultiByte( CP_ACP
, 0, lpLocalName
, -1, NULL
, 0, NULL
, NULL
);
395 LPSTR lnA
= HeapAlloc( GetProcessHeap(), 0, len
);
397 WideCharToMultiByte( CP_ACP
, 0, lpLocalName
, -1, lnA
, len
, NULL
, NULL
);
398 ret
= WNetGetConnectionA( lnA
, buf
, &x
);
399 HeapFree( GetProcessHeap(), 0, lnA
);
400 if (ret
== WN_SUCCESS
)
402 x
= MultiByteToWideChar( CP_ACP
, 0, buf
, -1, NULL
, 0 );
403 if (x
> *lpBufferSize
)
408 *lpBufferSize
= MultiByteToWideChar( CP_ACP
, 0, buf
, -1, lpRemoteName
, *lpBufferSize
);
413 /**************************************************************************
414 * WNetSetConnectionA [MPR.@]
416 DWORD WINAPI
WNetSetConnectionA( LPCSTR lpName
, DWORD dwProperty
,
419 FIXME( "(%s, %08lX, %p): stub\n", debugstr_a(lpName
), dwProperty
, pvValue
);
421 SetLastError(WN_NO_NETWORK
);
422 return WN_NO_NETWORK
;
425 /**************************************************************************
426 * WNetSetConnectionW [MPR.@]
428 DWORD WINAPI
WNetSetConnectionW( LPCWSTR lpName
, DWORD dwProperty
,
431 FIXME( "(%s, %08lX, %p): stub\n", debugstr_w(lpName
), dwProperty
, pvValue
);
433 SetLastError(WN_NO_NETWORK
);
434 return WN_NO_NETWORK
;
437 /*****************************************************************
438 * WNetGetUniversalNameA [MPR.@]
440 DWORD WINAPI
WNetGetUniversalNameA ( LPCSTR lpLocalPath
, DWORD dwInfoLevel
,
441 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
443 FIXME( "(%s, 0x%08lX, %p, %p): stub\n",
444 debugstr_a(lpLocalPath
), dwInfoLevel
, lpBuffer
, lpBufferSize
);
446 SetLastError(WN_NO_NETWORK
);
447 return WN_NO_NETWORK
;
450 /*****************************************************************
451 * WNetGetUniversalNameW [MPR.@]
453 DWORD WINAPI
WNetGetUniversalNameW ( LPCWSTR lpLocalPath
, DWORD dwInfoLevel
,
454 LPVOID lpBuffer
, LPDWORD lpBufferSize
)
456 FIXME( "(%s, 0x%08lX, %p, %p): stub\n",
457 debugstr_w(lpLocalPath
), dwInfoLevel
, lpBuffer
, lpBufferSize
);
459 SetLastError(WN_NO_NETWORK
);
460 return WN_NO_NETWORK
;
469 /**************************************************************************
470 * WNetGetUserA [MPR.@]
472 * FIXME: we should not return ourselves, but the owner of the drive lpName
474 DWORD WINAPI
WNetGetUserA( LPCSTR lpName
, LPSTR lpUserID
, LPDWORD lpBufferSize
)
476 if (GetUserNameA( lpUserID
, lpBufferSize
)) return WN_SUCCESS
;
477 return GetLastError();
480 /*****************************************************************
481 * WNetGetUserW [MPR.@]
483 DWORD WINAPI
WNetGetUserW( LPCWSTR lpName
, LPWSTR lpUserID
, LPDWORD lpBufferSize
)
485 FIXME( "(%s, %p, %p): mostly stub\n",
486 debugstr_w(lpName
), lpUserID
, lpBufferSize
);
488 SetLastError(WN_NO_NETWORK
);
489 return WN_NO_NETWORK
;
492 /*********************************************************************
493 * WNetConnectionDialog [MPR.@]
495 DWORD WINAPI
WNetConnectionDialog( HWND hwnd
, DWORD dwType
)
497 FIXME( "(%p, %08lX): stub\n", hwnd
, dwType
);
499 SetLastError(WN_NO_NETWORK
);
500 return ERROR_NO_NETWORK
;
503 /*********************************************************************
504 * WNetConnectionDialog1A [MPR.@]
506 DWORD WINAPI
WNetConnectionDialog1A( LPCONNECTDLGSTRUCTA lpConnDlgStruct
)
508 FIXME( "(%p): stub\n", lpConnDlgStruct
);
510 SetLastError(WN_NO_NETWORK
);
511 return ERROR_NO_NETWORK
;
514 /*********************************************************************
515 * WNetConnectionDialog1W [MPR.@]
517 DWORD WINAPI
WNetConnectionDialog1W( LPCONNECTDLGSTRUCTW lpConnDlgStruct
)
519 FIXME( "(%p): stub\n", lpConnDlgStruct
);
521 SetLastError(WN_NO_NETWORK
);
522 return ERROR_NO_NETWORK
;
525 /*********************************************************************
526 * WNetDisconnectDialog [MPR.@]
528 DWORD WINAPI
WNetDisconnectDialog( HWND hwnd
, DWORD dwType
)
530 FIXME( "(%p, %08lX): stub\n", hwnd
, dwType
);
532 SetLastError(WN_NO_NETWORK
);
533 return ERROR_NO_NETWORK
;
536 /*********************************************************************
537 * WNetDisconnectDialog1A [MPR.@]
539 DWORD WINAPI
WNetDisconnectDialog1A( LPDISCDLGSTRUCTA lpConnDlgStruct
)
541 FIXME( "(%p): stub\n", lpConnDlgStruct
);
543 SetLastError(WN_NO_NETWORK
);
544 return ERROR_NO_NETWORK
;
547 /*********************************************************************
548 * WNetDisconnectDialog1W [MPR.@]
550 DWORD WINAPI
WNetDisconnectDialog1W( LPDISCDLGSTRUCTW lpConnDlgStruct
)
552 FIXME( "(%p): stub\n", lpConnDlgStruct
);
554 SetLastError(WN_NO_NETWORK
);
555 return ERROR_NO_NETWORK
;
558 /*********************************************************************
559 * WNetGetLastErrorA [MPR.@]
561 DWORD WINAPI
WNetGetLastErrorA( LPDWORD lpError
,
562 LPSTR lpErrorBuf
, DWORD nErrorBufSize
,
563 LPSTR lpNameBuf
, DWORD nNameBufSize
)
565 FIXME( "(%p, %p, %ld, %p, %ld): stub\n",
566 lpError
, lpErrorBuf
, nErrorBufSize
, lpNameBuf
, nNameBufSize
);
568 SetLastError(WN_NO_NETWORK
);
569 return ERROR_NO_NETWORK
;
572 /*********************************************************************
573 * WNetGetLastErrorW [MPR.@]
575 DWORD WINAPI
WNetGetLastErrorW( LPDWORD lpError
,
576 LPWSTR lpErrorBuf
, DWORD nErrorBufSize
,
577 LPWSTR lpNameBuf
, DWORD nNameBufSize
)
579 FIXME( "(%p, %p, %ld, %p, %ld): stub\n",
580 lpError
, lpErrorBuf
, nErrorBufSize
, lpNameBuf
, nNameBufSize
);
582 SetLastError(WN_NO_NETWORK
);
583 return ERROR_NO_NETWORK
;
586 /*********************************************************************
587 * WNetGetNetworkInformationA [MPR.@]
589 DWORD WINAPI
WNetGetNetworkInformationA( LPCSTR lpProvider
,
590 LPNETINFOSTRUCT lpNetInfoStruct
)
592 FIXME( "(%s, %p): stub\n", debugstr_a(lpProvider
), lpNetInfoStruct
);
594 SetLastError(WN_NO_NETWORK
);
595 return ERROR_NO_NETWORK
;
598 /*********************************************************************
599 * WNetGetNetworkInformationW [MPR.@]
601 DWORD WINAPI
WNetGetNetworkInformationW( LPCWSTR lpProvider
,
602 LPNETINFOSTRUCT lpNetInfoStruct
)
604 FIXME( "(%s, %p): stub\n", debugstr_w(lpProvider
), lpNetInfoStruct
);
606 SetLastError(WN_NO_NETWORK
);
607 return ERROR_NO_NETWORK
;
610 /*****************************************************************
611 * WNetGetProviderNameA [MPR.@]
613 DWORD WINAPI
WNetGetProviderNameA( DWORD dwNetType
,
614 LPSTR lpProvider
, LPDWORD lpBufferSize
)
616 FIXME( "(%ld, %p, %p): stub\n", dwNetType
, lpProvider
, lpBufferSize
);
618 SetLastError(WN_NO_NETWORK
);
619 return WN_NO_NETWORK
;
622 /*****************************************************************
623 * WNetGetProviderNameW [MPR.@]
625 DWORD WINAPI
WNetGetProviderNameW( DWORD dwNetType
,
626 LPWSTR lpProvider
, LPDWORD lpBufferSize
)
628 FIXME( "(%ld, %p, %p): stub\n", dwNetType
, lpProvider
, lpBufferSize
);
630 SetLastError(WN_NO_NETWORK
);
631 return WN_NO_NETWORK
;