4 * This is the MPR.DLL stuff from Win32, as well as the USER
5 * stuff by the same names in Win 3.x.
10 #include <sys/types.h>
22 /********************************************************************
23 * WNetAddConnection16 [USER.517] Directs a local device to net
25 * Redirects a local device (either a disk drive or printer port)
26 * to a shared device on a remote server.
28 UINT16 WINAPI
WNetAddConnection16(LPCSTR lpNetPath
, LPCSTR lpPassWord
,
31 return WNetAddConnection32A(lpNetPath
, lpPassWord
, lpLocalName
);
34 /*********************************************************************
35 * WNetAddConnection32 [MPR.50]
38 UINT32 WINAPI
WNetAddConnection32A(LPCSTR NetPath
, LPCSTR PassWord
,
41 FIXME(wnet
, "('%s', %p, '%s'): stub\n",
42 NetPath
, PassWord
, LocalName
);
48 UINT32 WINAPI
WNetAddConnection32W(LPCWSTR NetPath
,
52 FIXME(wnet
, " stub!\n");
53 SetLastError(WN_NO_NETWORK
);
57 /* ****************************************************************
58 * WNetAddConnection2_32A [MPR.46]
62 WNetAddConnection2_32A(LPNETRESOURCE32A netresource
, /* [in] */
63 LPCSTR password
, /* [in] */
64 LPCSTR username
, /* [in] */
65 DWORD flags
/* [in] */ )
67 FIXME(wnet
, "(%p,%s,%s,0x%08lx), stub!\n", netresource
,
68 password
, username
, (unsigned long) flags
);
69 SetLastError(WN_NO_NETWORK
);
73 /* ****************************************************************
74 * WNetAddConnection2W [MPR.47]
78 WNetAddConnection2_32W(LPNETRESOURCE32W netresource
, /* [in] */
79 LPCWSTR password
, /* [in] */
80 LPCWSTR username
, /* [in] */
81 DWORD flags
/* [in] */ )
83 FIXME(wnet
, ", stub!\n");
84 SetLastError(WN_NO_NETWORK
);
88 /* ****************************************************************
89 * WNetAddConnection3_32A [MPR.48]
92 UINT32 WINAPI
WNetAddConnection3_32A(HWND32 owner
,
93 LPNETRESOURCE32A netresource
,
98 TRACE(wnet
, "owner = 0x%x\n", owner
);
99 return WNetAddConnection2_32A(netresource
,
100 password
, username
, flags
);
103 /* ****************************************************************
104 * WNetAddConnection3W [MPR.49]
107 UINT32 WINAPI
WNetAddConnection3_32W(HWND32 owner
,
108 LPNETRESOURCE32W netresource
,
113 TRACE(wnet
,"owner = 0x%x\n", owner
);
114 return WNetAddConnection2_32W(netresource
, username
, password
,
118 /*******************************************************************
119 * WNetConnectionDialog1_32A [MPR.59]
121 UINT32 WINAPI
WNetConnectionDialog1_32A (LPCONNECTDLGSTRUCT32A lpConnDlgStruct
)
122 { FIXME(wnet
,"%p stub\n", lpConnDlgStruct
);
123 SetLastError(WN_NO_NETWORK
);
124 return ERROR_NO_NETWORK
;
126 /*******************************************************************
127 * WNetConnectionDialog1_32W [MPR.60]
129 UINT32 WINAPI
WNetConnectionDialog1_32W (LPCONNECTDLGSTRUCT32W lpConnDlgStruct
)
130 { FIXME(wnet
,"%p stub\n", lpConnDlgStruct
);
131 SetLastError(WN_NO_NETWORK
);
132 return ERROR_NO_NETWORK
;
135 /*******************************************************************
136 * WNetConnectionDialog_32 [MPR.61]
138 UINT32 WINAPI
WNetConnectionDialog_32(HWND32 owner
, DWORD flags
)
139 { FIXME(wnet
,"owner = 0x%x, flags=0x%lx stub\n", owner
,flags
);
140 SetLastError(WN_NO_NETWORK
);
141 return ERROR_NO_NETWORK
;
144 /********************************************************************
145 * WNetCancelConnection [USER.518] undirects a local device
147 UINT16 WINAPI
WNetCancelConnection(LPCSTR lpName
, BOOL16 bForce
)
149 FIXME(wnet
, "('%s', %04X): stub\n", lpName
, bForce
);
150 return WN_NO_NETWORK
;
154 /**************************************************************************
155 * WNetErrorText16 [USER.499]
157 int WINAPI
WNetErrorText(WORD nError
,LPSTR lpszText
,WORD cbText
)
159 FIXME(wnet
, "(%x,%p,%x): stub\n",nError
,lpszText
,cbText
);
163 /**************************************************************************
164 * WNetOpenJob16 [USER.501]
166 int WINAPI
WNetOpenJob(LPSTR szQueue
,LPSTR szJobTitle
,WORD nCopies
,LPWORD pfh
)
168 FIXME(wnet
, "('%s','%s',%x,%p): stub\n",
169 szQueue
,szJobTitle
,nCopies
,pfh
);
173 /**************************************************************************
174 * WNetCloseJob [USER.502]
176 int WINAPI
WNetCloseJob(WORD fh
,LPWORD pidJob
,LPSTR szQueue
)
178 FIXME(wnet
, "(%x,%p,'%s'): stub\n",fh
,pidJob
,szQueue
);
182 /**************************************************************************
183 * WNetAbortJob [USER.503]
185 int WINAPI
WNetAbortJob(LPSTR szQueue
,WORD wJobId
)
187 FIXME(wnet
, "('%s',%x): stub\n",szQueue
,wJobId
);
191 /**************************************************************************
192 * WNetHoldJob [USER.504]
194 int WINAPI
WNetHoldJob(LPSTR szQueue
,WORD wJobId
)
196 FIXME(wnet
, "('%s',%x): stub\n",szQueue
,wJobId
);
200 /**************************************************************************
201 * WNetReleaseJob [USER.505]
203 int WINAPI
WNetReleaseJob(LPSTR szQueue
,WORD wJobId
)
205 FIXME(wnet
, "('%s',%x): stub\n",szQueue
,wJobId
);
209 /**************************************************************************
210 * WNetCancelJob [USER.506]
212 int WINAPI
WNetCancelJob(LPSTR szQueue
,WORD wJobId
)
214 FIXME(wnet
, "('%s',%x): stub\n",szQueue
,wJobId
);
218 /**************************************************************************
219 * WNetSetJobCopies [USER.507]
221 int WINAPI
WNetSetJobCopies(LPSTR szQueue
,WORD wJobId
,WORD nCopies
)
223 FIXME(wnet
, "('%s',%x,%x): stub\n",szQueue
,wJobId
,nCopies
);
227 /**************************************************************************
228 * WNetWatchQueue [USER.508]
230 int WINAPI
WNetWatchQueue(HWND16 hWnd
,LPSTR szLocal
,LPSTR szUser
,WORD nQueue
)
232 FIXME(wnet
, "(%04x,'%s','%s',%x): stub\n",hWnd
,szLocal
,szUser
,nQueue
);
236 /**************************************************************************
237 * WNetUnwatchQueue [USER.509]
239 int WINAPI
WNetUnwatchQueue(LPSTR szQueue
)
241 FIXME(wnet
, "('%s'): stub\n", szQueue
);
245 /**************************************************************************
246 * WNetLockQueueData [USER.510]
248 int WINAPI
WNetLockQueueData(LPSTR szQueue
,LPSTR szUser
,void *lplpQueueStruct
)
250 FIXME(wnet
, "('%s','%s',%p): stub\n",szQueue
,szUser
,lplpQueueStruct
);
254 /**************************************************************************
255 * WNetUnlockQueueData [USER.511]
257 int WINAPI
WNetUnlockQueueData(LPSTR szQueue
)
259 FIXME(wnet
, "('%s'): stub\n",szQueue
);
264 /********************************************************************
265 * WNetGetConnection16 [USER.512] reverse-resolves a local device
268 * - WN_BAD_LOCALNAME lpLocalName makes no sense
269 * - WN_NOT_CONNECTED drive is a local drive
270 * - WN_MORE_DATA buffer isn't big enough
271 * - WN_SUCCESS success (net path in buffer)
273 int WINAPI
WNetGetConnection16(LPCSTR lpLocalName
,
274 LPSTR lpRemoteName
, UINT16
*cbRemoteName
)
278 if (lpLocalName
[1] == ':')
280 int drive
= toupper(lpLocalName
[0]) - 'A';
281 switch(DRIVE_GetType(drive
))
284 return WN_BAD_LOCALNAME
;
286 path
= DRIVE_GetLabel(drive
);
287 if (strlen(path
) + 1 > *cbRemoteName
)
289 *cbRemoteName
= strlen(path
) + 1;
292 strcpy( lpRemoteName
, path
);
293 *cbRemoteName
= strlen(lpRemoteName
) + 1;
296 return WN_BAD_LOCALNAME
;
299 return WN_BAD_LOCALNAME
;
302 /**************************************************************************
303 * WNetGetConnectionA [MPR.70]
306 WNetGetConnection32A(LPCSTR localname
,LPSTR remotename
,LPDWORD buflen
)
309 DWORD ret
= WNetGetConnection16(localname
,remotename
,&x
);
314 /**************************************************************************
315 * WNetGetConnectionW [MPR.72]
318 WNetGetConnection32W(LPCWSTR localnameW
,LPWSTR remotenameW
,LPDWORD buflen
)
322 LPSTR lnA
= HEAP_strdupWtoA(GetProcessHeap(),0,localnameW
);
323 DWORD ret
= WNetGetConnection16(lnA
,buf
,&x
);
325 lstrcpyAtoW(remotenameW
,buf
);
326 *buflen
=lstrlen32W(remotenameW
);
327 HeapFree(GetProcessHeap(),0,lnA
);
331 /**************************************************************************
332 * WNetGetCaps [USER.513]
334 int WINAPI
WNetGetCaps(WORD capability
)
336 switch (capability
) {
337 case WNNC_SPEC_VERSION
:
339 return 0x30a; /* WfW 3.11(and apparently other 3.1x) */
342 /* hi byte = network type,
343 lo byte = network vendor (Netware = 0x03) [15 types] */
344 return WNNC_NET_MultiNet
| WNNC_SUBNET_WinWorkgroups
;
346 case WNNC_DRIVER_VERSION
:
347 /* driver version of vendor */
348 return 0x100; /* WfW 3.11 */
351 /* 1 = WNetGetUser is supported */
354 case WNNC_CONNECTION
:
355 /* returns mask of the supported connection functions */
356 return WNNC_CON_AddConnection
|WNNC_CON_CancelConnection
357 |WNNC_CON_GetConnections
/*|WNNC_CON_AutoConnect*/
358 |WNNC_CON_BrowseDialog
|WNNC_CON_RestoreConnection
;
361 /* returns mask of the supported printing functions */
362 return WNNC_PRT_OpenJob
|WNNC_PRT_CloseJob
|WNNC_PRT_HoldJob
363 |WNNC_PRT_ReleaseJob
|WNNC_PRT_CancelJob
364 |WNNC_PRT_SetJobCopies
|WNNC_PRT_WatchQueue
365 |WNNC_PRT_UnwatchQueue
|WNNC_PRT_LockQueueData
366 |WNNC_PRT_UnlockQueueData
|WNNC_PRT_AbortJob
370 /* returns mask of the supported dialog functions */
371 return WNNC_DLG_DeviceMode
|WNNC_DLG_BrowseDialog
372 |WNNC_DLG_ConnectDialog
|WNNC_DLG_DisconnectDialog
373 |WNNC_DLG_ViewQueueDialog
|WNNC_DLG_PropertyDialog
374 |WNNC_DLG_ConnectionDialog
375 /*|WNNC_DLG_PrinterConnectDialog
376 |WNNC_DLG_SharesDialog|WNNC_DLG_ShareAsDialog*/;
379 /* returns mask of the supported administration functions */
380 /* not sure if long file names is a good idea */
381 return WNNC_ADM_GetDirectoryType
|WNNC_ADM_DirectoryNotify
382 |WNNC_ADM_LongNames
/*|WNNC_ADM_SetDefaultDrive*/;
385 /* returns mask of the supported error functions */
386 return WNNC_ERR_GetError
|WNNC_ERR_GetErrorText
;
388 case WNNC_PRINTMGREXT
:
389 /* returns the Print Manager version in major and
390 minor format if Print Manager functions are available */
391 return 0x30e; /* printman version of WfW 3.11 */
394 /* Win 3.11 returns HMODULE of network driver here
395 FIXME: what should we return ?
396 logonoff.exe needs it, msmail crashes with wrong value */
404 /**************************************************************************
405 * WNetDeviceMode [USER.514]
407 int WINAPI
WNetDeviceMode(HWND16 hWndOwner
)
409 FIXME(wnet
, "(%04x): stub\n",hWndOwner
);
410 return WN_NO_NETWORK
;
413 /**************************************************************************
414 * WNetBrowseDialog [USER.515]
416 int WINAPI
WNetBrowseDialog(HWND16 hParent
,WORD nType
,LPSTR szPath
)
418 FIXME(wnet
, "(%04x,%x,'%s'): stub\n",hParent
,nType
,szPath
);
419 return WN_NO_NETWORK
;
422 /**************************************************************************
423 * WNetGetUser [USER.516]
425 UINT16 WINAPI
WNetGetUser(LPSTR lpLocalName
, LPSTR lpUserName
, DWORD
*lpSize
)
427 FIXME(wnet
, "(%p, %p, %p): stub\n", lpLocalName
, lpUserName
, lpSize
);
428 return WN_NO_NETWORK
;
431 /**************************************************************************
432 * WNetGetUser [MPR.86]
433 * FIXME: we should not return ourselves, but the owner of the drive lpLocalName
435 DWORD WINAPI
WNetGetUser32A(LPCSTR lpLocalName
, LPSTR lpUserName
, DWORD
*lpSize
)
437 struct passwd
*pwd
= getpwuid(getuid());
439 FIXME(wnet
, "(%s, %p, %p), mostly stub\n", lpLocalName
, lpUserName
, lpSize
);
441 if (strlen(pwd
->pw_name
)+1>*lpSize
) {
442 *lpSize
= strlen(pwd
->pw_name
)+1;
443 SetLastError(ERROR_MORE_DATA
);
444 return ERROR_MORE_DATA
;
446 strcpy(lpUserName
,pwd
->pw_name
);
448 *lpSize
= strlen(pwd
->pw_name
)+1;
451 /* FIXME: wrong return value */
452 SetLastError(ERROR_NO_NETWORK
);
453 return ERROR_NO_NETWORK
;
456 /**************************************************************************
457 * WNetGetError [USER.519]
459 int WINAPI
WNetGetError(LPWORD nError
)
461 FIXME(wnet
, "(%p): stub\n",nError
);
462 return WN_NO_NETWORK
;
465 /**************************************************************************
466 * WNetGetErrorText [USER.520]
468 int WINAPI
WNetGetErrorText(WORD nError
, LPSTR lpBuffer
, LPWORD nBufferSize
)
470 FIXME(wnet
, "(%x,%p,%p): stub\n",nError
,lpBuffer
,nBufferSize
);
474 /**************************************************************************
475 * WNetRestoreConnection [USER.523]
477 int WINAPI
WNetRestoreConnection(HWND16 hwndOwner
,LPSTR lpszDevice
)
479 FIXME(wnet
, "(%04x,'%s'): stub\n",hwndOwner
,lpszDevice
);
480 return WN_NO_NETWORK
;
483 /**************************************************************************
484 * WNetWriteJob [USER.524]
486 int WINAPI
WNetWriteJob(HANDLE16 hJob
,void *lpData
,LPWORD lpcbData
)
488 FIXME(wnet
, "(%04x,%p,%p): stub\n",hJob
,lpData
,lpcbData
);
489 return WN_NO_NETWORK
;
492 /********************************************************************
493 * WNetConnectDialog [USER.525]
495 UINT16 WINAPI
WNetConnectDialog(HWND16 hWndParent
, WORD iType
)
497 FIXME(wnet
, "(%04x, %4X): stub\n", hWndParent
, iType
);
501 /**************************************************************************
502 * WNetDisconnectDialog [USER.526]
504 int WINAPI
WNetDisconnectDialog(HWND16 hwndOwner
, WORD iType
)
506 FIXME(wnet
, "(%04x,%x): stub\n",hwndOwner
,iType
);
507 return WN_NO_NETWORK
;
510 /**************************************************************************
511 * WnetConnectionDialog [USER.527]
513 UINT16 WINAPI
WNetConnectionDialog(HWND16 hWndParent
, WORD iType
)
515 FIXME(wnet
, "(%04x, %4X): stub\n", hWndParent
, iType
);
521 /**************************************************************************
522 * WNetViewQueueDialog [USER.528]
524 int WINAPI
WNetViewQueueDialog(HWND16 hwndOwner
,LPSTR lpszQueue
)
526 FIXME(wnet
, "(%04x,'%s'): stub\n",hwndOwner
,lpszQueue
);
527 return WN_NO_NETWORK
;
530 /**************************************************************************
531 * WNetPropertyDialog [USER.529]
533 int WINAPI
WNetPropertyDialog(HWND16 hwndParent
,WORD iButton
,
534 WORD nPropSel
,LPSTR lpszName
,WORD nType
)
536 FIXME(wnet
, "(%04x,%x,%x,'%s',%x): stub\n",
537 hwndParent
,iButton
,nPropSel
,lpszName
,nType
);
538 return WN_NO_NETWORK
;
541 /*********************************************************************
542 * WNetGetDirectoryType [USER.530] Decides whether resource is local
545 * on success, puts one of the following in *lpType:
546 * - WNDT_NETWORK on a network
549 int WINAPI
WNetGetDirectoryType16(LPSTR lpName
, LPINT16 lpType
)
551 UINT32 type
= GetDriveType32A(lpName
);
553 if (type
== DRIVE_DOESNOTEXIST
)
554 type
= GetDriveType32A(NULL
);
555 *lpType
= (type
==DRIVE_REMOTE
)?WNDT_NETWORK
:WNDT_NORMAL
;
556 TRACE(wnet
,"%s is %s\n",lpName
,(*lpType
==WNDT_NETWORK
)?
557 "WNDT_NETWORK":"WNDT_NORMAL");
561 /*****************************************************************
562 * WNetGetDirectoryTypeA [MPR.109]
565 UINT32 WINAPI
WNetGetDirectoryType32A(LPSTR lpName
,void *lpType
)
567 return WNetGetDirectoryType16(lpName
, lpType
);
570 /**************************************************************************
571 * WNetDirectoryNotify [USER.531]
573 int WINAPI
WNetDirectoryNotify(HWND16 hwndOwner
,void *lpDir
,WORD wOper
)
575 FIXME(wnet
, "(%04x,%p,%x): stub\n",hwndOwner
,lpDir
,wOper
);
576 return WN_NO_NETWORK
;
579 /**************************************************************************
580 * WNetGetPropertyText [USER.532]
582 int WINAPI
WNetGetPropertyText(WORD iButton
, WORD nPropSel
, LPSTR lpszName
,
583 LPSTR lpszButtonName
, WORD cbButtonName
, WORD nType
)
585 FIXME(wnet
, "(%04x,%04x,'%s','%s',%04x): stub\n",
586 iButton
,nPropSel
,lpszName
,lpszButtonName
, nType
);
587 return WN_NO_NETWORK
;
591 /**************************************************************************
592 * WNetCloseEnum [USER.???]
594 UINT16 WINAPI
WNetCloseEnum(HANDLE16 hEnum
)
596 FIXME(wnet
, "(%04x): stub\n", hEnum
);
597 return WN_NO_NETWORK
;
600 /**************************************************************************
601 * WNetEnumResource [USER.???]
603 UINT16 WINAPI
WNetEnumResource(HANDLE16 hEnum
, DWORD cRequ
,
604 DWORD
*lpCount
, LPVOID lpBuf
)
606 FIXME(wnet
, "(%04x, %08lX, %p, %p): stub\n",
607 hEnum
, cRequ
, lpCount
, lpBuf
);
608 return WN_NO_NETWORK
;
611 /**************************************************************************
612 * WNetOpenEnum [USER.???]
614 UINT16 WINAPI
WNetOpenEnum16(DWORD dwScope
, DWORD dwType
,
615 LPNETRESOURCE16 lpNet
, HANDLE16
*lphEnum
)
617 FIXME(wnet
, "(%08lX, %08lX, %p, %p): stub\n",
618 dwScope
, dwType
, lpNet
, lphEnum
);
619 return WN_NO_NETWORK
;
622 /**************************************************************************
623 * WNetOpenEnumA [MPR.92]
625 UINT32 WINAPI
WNetOpenEnum32A(DWORD dwScope
, DWORD dwType
, DWORD dwUsage
,
626 LPNETRESOURCE32A lpNet
, HANDLE32
*lphEnum
)
628 FIXME(wnet
, "(%08lX, %08lX, %08lX, %p, %p): stub\n",
629 dwScope
, dwType
, dwUsage
, lpNet
, lphEnum
);
630 SetLastError(WN_NO_NETWORK
);
631 return WN_NO_NETWORK
;
634 /* ****************************************************************
635 * WNetGetResourceInformationA [MPR.80]
639 WNetGetResourceInformation32A(
640 LPNETRESOURCE32A netres
,LPVOID buf
,LPDWORD buflen
,LPSTR systemstr
642 FIXME(wnet
,"(%p,%p,%p,%p): stub!\n",netres
,buf
,buflen
,systemstr
);
643 SetLastError(WN_NO_NETWORK
);
644 return WN_NO_NETWORK
;
647 /**************************************************************************
648 * WNetCachePassword [MPR.52] Saves password in cache
651 * Success: WN_SUCCESS
652 * Failure: WNACCESS_DENIED, WN_BAD_PASSWORD, WN_BADVALUE, WN_NET_ERROR,
653 * WN_NOT_SUPPORTED, WN_OUT_OF_MEMORY
655 DWORD WINAPI
WNetCachePassword(
656 LPSTR pbResource
, /* [in] Name of workgroup, computer, or resource */
657 WORD cbResource
, /* [in] Size of name */
658 LPSTR pbPassword
, /* [in] Buffer containing password */
659 WORD cbPassword
, /* [in] Size of password */
660 BYTE nType
) /* [in] Type of password to cache */
662 FIXME(mpr
,"(%s,%d,%s,%d,%d): stub\n", pbResource
,cbResource
,
663 pbPassword
,cbPassword
,nType
);
669 /*****************************************************************
670 * WNetGetCachedPassword [MPR.69] Retrieves password from cache
673 * Success: WN_SUCCESS
674 * Failure: WNACCESS_DENIED, WN_BAD_PASSWORD, WN_BAD_VALUE,
675 * WN_NET_ERROR, WN_NOT_SUPPORTED, WN_OUT_OF_MEMORY
677 DWORD WINAPI
WNetGetCachedPassword(
678 LPSTR pbResource
, /* [in] Name of workgroup, computer, or resource */
679 WORD cbResource
, /* [in] Size of name */
680 LPSTR pbPassword
, /* [out] Buffer to receive password */
681 LPWORD pcbPassword
, /* [out] Receives size of password */
682 BYTE nType
) /* [in] Type of password to retrieve */
684 FIXME(mpr
,"(%s,%d,%p,%d,%d): stub\n",
685 pbResource
,cbResource
,pbPassword
,*pcbPassword
,nType
);
686 return WN_ACCESS_DENIED
;
689 /*****************************************************************
690 * MultinetGetConnectionPerformanceA [MPR.25]
694 * Failure: ERROR_NOT_SUPPORTED, ERROR_NOT_CONNECTED,
695 * ERROR_NO_NET_OR_BAD_PATH, ERROR_BAD_DEVICE,
696 * ERROR_BAD_NET_NAME, ERROR_INVALID_PARAMETER,
697 * ERROR_NO_NETWORK, ERROR_EXTENDED_ERROR
699 DWORD WINAPI
MultinetGetConnectionPerformance32A(
700 LPNETRESOURCE32A lpNetResource
,
701 LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct
703 FIXME(mpr
,"(%p,%p): stub\n",lpNetResource
,lpNetConnectInfoStruct
);
704 return WN_NO_NETWORK
;
708 /*****************************************************************
712 DWORD WINAPI
_MPR_22(DWORD x
)
714 FIXME(mpr
,"(%lx): stub\n",x
);
718 /*****************************************************************
719 * MultinetGetErrorTextA [MPR.28]
722 UINT32 WINAPI
MultinetGetErrorText32A (DWORD x
, DWORD y
, DWORD z
)
723 { FIXME(mpr
,"(%lx,%lx,%lx): stub\n",x
,y
,z
);
726 /*****************************************************************
727 * MultinetGetErrorTextW [MPR.29]
730 UINT32 WINAPI
MultinetGetErrorText32W (DWORD x
, DWORD y
, DWORD z
)
731 { FIXME(mpr
,"(%lx,%lx,%lx): stub\n",x
,y
,z
);