Release 980315
[wine/multimedia.git] / misc / network.c
blob601ca07e8afab01b2371f9e0e77d565d19c8f324
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"
13 /**************************************************************************
14 * WNetErrorText [USER.499]
16 int WINAPI WNetErrorText(WORD nError,LPSTR lpszText,WORD cbText)
18 printf("EMPTY STUB !!! WNetErrorText(%x,%p,%x)\n",
19 nError,lpszText,cbText);
20 return FALSE;
23 /**************************************************************************
24 * WNetOpenJob [USER.501]
26 int WINAPI WNetOpenJob(LPSTR szQueue,LPSTR szJobTitle,WORD nCopies,LPWORD pfh)
28 printf("EMPTY STUB !!! WNetOpenJob('%s','%s',%x,%p)\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 printf("EMPTY STUB !!! WNetCloseJob(%x,%p,'%s')\n",
39 fh,pidJob,szQueue);
40 return WN_NET_ERROR;
43 /**************************************************************************
44 * WNetAbortJob [USER.503]
46 int WINAPI WNetAbortJob(LPSTR szQueue,WORD wJobId)
48 printf("EMPTY STUB !!! WNetAbortJob('%s',%x)\n",
49 szQueue,wJobId);
50 return WN_NET_ERROR;
53 /**************************************************************************
54 * WNetHoldJob [USER.504]
56 int WINAPI WNetHoldJob(LPSTR szQueue,WORD wJobId)
58 printf("EMPTY STUB !!! WNetHoldJob('%s',%x)\n",
59 szQueue,wJobId);
60 return WN_NET_ERROR;
63 /**************************************************************************
64 * WNetReleaseJob [USER.505]
66 int WINAPI WNetReleaseJob(LPSTR szQueue,WORD wJobId)
68 printf("EMPTY STUB !!! WNetReleaseJob('%s',%x)\n",
69 szQueue,wJobId);
70 return WN_NET_ERROR;
73 /**************************************************************************
74 * WNetCancelJob [USER.506]
76 int WINAPI WNetCancelJob(LPSTR szQueue,WORD wJobId)
78 printf("EMPTY STUB !!! WNetCancelJob('%s',%x)\n",
79 szQueue,wJobId);
80 return WN_NET_ERROR;
83 /**************************************************************************
84 * WNetSetJobCopies [USER.507]
86 int WINAPI WNetSetJobCopies(LPSTR szQueue,WORD wJobId,WORD nCopies)
88 printf("EMPTY STUB !!! WNetSetJobCopies('%s',%x,%x)\n",
89 szQueue,wJobId,nCopies);
90 return WN_NET_ERROR;
93 /**************************************************************************
94 * WNetWatchQueue [USER.508]
96 int WINAPI WNetWatchQueue(HWND16 hWnd,LPSTR szLocal,LPSTR szUser,WORD nQueue)
98 printf("EMPTY STUB !!! WNetWatchQueue(%04x,'%s','%s',%x)\n",
99 hWnd,szLocal,szUser,nQueue);
100 return WN_NET_ERROR;
103 /**************************************************************************
104 * WNetUnwatchQueue [USER.509]
106 int WINAPI WNetUnwatchQueue(LPSTR szQueue)
108 printf("EMPTY STUB !!! WNetUnwatchQueue('%s')\n", szQueue);
109 return WN_NET_ERROR;
112 /**************************************************************************
113 * WNetLockQueueData [USER.510]
115 int WINAPI WNetLockQueueData(LPSTR szQueue,LPSTR szUser,void *lplpQueueStruct)
117 printf("EMPTY STUB !!! WNetLockQueueData('%s','%s',%p)\n",
118 szQueue,szUser,lplpQueueStruct);
119 return WN_NET_ERROR;
122 /**************************************************************************
123 * WNetUnlockQueueData [USER.511]
125 int WINAPI WNetUnlockQueueData(LPSTR szQueue)
127 printf("EMPTY STUB !!! WNetUnlockQueueData('%s')\n",szQueue);
128 return WN_NET_ERROR;
131 /**************************************************************************
132 * WNetGetConnection [USER.512]
134 int WINAPI WNetGetConnection16(LPCSTR lpLocalName,
135 LPSTR lpRemoteName, UINT16 *cbRemoteName)
137 const char *path;
139 if (lpLocalName[1] == ':')
141 int drive = toupper(lpLocalName[0]) - 'A';
142 switch(GetDriveType16(drive))
144 case DRIVE_CANNOTDETERMINE:
145 case DRIVE_DOESNOTEXIST:
146 return WN_BAD_LOCALNAME;
147 case DRIVE_REMOVABLE:
148 case DRIVE_FIXED:
149 return WN_NOT_CONNECTED;
150 case DRIVE_REMOTE:
151 path = DRIVE_GetLabel(drive);
152 if (strlen(path) + 1 > *cbRemoteName)
154 *cbRemoteName = strlen(path) + 1;
155 return WN_MORE_DATA;
157 strcpy( lpRemoteName, path );
158 *cbRemoteName = strlen(lpRemoteName) + 1;
159 return WN_SUCCESS;
162 return WN_BAD_LOCALNAME;
165 /**************************************************************************
166 * WNetGetCaps [USER.513]
168 int WINAPI WNetGetCaps(WORD capability)
170 switch (capability) {
171 case WNNC_SPEC_VERSION:
173 return 0x30a; /* WfW 3.11 (and apparently other 3.1x) */
175 case WNNC_NET_TYPE:
176 /* hi byte = network type, lo byte = network vendor (Netware = 0x03) [15 types] */
177 return WNNC_NET_MultiNet | WNNC_SUBNET_WinWorkgroups;
179 case WNNC_DRIVER_VERSION:
180 /* driver version of vendor */
181 return 0x100; /* WfW 3.11 */
183 case WNNC_USER:
184 /* 1 = WNetGetUser is supported */
185 return 1;
187 case WNNC_CONNECTION:
188 /* returns mask of the supported connection functions */
189 return WNNC_CON_AddConnection|WNNC_CON_CancelConnection
190 |WNNC_CON_GetConnections/*|WNNC_CON_AutoConnect*/
191 |WNNC_CON_BrowseDialog|WNNC_CON_RestoreConnection;
193 case WNNC_PRINTING:
194 /* returns mask of the supported printing functions */
195 return WNNC_PRT_OpenJob|WNNC_PRT_CloseJob|WNNC_PRT_HoldJob
196 |WNNC_PRT_ReleaseJob|WNNC_PRT_CancelJob
197 |WNNC_PRT_SetJobCopies|WNNC_PRT_WatchQueue
198 |WNNC_PRT_UnwatchQueue|WNNC_PRT_LockQueueData
199 |WNNC_PRT_UnlockQueueData|WNNC_PRT_AbortJob
200 |WNNC_PRT_WriteJob;
202 case WNNC_DIALOG:
203 /* returns mask of the supported dialog functions */
204 return WNNC_DLG_DeviceMode|WNNC_DLG_BrowseDialog
205 |WNNC_DLG_ConnectDialog|WNNC_DLG_DisconnectDialog
206 |WNNC_DLG_ViewQueueDialog|WNNC_DLG_PropertyDialog
207 |WNNC_DLG_ConnectionDialog
208 /*|WNNC_DLG_PrinterConnectDialog
209 |WNNC_DLG_SharesDialog|WNNC_DLG_ShareAsDialog*/;
211 case WNNC_ADMIN:
212 /* returns mask of the supported administration functions */
213 /* not sure if long file names is a good idea */
214 return WNNC_ADM_GetDirectoryType|WNNC_ADM_DirectoryNotify
215 |WNNC_ADM_LongNames/*|WNNC_ADM_SetDefaultDrive*/;
217 case WNNC_ERROR:
218 /* returns mask of the supported error functions */
219 return WNNC_ERR_GetError|WNNC_ERR_GetErrorText;
221 case WNNC_PRINTMGREXT:
222 /* returns the Print Manager version in major and minor format if Print Manager functions are available */
223 return 0x30e; /* printman version of WfW 3.11 */
225 case 0xffff:
226 /* Win 3.11 returns HMODULE of network driver here
227 FIXME: what should we return ?
228 logonoff.exe needs it, msmail crashes with wrong value */
229 return 0;
231 default:
232 return 0;
236 /**************************************************************************
237 * WNetDeviceMode [USER.514]
239 int WINAPI WNetDeviceMode(HWND16 hWndOwner)
241 printf("EMPTY STUB !!! WNetDeviceMode(%04x)\n",hWndOwner);
242 return WN_NO_NETWORK;
245 /**************************************************************************
246 * WNetBrowseDialog [USER.515]
248 int WINAPI WNetBrowseDialog(HWND16 hParent,WORD nType,LPSTR szPath)
250 printf("EMPTY STUB !!! WNetBrowseDialog(%04x,%x,'%s')\n",
251 hParent,nType,szPath);
252 return WN_NO_NETWORK;
255 /**************************************************************************
256 * WNetGetUser [USER.516]
258 UINT16 WINAPI WNetGetUser(LPSTR lpLocalName, LPSTR lpUserName, DWORD *lpSize)
260 printf("EMPTY STUB !!! WNetGetUser(%p, %p, %p);\n",
261 lpLocalName, lpUserName, lpSize);
262 return WN_NO_NETWORK;
265 /**************************************************************************
266 * WNetAddConnection [USER.517]
268 UINT16 WINAPI WNetAddConnection(LPSTR lpNetPath, LPSTR lpPassWord,
269 LPSTR lpLocalName)
271 printf("EMPTY STUB !!! WNetAddConnection('%s', %p, '%s');\n",
272 lpNetPath, lpPassWord, lpLocalName);
273 return WN_NO_NETWORK;
277 /**************************************************************************
278 * WNetCancelConnection [USER.518]
280 UINT16 WINAPI WNetCancelConnection(LPSTR lpName, BOOL16 bForce)
282 printf("EMPTY STUB !!! WNetCancelConnection('%s', %04X);\n",
283 lpName, bForce);
284 return WN_NO_NETWORK;
287 /**************************************************************************
288 * WNetGetError [USER.519]
290 int WINAPI WNetGetError(LPWORD nError)
292 printf("EMPTY STUB !!! WNetGetError(%p)\n",nError);
293 return WN_NO_NETWORK;
296 /**************************************************************************
297 * WNetGetErrorText [USER.520]
299 int WINAPI WNetGetErrorText(WORD nError, LPSTR lpBuffer, LPWORD nBufferSize)
301 printf("EMPTY STUB !!! WNetGetErrorText(%x,%p,%p)\n",
302 nError,lpBuffer,nBufferSize);
303 return WN_NET_ERROR;
306 /**************************************************************************
307 * WNetRestoreConnection [USER.523]
309 int WINAPI WNetRestoreConnection(HWND16 hwndOwner,LPSTR lpszDevice)
311 printf("EMPTY STUB !!! WNetRestoreConnection(%04x,'%s')\n",
312 hwndOwner,lpszDevice);
313 return WN_NO_NETWORK;
316 /**************************************************************************
317 * WNetWriteJob [USER.524]
319 int WINAPI WNetWriteJob(HANDLE16 hJob,void *lpData,LPWORD lpcbData)
321 printf("EMPTY STUB !!! WNetWriteJob(%04x,%p,%p)\n",
322 hJob,lpData,lpcbData);
323 return WN_NO_NETWORK;
326 /**************************************************************************
327 * WnetConnectDialog [USER.525]
329 UINT16 WINAPI WNetConnectDialog(HWND16 hWndParent, WORD iType)
331 printf("EMPTY STUB !!! WNetConnectDialog(%04x, %4X)\n", hWndParent, iType);
332 return WN_SUCCESS;
335 /**************************************************************************
336 * WNetDisconnectDialog [USER.526]
338 int WINAPI WNetDisconnectDialog(HWND16 hwndOwner, WORD iType)
340 printf("EMPTY STUB !!! WNetDisconnectDialog(%04x,%x)\n",
341 hwndOwner,iType);
342 return WN_NO_NETWORK;
345 /**************************************************************************
346 * WnetConnectionDialog [USER.527]
348 UINT16 WINAPI WNetConnectionDialog(HWND16 hWndParent, WORD iType)
350 printf("EMPTY STUB !!! WNetConnectionDialog(%04x, %4X)\n",
351 hWndParent, iType);
352 return WN_SUCCESS;
355 /**************************************************************************
356 * WNetViewQueueDialog [USER.528]
358 int WINAPI WNetViewQueueDialog(HWND16 hwndOwner,LPSTR lpszQueue)
360 printf("EMPTY STUB !!! WNetViewQueueDialog(%04x,'%s')\n",
361 hwndOwner,lpszQueue);
362 return WN_NO_NETWORK;
365 /**************************************************************************
366 * WNetPropertyDialog [USER.529]
368 int WINAPI WNetPropertyDialog(HWND16 hwndParent,WORD iButton,
369 WORD nPropSel,LPSTR lpszName,WORD nType)
371 printf("EMPTY STUB !!! WNetPropertyDialog(%04x,%x,%x,'%s',%x)\n",
372 hwndParent,iButton,nPropSel,lpszName,nType);
373 return WN_NO_NETWORK;
376 /**************************************************************************
377 * WNetGetDirectoryType [USER.530]
379 int WINAPI WNetGetDirectoryType(LPSTR lpName,void *lpType)
381 printf("EMPTY STUB !!! WNetGetDirectoryType('%s',%p)\n",
382 lpName,lpType);
383 return WN_NO_NETWORK;
386 /**************************************************************************
387 * WNetDirectoryNotify [USER.531]
389 int WINAPI WNetDirectoryNotify(HWND16 hwndOwner,void *lpDir,WORD wOper)
391 printf("EMPTY STUB !!! WNetDirectoryNotify(%04x,%p,%x)\n",
392 hwndOwner,lpDir,wOper);
393 return WN_NO_NETWORK;
396 /**************************************************************************
397 * WNetGetPropertyText [USER.532]
399 int WINAPI WNetGetPropertyText(HWND16 hwndParent,WORD iButton,WORD nPropSel,
400 LPSTR lpszName,WORD nType)
402 printf("EMPTY STUB !!! WNetGetPropertyText(%04x,%x,%x,'%s',%x)\n",
403 hwndParent,iButton,nPropSel,lpszName,nType);
404 return WN_NO_NETWORK;
407 /**************************************************************************
408 * WNetAddConnection2 [USER.???]
410 UINT16 WINAPI WNetAddConnection2(LPSTR lpNetPath, LPSTR lpPassWord,
411 LPSTR lpLocalName, LPSTR lpUserName)
413 printf("EMPTY STUB !!! WNetAddConnection2('%s', %p, '%s', '%s');\n",
414 lpNetPath, lpPassWord, lpLocalName, lpUserName);
415 return WN_NO_NETWORK;
418 /**************************************************************************
419 * WNetCloseEnum [USER.???]
421 UINT16 WINAPI WNetCloseEnum(HANDLE16 hEnum)
423 printf("EMPTY STUB !!! WNetCloseEnum(%04x);\n", hEnum);
424 return WN_NO_NETWORK;
427 /**************************************************************************
428 * WNetEnumResource [USER.???]
430 UINT16 WINAPI WNetEnumResource(HANDLE16 hEnum, DWORD cRequ,
431 DWORD *lpCount, LPVOID lpBuf)
433 printf("EMPTY STUB !!! WNetEnumResource(%04x, %08lX, %p, %p);\n",
434 hEnum, cRequ, lpCount, lpBuf);
435 return WN_NO_NETWORK;
438 /**************************************************************************
439 * WNetOpenEnum [USER.???]
441 UINT16 WINAPI WNetOpenEnum16(DWORD dwScope, DWORD dwType,
442 LPNETRESOURCE16 lpNet, HANDLE16 *lphEnum)
444 printf("EMPTY STUB !!! WNetOpenEnum(%08lX, %08lX, %p, %p);\n",
445 dwScope, dwType, lpNet, lphEnum);
446 return WN_NO_NETWORK;
449 /**************************************************************************
450 * WNetOpenEnumA [MPR.92]
452 UINT32 WINAPI WNetOpenEnum32A(DWORD dwScope, DWORD dwType,
453 LPNETRESOURCE32A lpNet, HANDLE32 *lphEnum)
455 printf("EMPTY STUB !!! WNetOpenEnumA(%08lX, %08lX, %p, %p);\n",
456 dwScope, dwType, lpNet, lphEnum);
457 return WN_NO_NETWORK;
460 /**************************************************************************
461 * WNetGetConnectionA [MPR.92]
463 DWORD WINAPI
464 WNetGetConnection32A(LPCSTR localname,LPSTR remotename,LPDWORD buflen)
466 UINT16 x;
467 DWORD ret = WNetGetConnection16(localname,remotename,&x);
468 *buflen = x;
469 return ret;
472 DWORD WINAPI
473 WNetGetResourceInformation32A(
474 LPNETRESOURCE32A netres,LPVOID buf,LPDWORD buflen,LPSTR systemstr
476 fprintf(stderr,"WNetGetResourceInformationA(%p,%p,%p,%p),stub!\n",
477 netres,buf,buflen,systemstr
479 return WN_NO_NETWORK;