Release 980329
[wine/multimedia.git] / misc / network.c
blob7af8b4c47c8518267252259ecad37ba07fd649e5
1 /*
2 * Network functions
3 */
5 #include <ctype.h>
6 #include <stdio.h>
8 #include "windows.h"
9 #include "winerror.h"
10 #include "drive.h"
11 #include "wnet.h"
12 #include "debug.h"
14 /**************************************************************************
15 * WNetErrorText [USER.499]
17 int WINAPI WNetErrorText(WORD nError,LPSTR lpszText,WORD cbText)
19 FIXME(wnet, "(%x,%p,%x): stub\n",nError,lpszText,cbText);
20 return FALSE;
23 /**************************************************************************
24 * WNetOpenJob [USER.501]
26 int WINAPI WNetOpenJob(LPSTR szQueue,LPSTR szJobTitle,WORD nCopies,LPWORD pfh)
28 FIXME(wnet, "('%s','%s',%x,%p): stub\n",
29 szQueue,szJobTitle,nCopies,pfh);
30 return WN_NET_ERROR;
33 /**************************************************************************
34 * WNetCloseJob [USER.502]
36 int WINAPI WNetCloseJob(WORD fh,LPWORD pidJob,LPSTR szQueue)
38 FIXME(wnet, "(%x,%p,'%s'): stub\n",fh,pidJob,szQueue);
39 return WN_NET_ERROR;
42 /**************************************************************************
43 * WNetAbortJob [USER.503]
45 int WINAPI WNetAbortJob(LPSTR szQueue,WORD wJobId)
47 FIXME(wnet, "('%s',%x): stub\n",szQueue,wJobId);
48 return WN_NET_ERROR;
51 /**************************************************************************
52 * WNetHoldJob [USER.504]
54 int WINAPI WNetHoldJob(LPSTR szQueue,WORD wJobId)
56 FIXME(wnet, "('%s',%x): stub\n",szQueue,wJobId);
57 return WN_NET_ERROR;
60 /**************************************************************************
61 * WNetReleaseJob [USER.505]
63 int WINAPI WNetReleaseJob(LPSTR szQueue,WORD wJobId)
65 FIXME(wnet, "('%s',%x): stub\n",szQueue,wJobId);
66 return WN_NET_ERROR;
69 /**************************************************************************
70 * WNetCancelJob [USER.506]
72 int WINAPI WNetCancelJob(LPSTR szQueue,WORD wJobId)
74 FIXME(wnet, "('%s',%x): stub\n",szQueue,wJobId);
75 return WN_NET_ERROR;
78 /**************************************************************************
79 * WNetSetJobCopies [USER.507]
81 int WINAPI WNetSetJobCopies(LPSTR szQueue,WORD wJobId,WORD nCopies)
83 FIXME(wnet, "('%s',%x,%x): stub\n",szQueue,wJobId,nCopies);
84 return WN_NET_ERROR;
87 /**************************************************************************
88 * WNetWatchQueue [USER.508]
90 int WINAPI WNetWatchQueue(HWND16 hWnd,LPSTR szLocal,LPSTR szUser,WORD nQueue)
92 FIXME(wnet, "(%04x,'%s','%s',%x): stub\n",hWnd,szLocal,szUser,nQueue);
93 return WN_NET_ERROR;
96 /**************************************************************************
97 * WNetUnwatchQueue [USER.509]
99 int WINAPI WNetUnwatchQueue(LPSTR szQueue)
101 FIXME(wnet, "('%s'): stub\n", szQueue);
102 return WN_NET_ERROR;
105 /**************************************************************************
106 * WNetLockQueueData [USER.510]
108 int WINAPI WNetLockQueueData(LPSTR szQueue,LPSTR szUser,void *lplpQueueStruct)
110 FIXME(wnet, "('%s','%s',%p): stub\n",szQueue,szUser,lplpQueueStruct);
111 return WN_NET_ERROR;
114 /**************************************************************************
115 * WNetUnlockQueueData [USER.511]
117 int WINAPI WNetUnlockQueueData(LPSTR szQueue)
119 FIXME(wnet, "('%s'): stub\n",szQueue);
120 return WN_NET_ERROR;
123 /**************************************************************************
124 * WNetGetConnection [USER.512]
126 int WINAPI WNetGetConnection16(LPCSTR lpLocalName,
127 LPSTR lpRemoteName, UINT16 *cbRemoteName)
129 const char *path;
131 if (lpLocalName[1] == ':')
133 int drive = toupper(lpLocalName[0]) - 'A';
134 switch(GetDriveType16(drive))
136 case DRIVE_CANNOTDETERMINE:
137 case DRIVE_DOESNOTEXIST:
138 return WN_BAD_LOCALNAME;
139 case DRIVE_REMOVABLE:
140 case DRIVE_FIXED:
141 return WN_NOT_CONNECTED;
142 case DRIVE_REMOTE:
143 path = DRIVE_GetLabel(drive);
144 if (strlen(path) + 1 > *cbRemoteName)
146 *cbRemoteName = strlen(path) + 1;
147 return WN_MORE_DATA;
149 strcpy( lpRemoteName, path );
150 *cbRemoteName = strlen(lpRemoteName) + 1;
151 return WN_SUCCESS;
154 return WN_BAD_LOCALNAME;
157 /**************************************************************************
158 * WNetGetCaps [USER.513]
160 int WINAPI WNetGetCaps(WORD capability)
162 switch (capability) {
163 case WNNC_SPEC_VERSION:
165 return 0x30a; /* WfW 3.11(and apparently other 3.1x) */
167 case WNNC_NET_TYPE:
168 /* hi byte = network type,
169 lo byte = network vendor (Netware = 0x03) [15 types] */
170 return WNNC_NET_MultiNet | WNNC_SUBNET_WinWorkgroups;
172 case WNNC_DRIVER_VERSION:
173 /* driver version of vendor */
174 return 0x100; /* WfW 3.11 */
176 case WNNC_USER:
177 /* 1 = WNetGetUser is supported */
178 return 1;
180 case WNNC_CONNECTION:
181 /* returns mask of the supported connection functions */
182 return WNNC_CON_AddConnection|WNNC_CON_CancelConnection
183 |WNNC_CON_GetConnections/*|WNNC_CON_AutoConnect*/
184 |WNNC_CON_BrowseDialog|WNNC_CON_RestoreConnection;
186 case WNNC_PRINTING:
187 /* returns mask of the supported printing functions */
188 return WNNC_PRT_OpenJob|WNNC_PRT_CloseJob|WNNC_PRT_HoldJob
189 |WNNC_PRT_ReleaseJob|WNNC_PRT_CancelJob
190 |WNNC_PRT_SetJobCopies|WNNC_PRT_WatchQueue
191 |WNNC_PRT_UnwatchQueue|WNNC_PRT_LockQueueData
192 |WNNC_PRT_UnlockQueueData|WNNC_PRT_AbortJob
193 |WNNC_PRT_WriteJob;
195 case WNNC_DIALOG:
196 /* returns mask of the supported dialog functions */
197 return WNNC_DLG_DeviceMode|WNNC_DLG_BrowseDialog
198 |WNNC_DLG_ConnectDialog|WNNC_DLG_DisconnectDialog
199 |WNNC_DLG_ViewQueueDialog|WNNC_DLG_PropertyDialog
200 |WNNC_DLG_ConnectionDialog
201 /*|WNNC_DLG_PrinterConnectDialog
202 |WNNC_DLG_SharesDialog|WNNC_DLG_ShareAsDialog*/;
204 case WNNC_ADMIN:
205 /* returns mask of the supported administration functions */
206 /* not sure if long file names is a good idea */
207 return WNNC_ADM_GetDirectoryType|WNNC_ADM_DirectoryNotify
208 |WNNC_ADM_LongNames/*|WNNC_ADM_SetDefaultDrive*/;
210 case WNNC_ERROR:
211 /* returns mask of the supported error functions */
212 return WNNC_ERR_GetError|WNNC_ERR_GetErrorText;
214 case WNNC_PRINTMGREXT:
215 /* returns the Print Manager version in major and
216 minor format if Print Manager functions are available */
217 return 0x30e; /* printman version of WfW 3.11 */
219 case 0xffff:
220 /* Win 3.11 returns HMODULE of network driver here
221 FIXME: what should we return ?
222 logonoff.exe needs it, msmail crashes with wrong value */
223 return 0;
225 default:
226 return 0;
230 /**************************************************************************
231 * WNetDeviceMode [USER.514]
233 int WINAPI WNetDeviceMode(HWND16 hWndOwner)
235 FIXME(wnet, "(%04x): stub\n",hWndOwner);
236 return WN_NO_NETWORK;
239 /**************************************************************************
240 * WNetBrowseDialog [USER.515]
242 int WINAPI WNetBrowseDialog(HWND16 hParent,WORD nType,LPSTR szPath)
244 FIXME(wnet, "(%04x,%x,'%s'): stub\n",hParent,nType,szPath);
245 return WN_NO_NETWORK;
248 /**************************************************************************
249 * WNetGetUser [USER.516]
251 UINT16 WINAPI WNetGetUser(LPSTR lpLocalName, LPSTR lpUserName, DWORD *lpSize)
253 FIXME(wnet, "(%p, %p, %p): stub\n", lpLocalName, lpUserName, lpSize);
254 return WN_NO_NETWORK;
257 /**************************************************************************
258 * WNetAddConnection [USER.517]
260 UINT16 WINAPI WNetAddConnection(LPSTR lpNetPath, LPSTR lpPassWord,
261 LPSTR lpLocalName)
263 FIXME(wnet, "('%s', %p, '%s'): stub\n",
264 lpNetPath,lpPassWord,lpLocalName);
265 return WN_NO_NETWORK;
269 /**************************************************************************
270 * WNetCancelConnection [USER.518]
272 UINT16 WINAPI WNetCancelConnection(LPSTR lpName, BOOL16 bForce)
274 FIXME(wnet, "('%s', %04X): stub\n", lpName, bForce);
275 return WN_NO_NETWORK;
278 /**************************************************************************
279 * WNetGetError [USER.519]
281 int WINAPI WNetGetError(LPWORD nError)
283 FIXME(wnet, "(%p): stub\n",nError);
284 return WN_NO_NETWORK;
287 /**************************************************************************
288 * WNetGetErrorText [USER.520]
290 int WINAPI WNetGetErrorText(WORD nError, LPSTR lpBuffer, LPWORD nBufferSize)
292 FIXME(wnet, "(%x,%p,%p): stub\n",nError,lpBuffer,nBufferSize);
293 return WN_NET_ERROR;
296 /**************************************************************************
297 * WNetRestoreConnection [USER.523]
299 int WINAPI WNetRestoreConnection(HWND16 hwndOwner,LPSTR lpszDevice)
301 FIXME(wnet, "(%04x,'%s'): stub\n",hwndOwner,lpszDevice);
302 return WN_NO_NETWORK;
305 /**************************************************************************
306 * WNetWriteJob [USER.524]
308 int WINAPI WNetWriteJob(HANDLE16 hJob,void *lpData,LPWORD lpcbData)
310 FIXME(wnet, "(%04x,%p,%p): stub\n",hJob,lpData,lpcbData);
311 return WN_NO_NETWORK;
314 /**************************************************************************
315 * WnetConnectDialog [USER.525]
317 UINT16 WINAPI WNetConnectDialog(HWND16 hWndParent, WORD iType)
319 FIXME(wnet, "(%04x, %4X): stub\n", hWndParent, iType);
320 return WN_SUCCESS;
323 /**************************************************************************
324 * WNetDisconnectDialog [USER.526]
326 int WINAPI WNetDisconnectDialog(HWND16 hwndOwner, WORD iType)
328 FIXME(wnet, "(%04x,%x): stub\n",hwndOwner,iType);
329 return WN_NO_NETWORK;
332 /**************************************************************************
333 * WnetConnectionDialog [USER.527]
335 UINT16 WINAPI WNetConnectionDialog(HWND16 hWndParent, WORD iType)
337 FIXME(wnet, "(%04x, %4X): stub\n", hWndParent, iType);
338 return WN_SUCCESS;
341 /**************************************************************************
342 * WNetViewQueueDialog [USER.528]
344 int WINAPI WNetViewQueueDialog(HWND16 hwndOwner,LPSTR lpszQueue)
346 FIXME(wnet, "(%04x,'%s'): stub\n",hwndOwner,lpszQueue);
347 return WN_NO_NETWORK;
350 /**************************************************************************
351 * WNetPropertyDialog [USER.529]
353 int WINAPI WNetPropertyDialog(HWND16 hwndParent,WORD iButton,
354 WORD nPropSel,LPSTR lpszName,WORD nType)
356 FIXME(wnet, "(%04x,%x,%x,'%s',%x): stub\n",
357 hwndParent,iButton,nPropSel,lpszName,nType);
358 return WN_NO_NETWORK;
361 /**************************************************************************
362 * WNetGetDirectoryType [USER.530]
364 int WINAPI WNetGetDirectoryType(LPSTR lpName,void *lpType)
366 FIXME(wnet, "('%s',%p): stub\n",lpName,lpType);
367 return WN_NO_NETWORK;
370 /**************************************************************************
371 * WNetDirectoryNotify [USER.531]
373 int WINAPI WNetDirectoryNotify(HWND16 hwndOwner,void *lpDir,WORD wOper)
375 FIXME(wnet, "(%04x,%p,%x): stub\n",hwndOwner,lpDir,wOper);
376 return WN_NO_NETWORK;
379 /**************************************************************************
380 * WNetGetPropertyText [USER.532]
382 int WINAPI WNetGetPropertyText(HWND16 hwndParent,WORD iButton,WORD nPropSel,
383 LPSTR lpszName,WORD nType)
385 FIXME(wnet, "(%04x,%x,%x,'%s',%x): stub\n",
386 hwndParent,iButton,nPropSel,lpszName,nType);
387 return WN_NO_NETWORK;
390 /**************************************************************************
391 * WNetAddConnection2 [USER.???]
393 UINT16 WINAPI WNetAddConnection2(LPSTR lpNetPath, LPSTR lpPassWord,
394 LPSTR lpLocalName, LPSTR lpUserName)
396 FIXME(wnet, "('%s', %p, '%s', '%s'): stub\n",
397 lpNetPath, lpPassWord, lpLocalName, lpUserName);
398 return WN_NO_NETWORK;
401 /**************************************************************************
402 * WNetCloseEnum [USER.???]
404 UINT16 WINAPI WNetCloseEnum(HANDLE16 hEnum)
406 FIXME(wnet, "(%04x): stub\n", hEnum);
407 return WN_NO_NETWORK;
410 /**************************************************************************
411 * WNetEnumResource [USER.???]
413 UINT16 WINAPI WNetEnumResource(HANDLE16 hEnum, DWORD cRequ,
414 DWORD *lpCount, LPVOID lpBuf)
416 FIXME(wnet, "(%04x, %08lX, %p, %p): stub\n",
417 hEnum, cRequ, lpCount, lpBuf);
418 return WN_NO_NETWORK;
421 /**************************************************************************
422 * WNetOpenEnum [USER.???]
424 UINT16 WINAPI WNetOpenEnum16(DWORD dwScope, DWORD dwType,
425 LPNETRESOURCE16 lpNet, HANDLE16 *lphEnum)
427 FIXME(wnet, "(%08lX, %08lX, %p, %p): stub\n",
428 dwScope, dwType, lpNet, lphEnum);
429 return WN_NO_NETWORK;
432 /**************************************************************************
433 * WNetOpenEnumA [MPR.92]
435 UINT32 WINAPI WNetOpenEnum32A(DWORD dwScope, DWORD dwType,
436 LPNETRESOURCE32A lpNet, HANDLE32 *lphEnum)
438 FIXME(wnet, "(%08lX, %08lX, %p, %p): stub\n",
439 dwScope, dwType, lpNet, lphEnum);
440 return WN_NO_NETWORK;
443 /**************************************************************************
444 * WNetGetConnectionA [MPR.92]
446 DWORD WINAPI
447 WNetGetConnection32A(LPCSTR localname,LPSTR remotename,LPDWORD buflen)
449 UINT16 x;
450 DWORD ret = WNetGetConnection16(localname,remotename,&x);
451 *buflen = x;
452 return ret;
455 DWORD WINAPI
456 WNetGetResourceInformation32A(
457 LPNETRESOURCE32A netres,LPVOID buf,LPDWORD buflen,LPSTR systemstr
459 FIXME(wnet,"(%p,%p,%p,%p): stub!\n",netres,buf,buflen,systemstr);
460 return WN_NO_NETWORK;