2 * USER Windows Network functions
12 #include "wine/winnet16.h"
14 #include "debugtools.h"
17 DEFAULT_DEBUG_CHANNEL(wnet
);
23 /**************************************************************************
24 * WNetOpenJob16 [USER.501]
26 WORD WINAPI
WNetOpenJob16( LPSTR szQueue
, LPSTR szJobTitle
, WORD nCopies
, LPINT16 pfh
)
28 FIXME( "(%s, %s, %d, %p): stub\n",
29 debugstr_a(szQueue
), debugstr_a(szJobTitle
), nCopies
, pfh
);
30 return WN16_NET_ERROR
;
33 /**************************************************************************
34 * WNetCloseJob16 [USER.502]
36 WORD WINAPI
WNetCloseJob16( WORD fh
, LPINT16 pidJob
, LPSTR szQueue
)
38 FIXME( "(%d, %p, %s): stub\n", fh
, pidJob
, debugstr_a(szQueue
) );
39 return WN16_NET_ERROR
;
42 /**************************************************************************
43 * WNetWriteJob16 [USER.524]
45 WORD WINAPI
WNetWriteJob16( HANDLE16 hJob
, LPSTR lpData
, LPINT16 lpcbData
)
47 FIXME( "(%04x, %p, %p): stub\n", hJob
, lpData
, lpcbData
);
48 return WN16_NET_ERROR
;
51 /**************************************************************************
52 * WNetAbortJob16 [USER.503]
54 WORD WINAPI
WNetAbortJob16( LPSTR szQueue
, WORD wJobId
)
56 FIXME( "(%s, %d): stub\n", debugstr_a(szQueue
), wJobId
);
57 return WN16_NET_ERROR
;
60 /**************************************************************************
61 * WNetHoldJob16 [USER.504]
63 WORD WINAPI
WNetHoldJob16( LPSTR szQueue
, WORD wJobId
)
65 FIXME( "(%s, %d): stub\n", debugstr_a(szQueue
), wJobId
);
66 return WN16_NET_ERROR
;
69 /**************************************************************************
70 * WNetReleaseJob16 [USER.505]
72 WORD WINAPI
WNetReleaseJob16( LPSTR szQueue
, WORD wJobId
)
74 FIXME( "(%s, %d): stub\n", debugstr_a(szQueue
), wJobId
);
75 return WN16_NET_ERROR
;
78 /**************************************************************************
79 * WNetCancelJob16 [USER.506]
81 WORD WINAPI
WNetCancelJob16( LPSTR szQueue
, WORD wJobId
)
83 FIXME( "(%s, %d): stub\n", debugstr_a(szQueue
), wJobId
);
84 return WN16_NET_ERROR
;
87 /**************************************************************************
88 * WNetSetJobCopies16 [USER.507]
90 WORD WINAPI
WNetSetJobCopies16( LPSTR szQueue
, WORD wJobId
, WORD nCopies
)
92 FIXME( "(%s, %d, %d): stub\n", debugstr_a(szQueue
), wJobId
, nCopies
);
93 return WN16_NET_ERROR
;
96 /**************************************************************************
97 * WNetWatchQueue16 [USER.508]
99 WORD WINAPI
WNetWatchQueue16( HWND16 hWnd
, LPSTR szLocal
, LPSTR szUser
, WORD nQueue
)
101 FIXME( "(%04x, %s, %s, %d): stub\n",
102 hWnd
, debugstr_a(szLocal
), debugstr_a(szUser
), nQueue
);
103 return WN16_NET_ERROR
;
106 /**************************************************************************
107 * WNetUnwatchQueue16 [USER.509]
109 WORD WINAPI
WNetUnwatchQueue16( LPSTR szQueue
)
111 FIXME( "(%s): stub\n", debugstr_a(szQueue
) );
112 return WN16_NET_ERROR
;
115 /**************************************************************************
116 * WNetLockQueueData16 [USER.510]
118 WORD WINAPI
WNetLockQueueData16( LPSTR szQueue
, LPSTR szUser
,
119 LPQUEUESTRUCT16
*lplpQueueStruct
)
121 FIXME( "(%s, %s, %p): stub\n",
122 debugstr_a(szQueue
), debugstr_a(szUser
), lplpQueueStruct
);
123 return WN16_NET_ERROR
;
126 /**************************************************************************
127 * WNetUnlockQueueData16 [USER.511]
129 WORD WINAPI
WNetUnlockQueueData16( LPSTR szQueue
)
131 FIXME( "(%s): stub\n", debugstr_a(szQueue
) );
132 return WN16_NET_ERROR
;
140 /********************************************************************
141 * WNetAddConnection16 [USER.517] Directs a local device to net
143 * Redirects a local device (either a disk drive or printer port)
144 * to a shared device on a remote server.
146 WORD WINAPI
WNetAddConnection16( LPSTR lpNetPath
, LPSTR lpPassWord
,
149 FIXME( "(%s, %p, %s): stub\n",
150 debugstr_a(lpNetPath
), lpPassWord
, debugstr_a(lpLocalName
) );
151 return WN16_NET_ERROR
;
154 /********************************************************************
155 * WNetCancelConnection16 [USER.518] undirects a local device
157 WORD WINAPI
WNetCancelConnection16( LPSTR lpName
, BOOL16 bForce
)
159 FIXME( "(%s, %04X): stub\n", debugstr_a(lpName
), bForce
);
160 return WN16_NOT_SUPPORTED
;
163 /********************************************************************
164 * WNetGetConnection16 [USER.512] reverse-resolves a local device
166 WORD WINAPI
WNetGetConnection16( LPSTR lpLocalName
,
167 LPSTR lpRemoteName
, UINT16
*cbRemoteName
)
171 TRACE( "local %s\n", lpLocalName
);
172 switch(GetDriveTypeA(lpLocalName
))
175 GetVolumeInformationA( lpLocalName
, label
, sizeof(label
), NULL
, NULL
, NULL
, NULL
, 0 );
176 if (strlen(label
) + 1 > *cbRemoteName
)
178 *cbRemoteName
= strlen(label
) + 1;
179 return WN16_MORE_DATA
;
181 strcpy( lpRemoteName
, label
);
182 *cbRemoteName
= strlen(lpRemoteName
) + 1;
184 case DRIVE_REMOVABLE
:
187 TRACE("file is local\n");
188 return WN16_NOT_CONNECTED
;
190 return WN16_BAD_LOCALNAME
;
194 /**************************************************************************
195 * WNetRestoreConnection16 [USER.523]
197 WORD WINAPI
WNetRestoreConnection16( HWND16 hwndOwner
, LPSTR lpszDevice
)
199 FIXME( "(%04x, %s): stub\n", hwndOwner
, debugstr_a(lpszDevice
) );
200 return WN16_NOT_SUPPORTED
;
208 /**************************************************************************
209 * WNetGetCaps16 [USER.513]
211 WORD WINAPI
WNetGetCaps16( WORD capability
)
215 case WNNC16_SPEC_VERSION
:
216 return 0x30a; /* WfW 3.11 (and apparently other 3.1x) */
218 case WNNC16_NET_TYPE
:
219 /* hi byte = network type,
220 lo byte = network vendor (Netware = 0x03) [15 types] */
221 return WNNC16_NET_MultiNet
| WNNC16_SUBNET_WinWorkgroups
;
223 case WNNC16_DRIVER_VERSION
:
224 /* driver version of vendor */
225 return 0x100; /* WfW 3.11 */
228 /* 1 = WNetGetUser is supported */
231 case WNNC16_CONNECTION
:
232 /* returns mask of the supported connection functions */
233 return WNNC16_CON_AddConnection
| WNNC16_CON_CancelConnection
234 | WNNC16_CON_GetConnections
/* | WNNC16_CON_AutoConnect */
235 | WNNC16_CON_BrowseDialog
| WNNC16_CON_RestoreConnection
;
237 case WNNC16_PRINTING
:
238 /* returns mask of the supported printing functions */
239 return WNNC16_PRT_OpenJob
| WNNC16_PRT_CloseJob
| WNNC16_PRT_HoldJob
240 | WNNC16_PRT_ReleaseJob
| WNNC16_PRT_CancelJob
241 | WNNC16_PRT_SetJobCopies
| WNNC16_PRT_WatchQueue
242 | WNNC16_PRT_UnwatchQueue
| WNNC16_PRT_LockQueueData
243 | WNNC16_PRT_UnlockQueueData
| WNNC16_PRT_AbortJob
244 | WNNC16_PRT_WriteJob
;
247 /* returns mask of the supported dialog functions */
248 return WNNC16_DLG_DeviceMode
| WNNC16_DLG_BrowseDialog
249 | WNNC16_DLG_ConnectDialog
| WNNC16_DLG_DisconnectDialog
250 | WNNC16_DLG_ViewQueueDialog
| WNNC16_DLG_PropertyDialog
251 | WNNC16_DLG_ConnectionDialog
252 /* | WNNC16_DLG_PrinterConnectDialog
253 | WNNC16_DLG_SharesDialog | WNNC16_DLG_ShareAsDialog */;
256 /* returns mask of the supported administration functions */
257 /* not sure if long file names is a good idea */
258 return WNNC16_ADM_GetDirectoryType
259 /* | WNNC16_ADM_DirectoryNotify */ /*not yet supported*/
260 | WNNC16_ADM_LongNames
/* | WNNC16_ADM_SetDefaultDrive */;
263 /* returns mask of the supported error functions */
264 return WNNC16_ERR_GetError
| WNNC16_ERR_GetErrorText
;
266 case WNNC16_PRINTMGREXT
:
267 /* returns the Print Manager version in major and
268 minor format if Print Manager functions are available */
269 return 0x30e; /* printman version of WfW 3.11 */
272 /* Win 3.11 returns HMODULE of network driver here
273 FIXME: what should we return ?
274 logonoff.exe needs it, msmail crashes with wrong value */
287 /**************************************************************************
288 * WNetGetUser16 [USER.516]
290 WORD WINAPI
WNetGetUser16( LPCSTR lpName
, LPSTR szUser
, LPINT16 nBufferSize
)
292 FIXME( "(%p, %p, %p): stub\n", lpName
, szUser
, nBufferSize
);
293 return WN16_NOT_SUPPORTED
;
301 /**************************************************************************
302 * WNetDeviceMode16 [USER.514]
304 WORD WINAPI
WNetDeviceMode16( HWND16 hWndOwner
)
306 FIXME( "(%04x): stub\n", hWndOwner
);
307 return WN16_NOT_SUPPORTED
;
310 /**************************************************************************
311 * WNetBrowseDialog16 [USER.515]
313 WORD WINAPI
WNetBrowseDialog16( HWND16 hParent
, WORD nType
, LPSTR szPath
)
315 FIXME( "(%04x, %x, %s): stub\n", hParent
, nType
, szPath
);
316 return WN16_NOT_SUPPORTED
;
319 /********************************************************************
320 * WNetConnectDialog [USER.525]
322 WORD WINAPI
WNetConnectDialog( HWND16 hWndParent
, WORD iType
)
324 FIXME( "(%04x, %x): stub\n", hWndParent
, iType
);
328 /**************************************************************************
329 * WNetDisconnectDialog16 [USER.526]
331 WORD WINAPI
WNetDisconnectDialog16( HWND16 hwndOwner
, WORD iType
)
333 FIXME( "(%04x, %x): stub\n", hwndOwner
, iType
);
334 return WN16_NOT_SUPPORTED
;
337 /**************************************************************************
338 * WNetConnectionDialog16 [USER.527]
340 WORD WINAPI
WNetConnectionDialog16( HWND16 hWndParent
, WORD iType
)
342 FIXME( "(%04x, %x): stub\n", hWndParent
, iType
);
346 /**************************************************************************
347 * WNetViewQueueDialog16 [USER.528]
349 WORD WINAPI
WNetViewQueueDialog16( HWND16 hwndOwner
, LPSTR lpszQueue
)
351 FIXME(" (%04x, %s): stub\n", hwndOwner
, debugstr_a(lpszQueue
) );
352 return WN16_NOT_SUPPORTED
;
355 /**************************************************************************
356 * WNetPropertyDialog16 [USER.529]
358 WORD WINAPI
WNetPropertyDialog16( HWND16 hwndParent
, WORD iButton
,
359 WORD nPropSel
, LPSTR lpszName
, WORD nType
)
361 FIXME( "(%04x, %x, %x, %s, %x ): stub\n",
362 hwndParent
, iButton
, nPropSel
, debugstr_a(lpszName
), nType
);
363 return WN16_NOT_SUPPORTED
;
366 /**************************************************************************
367 * WNetGetPropertyText16 [USER.532]
369 WORD WINAPI
WNetGetPropertyText16( WORD iButton
, WORD nPropSel
, LPSTR lpszName
,
370 LPSTR lpszButtonName
, WORD cbButtonName
, WORD nType
)
372 FIXME( "(%04x, %04x, %s, %s, %04x): stub\n",
373 iButton
, nPropSel
, debugstr_a(lpszName
), debugstr_a(lpszButtonName
), nType
);
374 return WN16_NOT_SUPPORTED
;
382 /*********************************************************************
383 * WNetGetDirectoryType16 [USER.530] Decides whether resource is local
386 * on success, puts one of the following in *lpType:
387 * - WNDT_NETWORK on a network
390 WORD WINAPI
WNetGetDirectoryType16( LPSTR lpName
, LPINT16 lpType
)
392 UINT type
= GetDriveTypeA(lpName
);
393 if ( type
== DRIVE_NO_ROOT_DIR
)
394 type
= GetDriveTypeA(NULL
);
396 *lpType
= (type
== DRIVE_REMOTE
)? WNDT_NETWORK
: WNDT_NORMAL
;
398 TRACE( "%s is %s\n", debugstr_a(lpName
),
399 (*lpType
== WNDT_NETWORK
)? "WNDT_NETWORK" : "WNDT_NORMAL" );
403 /**************************************************************************
404 * WNetDirectoryNotify16 [USER.531]
406 WORD WINAPI
WNetDirectoryNotify16( HWND16 hwndOwner
, LPSTR lpDir
, WORD wOper
)
408 FIXME( "(%04x, %s, %s): stub\n", hwndOwner
, debugstr_a(lpDir
),
409 (wOper
== WNDN_MKDIR
)? "WNDN_MKDIR" :
410 (wOper
== WNDN_MVDIR
)? "WNDN_MVDIR" :
411 (wOper
== WNDN_RMDIR
)? "WNDN_RMDIR" : "unknown" );
412 return WN16_NOT_SUPPORTED
;
420 /**************************************************************************
421 * WNetGetError16 [USER.519]
423 WORD WINAPI
WNetGetError16( LPINT16 nError
)
425 FIXME( "(%p): stub\n", nError
);
426 return WN16_NOT_SUPPORTED
;
429 /**************************************************************************
430 * WNetGetErrorText16 [USER.520]
432 WORD WINAPI
WNetGetErrorText16( WORD nError
, LPSTR lpBuffer
, LPINT16 nBufferSize
)
434 FIXME( "(%x, %p, %p): stub\n", nError
, lpBuffer
, nBufferSize
);
435 return WN16_NET_ERROR
;
438 /**************************************************************************
439 * WNetErrorText16 [USER.499]
441 WORD WINAPI
WNetErrorText16( WORD nError
, LPSTR lpszText
, WORD cbText
)
443 FIXME("(%x, %p, %x): stub\n", nError
, lpszText
, cbText
);