From 098630e3d6a586a21dca2f4dc479f5b07d4e7b9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sun, 1 Feb 2004 19:48:44 +0000 Subject: [PATCH] Import mpr from Wine svn path=/trunk/; revision=7970 --- reactos/include/wine/netspi.h | 151 ++++++++++ reactos/include/wine/windef.h | 46 +++ reactos/include/wine/winnetwk.h | 399 ++++++++++++++++++++++++++ reactos/lib/mpr/Makefile | 31 +- reactos/lib/mpr/Makefile.in | 18 ++ reactos/lib/mpr/Makefile.ros-template | 19 ++ reactos/lib/mpr/auth.c | 24 +- reactos/lib/mpr/mpr.h | 47 --- reactos/lib/mpr/mpr.rc | 57 ---- reactos/lib/mpr/mpr.spec | 116 ++++++++ reactos/lib/mpr/mpr_main.c | 3 + reactos/lib/mpr/multinet.c | 17 +- reactos/lib/mpr/nps.c | 23 +- reactos/lib/mpr/pwcache.c | 126 +++++++- reactos/lib/mpr/winehq2ros.patch | 15 + reactos/lib/mpr/wnet.c | 130 ++++++++- 16 files changed, 1072 insertions(+), 150 deletions(-) create mode 100644 reactos/include/wine/netspi.h create mode 100644 reactos/include/wine/windef.h create mode 100644 reactos/include/wine/winnetwk.h create mode 100644 reactos/lib/mpr/Makefile.in create mode 100644 reactos/lib/mpr/Makefile.ros-template delete mode 100644 reactos/lib/mpr/mpr.h delete mode 100644 reactos/lib/mpr/mpr.rc create mode 100644 reactos/lib/mpr/mpr.spec create mode 100644 reactos/lib/mpr/winehq2ros.patch diff --git a/reactos/include/wine/netspi.h b/reactos/include/wine/netspi.h new file mode 100644 index 00000000000..ff1e996798f --- /dev/null +++ b/reactos/include/wine/netspi.h @@ -0,0 +1,151 @@ +/* + * MPR - Network provider services + * + * Copyright (C) 1999 Ulrich Weigand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _NETSPI_H_ +#define _NETSPI_H_ + +#include +#include + +/* + * Note: The Unicode variants of all these routines/structures + * apparently don't exist, at least not in Win95 ... + */ + +#define HPROVIDER LPVOID +typedef HPROVIDER *PHPROVIDER; + +typedef struct +{ + DWORD cbStructure; + HWND hwndOwner; + LPCSTR lpResource; + LPSTR lpUsername; + DWORD cbUsername; + LPSTR lpPassword; + DWORD cbPassword; + LPSTR lpOrgUnit; + DWORD cbOrgUnit; + LPCSTR lpOUTitle; + LPCSTR lpExplainText; + LPCSTR lpDefaultUserName; + DWORD dwFlags; + +} AUTHDLGSTRUCTA, *LPAUTHDLGSTRUCTA; + +DECL_WINELIB_TYPE_AW(AUTHDLGSTRUCT) +DECL_WINELIB_TYPE_AW(LPAUTHDLGSTRUCT) + +#define AUTHDLG_ENABLECACHE 0x00000001 +#define AUTHDLG_CHECKCACHE 0x00000002 +#define AUTHDLG_CACHEINVALID 0x00000004 +#define AUTHDLG_USE_DEFAULT_NAME 0x00000008 +#define AUTHDLG_CHECKDEFAULT_NAME 0x00000010 +#define AUTHDLG_LOGON 0x00000020 + +#define AUTHDLG_ENABLECACHE 0x00000001 +#define AUTHDLG_CHECKCACHE 0x00000002 +#define AUTHDLG_CACHEINVALID 0x00000004 +#define AUTHDLG_USE_DEFAULT_NAME 0x00000008 +#define AUTHDLG_CHECKDEFAULT_NAME 0x00000010 +#define AUTHDLG_LOGON 0x00000020 + +DWORD WINAPI NPSAuthenticationDialogA(LPAUTHDLGSTRUCTA); +#define NPSAuthenticationDialog WINELIB_NAME_AW(NPSAuthenticationDialog) +DWORD WINAPI NPSGetProviderHandleA(PHPROVIDER); +#define NPSGetProviderHandle WINELIB_NAME_AW(NPSGetProviderHandle) +DWORD WINAPI NPSGetProviderNameA(HPROVIDER,LPCSTR *); +#define NPSGetProviderName WINELIB_NAME_AW(NPSGetProviderName) +DWORD WINAPI NPSGetSectionNameA(HPROVIDER,LPCSTR *lpszSectionName); +#define NPSGetSectionName WINELIB_NAME_AW(NPSGetSectionName) +DWORD WINAPI NPSSetExtendedErrorA(DWORD,LPSTR); +#define NPSSetExtendedError WINELIB_NAME_AW(NPSSetExtendedError) +VOID WINAPI NPSSetCustomTextA(LPSTR); +#define NPSSetCustomText WINELIB_NAME_AW(NPSSetCustomText) +DWORD WINAPI NPSCopyStringA(LPCSTR,LPVOID,LPDWORD); +#define NPSCopyString WINELIB_NAME_AW(NPSCopyString) +DWORD WINAPI NPSDeviceGetNumberA(LPSTR,LPDWORD,LPDWORD); +#define NPSDeviceGetNumber WINELIB_NAME_AW(NPSDeviceGetNumber) +DWORD WINAPI NPSDeviceGetStringA(DWORD,DWORD,LPSTR,LPDWORD); +#define NPSDeviceGetString WINELIB_NAME_AW(NPSDeviceGetString) + + +enum NOTIFYTYPE { NotifyAddConnection, + NotifyCancelConnection, + NotifyGetConnectionPerformance }; + +#define NOTIFY_PRE 0x00 +#define NOTIFY_POST 0x01 + +typedef struct +{ + DWORD cbStructure; + DWORD dwNotifyStatus; + DWORD dwOperationStatus; + LPVOID lpNPContext; + +} NOTIFYINFO, *LPNOTIFYINFO; + +typedef struct +{ + DWORD cbStructure; + HWND hwndOwner; + NETRESOURCEA NetResource; + DWORD dwAddFlags; + LPSTR lpAccessName; + LPDWORD lpBufferSize; + DWORD dwResult; + DWORD dwAddContext; + +} NOTIFYADDA, *LPNOTIFYADDA; + +#define CONNECT_CTXT_RESTORE 0x00000001 +#define CONNECT_CTXT_GLOBAL 0x00000002 +#define CONNECT_CTXT_PROVIDER 0x00000004 +#define CONNECT_CTXT_SINGLE 0x00000008 + +typedef struct +{ + DWORD cbStructure; + LPSTR lpName; + LPSTR lpProvider; + DWORD dwFlags; + BOOL fForce; + +} NOTIFYCANCELA, *LPNOTIFYCANCELA; + +typedef struct +{ + DWORD cbStructure; + LPSTR lpRemoteName; + LPSTR lpProviderName; + LPNETCONNECTINFOSTRUCT lpNetConnectInfo; + +} NOTIFYPERFORMANCEA, *LPNOTIFYPERFORMANCEA; + +typedef DWORD (CALLBACK *NOTIFYCALLBACK)(LPNOTIFYINFO,LPVOID); + +DWORD WINAPI NPSNotifyRegisterA(enum NOTIFYTYPE,NOTIFYCALLBACK); +#define NPSNotifyRegister WINELIB_NAME_AW(NPSNotifyRegister) +LPVOID WINAPI NPSNotifyGetContextA(NOTIFYCALLBACK); +#define NPSNotifyGetContext WINELIB_NAME_AW(NPSNotifyGetContext) + +#endif /* _NETSPI_H_ */ + diff --git a/reactos/include/wine/windef.h b/reactos/include/wine/windef.h new file mode 100644 index 00000000000..098413e91c2 --- /dev/null +++ b/reactos/include/wine/windef.h @@ -0,0 +1,46 @@ +/* + * Basic types definitions + * + * Copyright 1996 Alexandre Julliard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include_next "windef.h" + +#ifndef __WINE_WINDEF_H +#define __WINE_WINDEF_H + +/* Macros to map Winelib names to the correct implementation name */ + +#if defined(__WINESRC__) || defined(__REACTOS__) +# define WINELIB_NAME_AW(func) \ + func##_must_be_suffixed_with_W_or_A_in_this_context \ + func##_must_be_suffixed_with_W_or_A_in_this_context +#else /* __WINESRC__ || __REACTOS__*/ +# ifdef UNICODE +# define WINELIB_NAME_AW(func) func##W +# else +# define WINELIB_NAME_AW(func) func##A +# endif /* UNICODE */ +#endif /* __WINESRC__ */ + +#if defined(__WINESRC__) || defined(__REACTOS__) +# define DECL_WINELIB_TYPE_AW(type) /* nothing */ +#else /* __WINESRC__ */ +# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type; +#endif /* __WINESRC__ */ + +#endif /* __WINE_WINDEF_H */ diff --git a/reactos/include/wine/winnetwk.h b/reactos/include/wine/winnetwk.h new file mode 100644 index 00000000000..f5149bdb9e6 --- /dev/null +++ b/reactos/include/wine/winnetwk.h @@ -0,0 +1,399 @@ +/* + * Copyright (C) the Wine project + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#ifndef _WINNETWK_H_ +#define _WINNETWK_H_ + +/* + * Network types + */ + +#define WNNC_NET_MSNET 0x00010000 +#define WNNC_NET_LANMAN 0x00020000 +#define WNNC_NET_NETWARE 0x00030000 +#define WNNC_NET_VINES 0x00040000 +#define WNNC_NET_10NET 0x00050000 +#define WNNC_NET_LOCUS 0x00060000 +#define WNNC_NET_SUN_PC_NFS 0x00070000 +#define WNNC_NET_LANSTEP 0x00080000 +#define WNNC_NET_9TILES 0x00090000 +#define WNNC_NET_LANTASTIC 0x000A0000 +#define WNNC_NET_AS400 0x000B0000 +#define WNNC_NET_FTP_NFS 0x000C0000 +#define WNNC_NET_PATHWORKS 0x000D0000 +#define WNNC_NET_LIFENET 0x000E0000 +#define WNNC_NET_POWERLAN 0x000F0000 +#define WNNC_NET_BWNFS 0x00100000 +#define WNNC_NET_COGENT 0x00110000 +#define WNNC_NET_FARALLON 0x00120000 +#define WNNC_NET_APPLETALK 0x00130000 +#define WNNC_NET_INTERGRAPH 0x00140000 + +/* + * Network resources + */ + +#define RESOURCE_CONNECTED 0x00000001 +#define RESOURCE_GLOBALNET 0x00000002 +#define RESOURCE_REMEMBERED 0x00000003 +#define RESOURCE_RECENT 0x00000004 +#define RESOURCE_CONTEXT 0x00000005 + +#define RESOURCETYPE_ANY 0x00000000 +#define RESOURCETYPE_DISK 0x00000001 +#define RESOURCETYPE_PRINT 0x00000002 +#define RESOURCETYPE_RESERVED 0x00000008 +#define RESOURCETYPE_UNKNOWN 0xFFFFFFFF + +#define RESOURCEUSAGE_CONNECTABLE 0x00000001 +#define RESOURCEUSAGE_CONTAINER 0x00000002 +#define RESOURCEUSAGE_NOLOCALDEVICE 0x00000004 +#define RESOURCEUSAGE_SIBLING 0x00000008 +#define RESOURCEUSAGE_ATTACHED 0x00000010 +#define RESOURCEUSAGE_ALL (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED) +#define RESOURCEUSAGE_RESERVED 0x80000000 + +#define RESOURCEDISPLAYTYPE_GENERIC 0x00000000 +#define RESOURCEDISPLAYTYPE_DOMAIN 0x00000001 +#define RESOURCEDISPLAYTYPE_SERVER 0x00000002 +#define RESOURCEDISPLAYTYPE_SHARE 0x00000003 +#define RESOURCEDISPLAYTYPE_FILE 0x00000004 +#define RESOURCEDISPLAYTYPE_GROUP 0x00000005 +#define RESOURCEDISPLAYTYPE_NETWORK 0x00000006 +#define RESOURCEDISPLAYTYPE_ROOT 0x00000007 +#define RESOURCEDISPLAYTYPE_SHAREADMIN 0x00000008 +#define RESOURCEDISPLAYTYPE_DIRECTORY 0x00000009 +#define RESOURCEDISPLAYTYPE_TREE 0x0000000A + +typedef struct { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPSTR lpLocalName; + LPSTR lpRemoteName; + LPSTR lpComment ; + LPSTR lpProvider; +} NETRESOURCEA,*LPNETRESOURCEA; + +typedef struct { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + LPWSTR lpComment ; + LPWSTR lpProvider; +} NETRESOURCEW,*LPNETRESOURCEW; + +DECL_WINELIB_TYPE_AW(NETRESOURCE) +DECL_WINELIB_TYPE_AW(LPNETRESOURCE) + + +/* + * Network connections + */ + +#define NETPROPERTY_PERSISTENT 1 + +#define CONNECT_UPDATE_PROFILE 0x00000001 +#define CONNECT_UPDATE_RECENT 0x00000002 +#define CONNECT_TEMPORARY 0x00000004 +#define CONNECT_INTERACTIVE 0x00000008 +#define CONNECT_PROMPT 0x00000010 +#define CONNECT_NEED_DRIVE 0x00000020 +#define CONNECT_REFCOUNT 0x00000040 +#define CONNECT_REDIRECT 0x00000080 +#define CONNECT_LOCALDRIVE 0x00000100 +#define CONNECT_CURRENT_MEDIA 0x00000200 + +DWORD WINAPI WNetAddConnectionA(LPCSTR,LPCSTR,LPCSTR); +DWORD WINAPI WNetAddConnectionW(LPCWSTR,LPCWSTR,LPCWSTR); +#define WNetAddConnection WINELIB_NAME_AW(WNetAddConnection) +DWORD WINAPI WNetAddConnection2A(LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD); +DWORD WINAPI WNetAddConnection2W(LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD); +#define WNetAddConnection2 WINELIB_NAME_AW(WNetAddConnection2) +DWORD WINAPI WNetAddConnection3A(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD); +DWORD WINAPI WNetAddConnection3W(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD); +#define WNetAddConnection3 WINELIB_NAME_AW(WNetAddConnection3) +DWORD WINAPI WNetCancelConnectionA(LPCSTR,BOOL); +DWORD WINAPI WNetCancelConnectionW(LPCWSTR,BOOL); +#define WNetCancelConnection WINELIB_NAME_AW(WNetCancelConnection) +DWORD WINAPI WNetCancelConnection2A(LPCSTR,DWORD,BOOL); +DWORD WINAPI WNetCancelConnection2W(LPCWSTR,DWORD,BOOL); +#define WNetCancelConnection2 WINELIB_NAME_AW(WNetCancelConnection2) +DWORD WINAPI WNetGetConnectionA(LPCSTR,LPSTR,LPDWORD); +DWORD WINAPI WNetGetConnectionW(LPCWSTR,LPWSTR,LPDWORD); +#define WNetGetConnection WINELIB_NAME_AW(WNetGetConnection) +DWORD WINAPI WNetUseConnectionA(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD,LPSTR,LPDWORD,LPDWORD); +DWORD WINAPI WNetUseConnectionW(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPDWORD,LPDWORD); +#define WNetUseConnection WINELIB_NAME_AW(WNetUseConnection) +DWORD WINAPI WNetSetConnectionA(LPCSTR,DWORD,LPVOID); +DWORD WINAPI WNetSetConnectionW(LPCWSTR,DWORD,LPVOID); +#define WNetSetConnection WINELIB_NAME_AW(WNetSetConnection) + +/* + * Network connection dialogs + */ + +typedef struct { + DWORD cbStructure; /* size of this structure in bytes */ + HWND hwndOwner; /* owner window for the dialog */ + LPNETRESOURCEA lpConnRes;/* Requested Resource info */ + DWORD dwFlags; /* flags (see below) */ + DWORD dwDevNum; /* number of devices connected to */ +} CONNECTDLGSTRUCTA, *LPCONNECTDLGSTRUCTA; +typedef struct { + DWORD cbStructure; /* size of this structure in bytes */ + HWND hwndOwner; /* owner window for the dialog */ + LPNETRESOURCEW lpConnRes;/* Requested Resource info */ + DWORD dwFlags; /* flags (see below) */ + DWORD dwDevNum; /* number of devices connected to */ +} CONNECTDLGSTRUCTW, *LPCONNECTDLGSTRUCTW; + +DECL_WINELIB_TYPE_AW(CONNECTDLGSTRUCT) +DECL_WINELIB_TYPE_AW(LPCONNECTDLGSTRUCT) + +#define CONNDLG_RO_PATH 0x00000001 /* Resource path should be read-only */ +#define CONNDLG_CONN_POINT 0x00000002 /* Netware -style movable connection point enabled */ +#define CONNDLG_USE_MRU 0x00000004 /* Use MRU combobox */ +#define CONNDLG_HIDE_BOX 0x00000008 /* Hide persistent connect checkbox */ +#define CONNDLG_PERSIST 0x00000010 /* Force persistent connection */ +#define CONNDLG_NOT_PERSIST 0x00000020 /* Force connection NOT persistent */ + +typedef struct { + DWORD cbStructure; /* size of this structure in bytes */ + HWND hwndOwner; /* owner window for the dialog */ + LPSTR lpLocalName; /* local device name */ + LPSTR lpRemoteName; /* network resource name */ + DWORD dwFlags; /* flags */ +} DISCDLGSTRUCTA, *LPDISCDLGSTRUCTA; +typedef struct { + DWORD cbStructure; /* size of this structure in bytes */ + HWND hwndOwner; /* owner window for the dialog */ + LPWSTR lpLocalName; /* local device name */ + LPWSTR lpRemoteName; /* network resource name */ + DWORD dwFlags; /* flags */ +} DISCDLGSTRUCTW, *LPDISCDLGSTRUCTW; + +DECL_WINELIB_TYPE_AW(DISCDLGSTRUCT) +DECL_WINELIB_TYPE_AW(LPDISCDLGSTRUCT) + +#define DISC_UPDATE_PROFILE 0x00000001 +#define DISC_NO_FORCE 0x00000040 + +DWORD WINAPI WNetConnectionDialog(HWND,DWORD); +DWORD WINAPI WNetDisconnectDialog(HWND,DWORD); +DWORD WINAPI WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA); +DWORD WINAPI WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW); +#define WNetConnectionDialog1 WINELIB_NAME_AW(WNetConnectionDialog1) +DWORD WINAPI WNetDisconnectDialog1A(LPDISCDLGSTRUCTA); +DWORD WINAPI WNetDisconnectDialog1W(LPDISCDLGSTRUCTW); +#define WNetDisconnectDialog1 WINELIB_NAME_AW(WNetDisconnectDialog1) + +/* + * Network browsing + */ + +DWORD WINAPI WNetOpenEnumA(DWORD,DWORD,DWORD,LPNETRESOURCEA,LPHANDLE); +DWORD WINAPI WNetOpenEnumW(DWORD,DWORD,DWORD,LPNETRESOURCEW,LPHANDLE); +#define WNetOpenEnum WINELIB_NAME_AW(WNetOpenEnum) +DWORD WINAPI WNetEnumResourceA(HANDLE,LPDWORD,LPVOID,LPDWORD); +DWORD WINAPI WNetEnumResourceW(HANDLE,LPDWORD,LPVOID,LPDWORD); +#define WNetEnumResource WINELIB_NAME_AW(WNetEnumResource) +DWORD WINAPI WNetGetResourceInformationA(LPNETRESOURCEA,LPVOID,LPDWORD,LPSTR*); +DWORD WINAPI WNetGetResourceInformationW(LPNETRESOURCEW,LPVOID,LPDWORD,LPWSTR*); +#define WNetGetResourceInformation WINELIB_NAME_AW(WNetGetResourceInformation) +DWORD WINAPI WNetGetResourceParentA(LPNETRESOURCEA,LPVOID,LPDWORD); +DWORD WINAPI WNetGetResourceParentW(LPNETRESOURCEW,LPVOID,LPDWORD); +#define WNetGetResourceParent WINELIB_NAME_AW(WNetGetResourceParent) +DWORD WINAPI WNetCloseEnum(HANDLE); + +/* + * Universal naming + */ + +#define UNIVERSAL_NAME_INFO_LEVEL 0x00000001 +#define REMOTE_NAME_INFO_LEVEL 0x00000002 + +typedef struct { + LPSTR lpUniversalName; +} UNIVERSAL_NAME_INFOA, *LPUNIVERSAL_NAME_INFOA; +typedef struct { + LPWSTR lpUniversalName; +} UNIVERSAL_NAME_INFOW, *LPUNIVERSAL_NAME_INFOW; + +DECL_WINELIB_TYPE_AW(UNIVERSAL_NAME_INFO) +DECL_WINELIB_TYPE_AW(LPUNIVERSAL_NAME_INFO) + +typedef struct { + LPSTR lpUniversalName; + LPSTR lpConnectionName; + LPSTR lpRemainingPath; +}REMOTE_NAME_INFOA, *LPREMOTE_NAME_INFOA; +typedef struct { + LPWSTR lpUniversalName; + LPWSTR lpConnectionName; + LPWSTR lpRemainingPath; +}REMOTE_NAME_INFOW, *LPREMOTE_NAME_INFOW; + +DECL_WINELIB_TYPE_AW(REMOTE_NAME_INFO) +DECL_WINELIB_TYPE_AW(LPREMOTE_NAME_INFO) + +DWORD WINAPI WNetGetUniversalNameA(LPCSTR,DWORD,LPVOID,LPDWORD); +DWORD WINAPI WNetGetUniversalNameW(LPCWSTR,DWORD,LPVOID,LPDWORD); +#define WNetGetUniversalName WINELIB_NAME_AW(WNetGetUniversalName) + +/* + * Other + */ + +DWORD WINAPI WNetGetUserA(LPCSTR,LPSTR,LPDWORD); +DWORD WINAPI WNetGetUserW(LPCWSTR,LPWSTR,LPDWORD); +#define WNetGetUser WINELIB_NAME_AW(WNetGetUser) + +#define WNFMT_MULTILINE 0x01 +#define WNFMT_ABBREVIATED 0x02 +#define WNFMT_INENUM 0x10 +#define WNFMT_CONNECTION 0x20 + +DWORD WINAPI WNetGetProviderNameA(DWORD,LPSTR,LPDWORD); +DWORD WINAPI WNetGetProviderNameW(DWORD,LPWSTR,LPDWORD); +#define WNetGetProviderName WINELIB_NAME_AW(WNetGetProviderName) + +typedef struct { + DWORD cbStructure; + DWORD dwProviderVersion; + DWORD dwStatus; + DWORD dwCharacteristics; + DWORD dwHandle; + WORD wNetType; + DWORD dwPrinters; + DWORD dwDrives; +} NETINFOSTRUCT, *LPNETINFOSTRUCT; + +#define NETINFO_DLL16 0x00000001 +#define NETINFO_DISKRED 0x00000004 +#define NETINFO_PRINTERRED 0x00000008 + +DWORD WINAPI WNetGetNetworkInformationA(LPCSTR,LPNETINFOSTRUCT); +DWORD WINAPI WNetGetNetworkInformationW(LPCWSTR,LPNETINFOSTRUCT); +#define WNetGetNetworkInformation WINELIB_NAME_AW(WNetGetNetworkInformation) + + +/* + * Status codes + */ + +DWORD WINAPI WNetGetLastErrorA(LPDWORD,LPSTR,DWORD,LPSTR,DWORD); +DWORD WINAPI WNetGetLastErrorW(LPDWORD,LPWSTR,DWORD,LPWSTR,DWORD); +#define WNetGetLastError WINELIB_NAME_AW(WNetGetLastError) + +#define WN_SUCCESS NO_ERROR +#define WN_NO_ERROR NO_ERROR +#define WN_NOT_SUPPORTED ERROR_NOT_SUPPORTED +#define WN_CANCEL ERROR_CANCELLED +#define WN_RETRY ERROR_RETRY +#define WN_NET_ERROR ERROR_UNEXP_NET_ERR +#define WN_MORE_DATA ERROR_MORE_DATA +#define WN_BAD_POINTER ERROR_INVALID_ADDRESS +#define WN_BAD_VALUE ERROR_INVALID_PARAMETER +#define WN_BAD_USER ERROR_BAD_USERNAME +#define WN_BAD_PASSWORD ERROR_INVALID_PASSWORD +#define WN_ACCESS_DENIED ERROR_ACCESS_DENIED +#define WN_FUNCTION_BUSY ERROR_BUSY +#define WN_WINDOWS_ERROR ERROR_UNEXP_NET_ERR +#define WN_OUT_OF_MEMORY ERROR_NOT_ENOUGH_MEMORY +#define WN_NO_NETWORK ERROR_NO_NETWORK +#define WN_EXTENDED_ERROR ERROR_EXTENDED_ERROR +#define WN_BAD_LEVEL ERROR_INVALID_LEVEL +#define WN_BAD_HANDLE ERROR_INVALID_HANDLE +#define WN_NOT_INITIALIZING ERROR_ALREADY_INITIALIZED +#define WN_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES + +#define WN_NOT_CONNECTED ERROR_NOT_CONNECTED +#define WN_OPEN_FILES ERROR_OPEN_FILES +#define WN_DEVICE_IN_USE ERROR_DEVICE_IN_USE +#define WN_BAD_NETNAME ERROR_BAD_NET_NAME +#define WN_BAD_LOCALNAME ERROR_BAD_DEVICE +#define WN_ALREADY_CONNECTED ERROR_ALREADY_ASSIGNED +#define WN_DEVICE_ERROR ERROR_GEN_FAILURE +#define WN_CONNECTION_CLOSED ERROR_CONNECTION_UNAVAIL +#define WN_NO_NET_OR_BAD_PATH ERROR_NO_NET_OR_BAD_PATH +#define WN_BAD_PROVIDER ERROR_BAD_PROVIDER +#define WN_CANNOT_OPEN_PROFILE ERROR_CANNOT_OPEN_PROFILE +#define WN_BAD_PROFILE ERROR_BAD_PROFILE +#define WN_BAD_DEV_TYPE ERROR_BAD_DEV_TYPE +#define WN_DEVICE_ALREADY_REMEMBERED ERROR_DEVICE_ALREADY_REMEMBERED + +#define WN_NO_MORE_ENTRIES ERROR_NO_MORE_ITEMS +#define WN_NOT_CONTAINER ERROR_NOT_CONTAINER + +#define WN_NOT_AUTHENTICATED ERROR_NOT_AUTHENTICATED +#define WN_NOT_LOGGED_ON ERROR_NOT_LOGGED_ON +#define WN_NOT_VALIDATED ERROR_NO_LOGON_SERVERS + + +/* + * Multinet (for Shell) + */ + +typedef struct { + DWORD cbStructure; + DWORD dwFlags; + DWORD dwSpeed; + DWORD dwDelay; + DWORD dwOptDataSize; +} NETCONNECTINFOSTRUCT,*LPNETCONNECTINFOSTRUCT; + +#define WNCON_FORNETCARD 0x00000001 +#define WNCON_NOTROUTED 0x00000002 +#define WNCON_SLOWLINK 0x00000004 +#define WNCON_DYNAMIC 0x00000008 + +DWORD WINAPI MultinetGetConnectionPerformanceA(LPNETRESOURCEA,LPNETCONNECTINFOSTRUCT); +DWORD WINAPI MultinetGetConnectionPerformanceW(LPNETRESOURCEW,LPNETCONNECTINFOSTRUCT); +#define MultinetGetConnectionPerformance WINELIB_NAME_AW(MultinetGetConnectionPerformance) +DWORD WINAPI MultinetGetErrorTextA(DWORD,DWORD,DWORD); +DWORD WINAPI MultinetGetErrorTextW(DWORD,DWORD,DWORD); +#define MultinetGetErrorText WINELIB_NAME_AW(MultinetGetErrorText) + +/* + * Password cache + */ + +/* WNetEnumCachedPasswords */ +typedef struct tagPASSWORD_CACHE_ENTRY +{ + WORD cbEntry; + WORD cbResource; + WORD cbPassword; + BYTE iEntry; + BYTE nType; + BYTE abResource[1]; +} PASSWORD_CACHE_ENTRY; + +typedef BOOL (CALLBACK *ENUMPASSWORDPROC)(PASSWORD_CACHE_ENTRY *, DWORD); +UINT WINAPI WNetEnumCachedPasswords( LPSTR, WORD, BYTE, ENUMPASSWORDPROC, DWORD); +DWORD WINAPI WNetGetCachedPassword( LPSTR, WORD, LPSTR, LPWORD, BYTE ); +DWORD WINAPI WNetCachePassword( LPSTR, WORD, LPSTR, WORD, BYTE, WORD ); + + +#endif /* _WINNETWK_H_ */ diff --git a/reactos/lib/mpr/Makefile b/reactos/lib/mpr/Makefile index 8a7ab775c45..5d3ce2e818a 100644 --- a/reactos/lib/mpr/Makefile +++ b/reactos/lib/mpr/Makefile @@ -1,34 +1,9 @@ +# $Id: Makefile,v 1.2 2004/02/01 19:48:44 gvg Exp $ + PATH_TO_TOP = ../.. -TARGET_TYPE = dynlink - -TARGET_NAME = mpr - -TARGET_BASE = 0x701a0000 - -TARGET_CFLAGS = -fno-builtin - -# require os code to explicitly request A/W version of structs/functions -TARGET_CFLAGS += -DUNICODE -D_UNICODE -Wall -Werror - -TARGET_LFLAGS = -nostdlib -nostartfiles - -TARGET_SDKLIBS = kernel32.a ntdll.a user32.a advapi32.a ole32.a - -TARGET_OBJECTS = \ - ../Uuid/uuid.o \ - auth.o \ - multinet.o \ - nps.o \ - pwcache.o \ - wnet.o \ - -DEP_OBJECTS = $(TARGET_OBJECTS) +TARGET_TYPE = winedll include $(PATH_TO_TOP)/rules.mak include $(TOOLS_PATH)/helper.mk - -include $(TOOLS_PATH)/depend.mk - -# EOF diff --git a/reactos/lib/mpr/Makefile.in b/reactos/lib/mpr/Makefile.in new file mode 100644 index 00000000000..283759e966c --- /dev/null +++ b/reactos/lib/mpr/Makefile.in @@ -0,0 +1,18 @@ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +MODULE = mpr.dll +IMPORTS = advapi32 kernel32 + +C_SRCS = \ + auth.c \ + mpr_main.c \ + multinet.c \ + nps.c \ + pwcache.c \ + wnet.c + +@MAKE_DLL_RULES@ + +### Dependencies: diff --git a/reactos/lib/mpr/Makefile.ros-template b/reactos/lib/mpr/Makefile.ros-template new file mode 100644 index 00000000000..f11beb5deb4 --- /dev/null +++ b/reactos/lib/mpr/Makefile.ros-template @@ -0,0 +1,19 @@ +# $Id: Makefile.ros-template,v 1.1 2004/02/01 19:48:44 gvg Exp $ + +TARGET_NAME = mpr + +TARGET_OBJECTS = @C_SRCS@ + +TARGET_CFLAGS = -D__REACTOS__ + +TARGET_SDKLIBS = @IMPORTS@ kernel32.a libwine.a ntdll.a + +TARGET_BASE = 0x76620000 + +TARGET_NORC = yes + +default: all + +DEP_OBJECTS = $(TARGET_OBJECTS) + +include $(TOOLS_PATH)/depend.mk diff --git a/reactos/lib/mpr/auth.c b/reactos/lib/mpr/auth.c index 68620dd5a02..531ca8a60fe 100644 --- a/reactos/lib/mpr/auth.c +++ b/reactos/lib/mpr/auth.c @@ -18,15 +18,23 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -//#include -//#include -#include +#include + +#include "windef.h" +#include "winbase.h" +#include "winnetwk.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(mpr); + /***************************************************************** * WNetLogoffA [MPR.@] */ DWORD WINAPI WNetLogoffA( LPCSTR lpProvider, HWND hwndOwner ) { + FIXME( "(%s, %p): stub\n", debugstr_a(lpProvider), hwndOwner ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -36,6 +44,8 @@ DWORD WINAPI WNetLogoffA( LPCSTR lpProvider, HWND hwndOwner ) */ DWORD WINAPI WNetLogoffW( LPCWSTR lpProvider, HWND hwndOwner ) { + FIXME( "(%s, %p): stub\n", debugstr_w(lpProvider), hwndOwner ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -45,6 +55,8 @@ DWORD WINAPI WNetLogoffW( LPCWSTR lpProvider, HWND hwndOwner ) */ DWORD WINAPI WNetLogonA( LPCSTR lpProvider, HWND hwndOwner ) { + FIXME( "(%s, %p): stub\n", debugstr_a(lpProvider), hwndOwner ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -54,6 +66,8 @@ DWORD WINAPI WNetLogonA( LPCSTR lpProvider, HWND hwndOwner ) */ DWORD WINAPI WNetLogonW( LPCWSTR lpProvider, HWND hwndOwner ) { + FIXME( "(%s, %p): stub\n", debugstr_w(lpProvider), hwndOwner ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -63,6 +77,8 @@ DWORD WINAPI WNetLogonW( LPCWSTR lpProvider, HWND hwndOwner ) */ DWORD WINAPI WNetVerifyPasswordA( LPCSTR lpszPassword, BOOL *pfMatch ) { + FIXME( "(%p, %p): stub\n", lpszPassword, pfMatch ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -72,6 +88,8 @@ DWORD WINAPI WNetVerifyPasswordA( LPCSTR lpszPassword, BOOL *pfMatch ) */ DWORD WINAPI WNetVerifyPasswordW( LPCWSTR lpszPassword, BOOL *pfMatch ) { + FIXME( "(%p, %p): stub\n", lpszPassword, pfMatch ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } diff --git a/reactos/lib/mpr/mpr.h b/reactos/lib/mpr/mpr.h deleted file mode 100644 index bd50a27ed47..00000000000 --- a/reactos/lib/mpr/mpr.h +++ /dev/null @@ -1,47 +0,0 @@ -typedef struct -{ - DWORD cbStructure; - HWND hwndOwner; - LPCSTR lpResource; - LPSTR lpUsername; - DWORD cbUsername; - LPSTR lpPassword; - DWORD cbPassword; - LPSTR lpOrgUnit; - DWORD cbOrgUnit; - LPCSTR lpOUTitle; - LPCSTR lpExplainText; - LPCSTR lpDefaultUserName; - DWORD dwFlags; - -} AUTHDLGSTRUCTA, *LPAUTHDLGSTRUCTA; - -typedef struct -{ - DWORD cbStructure; - DWORD dwNotifyStatus; - DWORD dwOperationStatus; - LPVOID lpNPContext; - -} NOTIFYINFO, *LPNOTIFYINFO; - -typedef struct tagPASSWORD_CACHE_ENTRY { - WORD cbEntry; - WORD cbResource; - WORD cbPassword; - BYTE iEntry; - BYTE nType; - BYTE abResource[1]; -} PASSWORD_CACHE_ENTRY; - -enum NOTIFYTYPE { NotifyAddConnection, - NotifyCancelConnection, - NotifyGetConnectionPerformance }; - -#define HPROVIDER LPVOID -#define WN_NOT_SUPPORTED 0x0001 -#define WN_NOT_CONNECTED ERROR_NOT_CONNECTED -#define WN_BAD_LOCALNAME ERROR_BAD_DEVICE -typedef HPROVIDER *PHPROVIDER; -typedef DWORD (CALLBACK *NOTIFYCALLBACK)(LPNOTIFYINFO,LPVOID); -typedef BOOL (CALLBACK *ENUMPASSWORDPROC)(PASSWORD_CACHE_ENTRY *, DWORD); diff --git a/reactos/lib/mpr/mpr.rc b/reactos/lib/mpr/mpr.rc deleted file mode 100644 index 5cae3c621ff..00000000000 --- a/reactos/lib/mpr/mpr.rc +++ /dev/null @@ -1,57 +0,0 @@ -/* - * ReactOS Cards - * - * Copyright (C) 2003 Filip Navara - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include -#include - -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,3,0,0 - PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "CompanyName", RES_STR_COMPANY_NAME - VALUE "FileDescription", "MPR DLL\0" - VALUE "FileVersion", "0.3.0.0\0" - VALUE "InternalName", "mpr\0" - VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT - VALUE "OriginalFilename", "mpr.dll\0" - VALUE "ProductName", RES_STR_PRODUCT_NAME - VALUE "ProductVersion", RES_STR_PRODUCT_VERSION - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/reactos/lib/mpr/mpr.spec b/reactos/lib/mpr/mpr.spec new file mode 100644 index 00000000000..623bf670505 --- /dev/null +++ b/reactos/lib/mpr/mpr.spec @@ -0,0 +1,116 @@ +# ordinal exports + 1 stub @ + 2 stub @ + 3 stub @ + 4 stub @ + 5 stub @ + 6 stub @ + 7 stub @ + 8 stub @ + 9 stub @ +12 stub @ +13 stub @ +14 stub @ +15 stub @ +16 stub @ +17 stub @ +18 stub @ +19 stub @ +20 stub @ +21 stub @ +22 stdcall @(long) MPR_Alloc +23 stdcall @(ptr long) MPR_ReAlloc +24 stdcall @(ptr) MPR_Free +25 stdcall @(ptr long) _MPR_25 + +@ stdcall -private DllCanUnloadNow() +@ stub DllGetClassObject +@ stdcall MultinetGetConnectionPerformanceA(ptr ptr) +@ stdcall MultinetGetConnectionPerformanceW(ptr ptr) +@ stdcall MultinetGetErrorTextA(long ptr long) +@ stdcall MultinetGetErrorTextW(long ptr long) +@ stdcall NPSAuthenticationDialogA(ptr) +@ stdcall NPSCopyStringA(str ptr ptr) +@ stdcall NPSDeviceGetNumberA(str ptr ptr) +@ stdcall NPSDeviceGetStringA(long long ptr long) +@ stdcall NPSGetProviderHandleA(ptr) +@ stdcall NPSGetProviderNameA(long ptr) +@ stdcall NPSGetSectionNameA(long ptr) +@ stdcall NPSNotifyGetContextA(ptr) +@ stdcall NPSNotifyRegisterA(long ptr) +@ stdcall NPSSetCustomTextA(str) +@ stdcall NPSSetExtendedErrorA(long str) +@ stub PwdChangePasswordA +@ stub PwdChangePasswordW +@ stub PwdGetPasswordStatusA +@ stub PwdGetPasswordStatusW +@ stub PwdSetPasswordStatusA +@ stub PwdSetPasswordStatusW +@ stdcall WNetAddConnection2A(ptr str str long) +@ stdcall WNetAddConnection2W(ptr wstr wstr long) +@ stdcall WNetAddConnection3A(long ptr str str long) +@ stdcall WNetAddConnection3W(long ptr wstr wstr long) +@ stdcall WNetAddConnectionA(str str str) +@ stdcall WNetAddConnectionW(wstr wstr wstr) +@ stdcall WNetCachePassword(str long str long long long) +@ stdcall WNetCancelConnection2A(str long long) +@ stdcall WNetCancelConnection2W(wstr long long) +@ stdcall WNetCancelConnectionA(str long) +@ stdcall WNetCancelConnectionW(wstr long) +@ stdcall WNetCloseEnum(long) +@ stdcall WNetConnectionDialog1A(ptr) +@ stdcall WNetConnectionDialog1W(ptr) +@ stdcall WNetConnectionDialog(long long) +@ stdcall WNetDisconnectDialog1A(ptr) +@ stdcall WNetDisconnectDialog1W(ptr) +@ stdcall WNetDisconnectDialog(long long) +@ stdcall WNetEnumCachedPasswords(str long long ptr long) +@ stdcall WNetEnumResourceA(long ptr ptr ptr) +@ stdcall WNetEnumResourceW(long ptr ptr ptr) +@ stub WNetFormatNetworkNameA +@ stub WNetFormatNetworkNameW +@ stdcall WNetGetCachedPassword(ptr long ptr ptr long) +@ stdcall WNetGetConnectionA(str ptr ptr) +@ stdcall WNetGetConnectionW(wstr ptr ptr) +@ stub WNetGetHomeDirectoryA +@ stub WNetGetHomeDirectoryW +@ stdcall WNetGetLastErrorA(ptr ptr long ptr long) +@ stdcall WNetGetLastErrorW(ptr ptr long ptr long) +@ stdcall WNetGetNetworkInformationA(str ptr) +@ stdcall WNetGetNetworkInformationW(wstr ptr) +@ stdcall WNetGetProviderNameA(long ptr ptr) +@ stdcall WNetGetProviderNameW(long ptr ptr) +@ stdcall WNetGetResourceInformationA(ptr ptr ptr ptr) +@ stdcall WNetGetResourceInformationW(ptr ptr ptr ptr) +@ stdcall WNetGetResourceParentA(ptr ptr ptr) +@ stdcall WNetGetResourceParentW(ptr ptr ptr) +@ stdcall WNetGetUniversalNameA (str long ptr ptr) +@ stdcall WNetGetUniversalNameW (wstr long ptr ptr) +@ stdcall WNetGetUserA(str ptr ptr) +@ stdcall WNetGetUserW(wstr wstr ptr) +@ stdcall WNetLogoffA(str long) +@ stdcall WNetLogoffW(wstr long) +@ stdcall WNetLogonA(str long) +@ stdcall WNetLogonW(wstr long) +@ stdcall WNetOpenEnumA(long long long ptr ptr) +@ stdcall WNetOpenEnumW(long long long ptr ptr) +@ stdcall WNetRemoveCachedPassword(long long long) +@ stdcall WNetRestoreConnectionA(long str) +@ stdcall WNetRestoreConnectionW(long wstr) +@ stdcall WNetSetConnectionA(str long ptr) +@ stdcall WNetSetConnectionW(wstr long ptr) +@ stdcall WNetUseConnectionA(long ptr str str long str ptr ptr) +@ stdcall WNetUseConnectionW(long ptr wstr wstr long wstr ptr ptr) +@ stdcall WNetVerifyPasswordA(str ptr) +@ stdcall WNetVerifyPasswordW(wstr ptr) + +#additions, not in win95 mpr.dll +@ stub WNetRestoreConnection +@ stub WNetLogonNotify +@ stub WNetPasswordChangeNotify +@ stub WNetGetPropertyTextA +@ stub WNetPropertyDialogA +@ stub WNetGetDirectoryTypeA +@ stub WNetFMXGetPermHelp +@ stub WNetFMXEditPerm +@ stub WNetFMXGetPermCaps diff --git a/reactos/lib/mpr/mpr_main.c b/reactos/lib/mpr/mpr_main.c index 9f816759a56..8f5f11dbe16 100644 --- a/reactos/lib/mpr/mpr_main.c +++ b/reactos/lib/mpr/mpr_main.c @@ -18,6 +18,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include + +#include "windef.h" #include "winbase.h" #include "winnetwk.h" #include "wine/debug.h" diff --git a/reactos/lib/mpr/multinet.c b/reactos/lib/mpr/multinet.c index 57d42bbaf0a..aa8cfb8908b 100644 --- a/reactos/lib/mpr/multinet.c +++ b/reactos/lib/mpr/multinet.c @@ -18,7 +18,14 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include +#include + +#include "windef.h" +#include "winbase.h" +#include "winnetwk.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(mpr); /***************************************************************** @@ -35,6 +42,8 @@ DWORD WINAPI MultinetGetConnectionPerformanceA( LPNETRESOURCEA lpNetResource, LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct ) { + FIXME( "(%p, %p): stub\n", lpNetResource, lpNetConnectInfoStruct ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -46,6 +55,8 @@ DWORD WINAPI MultinetGetConnectionPerformanceW( LPNETRESOURCEW lpNetResource, LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct ) { + FIXME( "(%p, %p): stub\n", lpNetResource, lpNetConnectInfoStruct ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -55,7 +66,8 @@ DWORD WINAPI MultinetGetConnectionPerformanceW( */ DWORD WINAPI MultinetGetErrorTextA( DWORD x, DWORD y, DWORD z ) { - return 0; + FIXME( "(%lx, %lx, %lx): stub\n", x, y, z ); + return 0; } /***************************************************************** @@ -63,6 +75,7 @@ DWORD WINAPI MultinetGetErrorTextA( DWORD x, DWORD y, DWORD z ) */ DWORD WINAPI MultinetGetErrorTextW( DWORD x, DWORD y, DWORD z ) { + FIXME( "(%lx, %lx, %lx ): stub\n", x, y, z ); return 0; } diff --git a/reactos/lib/mpr/nps.c b/reactos/lib/mpr/nps.c index ef84d8c4b87..aa9519b822c 100644 --- a/reactos/lib/mpr/nps.c +++ b/reactos/lib/mpr/nps.c @@ -18,14 +18,23 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include -#include "mpr.h" +#include + +#include "windef.h" +#include "winbase.h" +#include "winnetwk.h" +#include "netspi.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(mpr); + /***************************************************************** * NPSAuthenticationDialogA [MPR.@] */ DWORD WINAPI NPSAuthenticationDialogA( LPAUTHDLGSTRUCTA lpAuthDlgStruct ) { + FIXME( "(%p): stub\n", lpAuthDlgStruct ); return WN_NOT_SUPPORTED; } @@ -34,6 +43,7 @@ DWORD WINAPI NPSAuthenticationDialogA( LPAUTHDLGSTRUCTA lpAuthDlgStruct ) */ DWORD WINAPI NPSGetProviderHandleA( PHPROVIDER phProvider ) { + FIXME( "(%p): stub\n", phProvider ); return WN_NOT_SUPPORTED; } @@ -42,6 +52,7 @@ DWORD WINAPI NPSGetProviderHandleA( PHPROVIDER phProvider ) */ DWORD WINAPI NPSGetProviderNameA( HPROVIDER hProvider, LPCSTR *lpszProviderName ) { + FIXME( "(%p, %p): stub\n", hProvider, lpszProviderName ); return WN_NOT_SUPPORTED; } @@ -50,6 +61,7 @@ DWORD WINAPI NPSGetProviderNameA( HPROVIDER hProvider, LPCSTR *lpszProviderName */ DWORD WINAPI NPSGetSectionNameA( HPROVIDER hProvider, LPCSTR *lpszSectionName ) { + FIXME( "(%p, %p): stub\n", hProvider, lpszSectionName ); return WN_NOT_SUPPORTED; } @@ -58,6 +70,7 @@ DWORD WINAPI NPSGetSectionNameA( HPROVIDER hProvider, LPCSTR *lpszSectionName ) */ DWORD WINAPI NPSSetExtendedErrorA( DWORD NetSpecificError, LPSTR lpExtendedErrorText ) { + FIXME( "(%08lx, %s): stub\n", NetSpecificError, debugstr_a(lpExtendedErrorText) ); return WN_NOT_SUPPORTED; } @@ -66,6 +79,7 @@ DWORD WINAPI NPSSetExtendedErrorA( DWORD NetSpecificError, LPSTR lpExtendedError */ VOID WINAPI NPSSetCustomTextA( LPSTR lpCustomErrorText ) { + FIXME( "(%s): stub\n", debugstr_a(lpCustomErrorText) ); } /***************************************************************** @@ -73,6 +87,7 @@ VOID WINAPI NPSSetCustomTextA( LPSTR lpCustomErrorText ) */ DWORD WINAPI NPSCopyStringA( LPCSTR lpString, LPVOID lpBuffer, LPDWORD lpdwBufferSize ) { + FIXME( "(%s, %p, %p): stub\n", debugstr_a(lpString), lpBuffer, lpdwBufferSize ); return WN_NOT_SUPPORTED; } @@ -81,6 +96,7 @@ DWORD WINAPI NPSCopyStringA( LPCSTR lpString, LPVOID lpBuffer, LPDWORD lpdwBuffe */ DWORD WINAPI NPSDeviceGetNumberA( LPSTR lpLocalName, LPDWORD lpdwNumber, LPDWORD lpdwType ) { + FIXME( "(%s, %p, %p): stub\n", debugstr_a(lpLocalName), lpdwNumber, lpdwType ); return WN_NOT_SUPPORTED; } @@ -89,6 +105,7 @@ DWORD WINAPI NPSDeviceGetNumberA( LPSTR lpLocalName, LPDWORD lpdwNumber, LPDWORD */ DWORD WINAPI NPSDeviceGetStringA( DWORD dwNumber, DWORD dwType, LPSTR lpLocalName, LPDWORD lpdwBufferSize ) { + FIXME( "(%ld, %ld, %p, %p): stub\n", dwNumber, dwType, lpLocalName, lpdwBufferSize ); return WN_NOT_SUPPORTED; } @@ -97,6 +114,7 @@ DWORD WINAPI NPSDeviceGetStringA( DWORD dwNumber, DWORD dwType, LPSTR lpLocalNam */ DWORD WINAPI NPSNotifyRegisterA( enum NOTIFYTYPE NotifyType, NOTIFYCALLBACK pfNotifyCallBack ) { + FIXME( "(%d, %p): stub\n", NotifyType, pfNotifyCallBack ); return WN_NOT_SUPPORTED; } @@ -105,6 +123,7 @@ DWORD WINAPI NPSNotifyRegisterA( enum NOTIFYTYPE NotifyType, NOTIFYCALLBACK pfNo */ LPVOID WINAPI NPSNotifyGetContextA( NOTIFYCALLBACK pfNotifyCallBack ) { + FIXME( "(%p): stub\n", pfNotifyCallBack ); return NULL; } diff --git a/reactos/lib/mpr/pwcache.c b/reactos/lib/mpr/pwcache.c index 5c3c5d29122..056e8d452fd 100644 --- a/reactos/lib/mpr/pwcache.c +++ b/reactos/lib/mpr/pwcache.c @@ -2,6 +2,7 @@ * MPR Password Cache functions * * Copyright 1999 Ulrich Weigand + * Copyright 2003 Mike McCormack for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -18,8 +19,35 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include -#include "mpr.h" +#include +#include + +#include "windef.h" +#include "winbase.h" +#include "winnetwk.h" +#include "winreg.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(mpr); + +static const char mpr_key[] = "Software\\Wine\\Wine\\Mpr\\"; + +static LPSTR MPR_GetValueName( LPSTR pbResource, WORD cbResource, BYTE nType ) +{ + LPSTR name; + DWORD i, x = 0; + + /* just a hash so the value name doesn't get too large */ + for( i=0; i> 25)) ^ toupper(pbResource[i]); + + name = HeapAlloc( GetProcessHeap(), 0, 0x10 ); + if( name ) + sprintf( name, "I-%08lX-%02X", x, nType ); + TRACE( "Value is %s\n", name ); + return name; +} + /************************************************************************** * WNetCachePassword [MPR.@] Saves password in cache * @@ -41,7 +69,36 @@ DWORD WINAPI WNetCachePassword( WORD x) { - return WN_NOT_SUPPORTED; + HKEY hkey; + DWORD r; + LPSTR valname; + + WARN( "(%p(%s), %d, %p(%s), %d, %d, 0x%08x): totally insecure\n", + pbResource, debugstr_a(pbResource), cbResource, + pbPassword, debugstr_a(pbPassword), cbPassword, + nType, x ); + + r = RegCreateKeyA( HKEY_CURRENT_USER, mpr_key, &hkey ); + if( r ) + return WN_ACCESS_DENIED; + + valname = MPR_GetValueName( pbResource, cbResource, nType ); + if( valname ) + { + r = RegSetValueExA( hkey, valname, 0, REG_BINARY, + pbPassword, cbPassword ); + if( r ) + r = WN_ACCESS_DENIED; + else + r = WN_SUCCESS; + HeapFree( GetProcessHeap(), 0, valname ); + } + else + r = WN_OUT_OF_MEMORY; + + RegCloseKey( hkey ); + + return r; } /***************************************************************** @@ -50,7 +107,31 @@ DWORD WINAPI WNetCachePassword( UINT WINAPI WNetRemoveCachedPassword( LPSTR pbResource, WORD cbResource, BYTE nType ) { - return WN_NOT_SUPPORTED; + HKEY hkey; + DWORD r; + LPSTR valname; + + WARN( "(%p(%s), %d, %d): totally insecure\n", + pbResource, debugstr_a(pbResource), cbResource, nType ); + + r = RegCreateKeyA( HKEY_CURRENT_USER, mpr_key, &hkey ); + if( r ) + return WN_ACCESS_DENIED; + + valname = MPR_GetValueName( pbResource, cbResource, nType ); + if( valname ) + { + r = RegDeleteValueA( hkey, valname ); + if( r ) + r = WN_ACCESS_DENIED; + else + r = WN_SUCCESS; + HeapFree( GetProcessHeap(), 0, valname ); + } + else + r = WN_OUT_OF_MEMORY; + + return r; } /***************************************************************** @@ -77,7 +158,34 @@ DWORD WINAPI WNetGetCachedPassword( LPWORD pcbPassword, /* [out] Receives size of password */ BYTE nType) /* [in] Type of password to retrieve */ { - return WN_NOT_SUPPORTED; + HKEY hkey; + DWORD r, type = 0, sz; + LPSTR valname; + + WARN( "(%p(%s), %d, %p, %p, %d): stub\n", + pbResource, debugstr_a(pbResource), cbResource, + pbPassword, pcbPassword, nType ); + + r = RegCreateKeyA( HKEY_CURRENT_USER, mpr_key, &hkey ); + if( r ) + return WN_ACCESS_DENIED; + + valname = MPR_GetValueName( pbResource, cbResource, nType ); + if( valname ) + { + sz = *pcbPassword; + r = RegQueryValueExA( hkey, valname, 0, &type, pbPassword, &sz ); + *pcbPassword = sz; + if( r ) + r = WN_ACCESS_DENIED; + else + r = WN_SUCCESS; + HeapFree( GetProcessHeap(), 0, valname ); + } + else + r = WN_OUT_OF_MEMORY; + + return r; } /******************************************************************* @@ -85,6 +193,10 @@ DWORD WINAPI WNetGetCachedPassword( * * NOTES * the parameter count is verifyed + * + * This function is a huge security risk, as virii and such can use + * it to grab all the passwords in the cache. It's bad enough to + * store the passwords (insecurely). * * observed values: * arg1 ptr 0x40xxxxxx -> (no string) @@ -99,5 +211,9 @@ DWORD WINAPI WNetGetCachedPassword( UINT WINAPI WNetEnumCachedPasswords( LPSTR pbPrefix, WORD cbPrefix, BYTE nType, ENUMPASSWORDPROC enumPasswordProc, DWORD x) { + WARN( "(%p(%s), %d, %d, %p, 0x%08lx): don't implement this\n", + pbPrefix, debugstr_a(pbPrefix), cbPrefix, + nType, enumPasswordProc, x ); + return WN_NOT_SUPPORTED; } diff --git a/reactos/lib/mpr/winehq2ros.patch b/reactos/lib/mpr/winehq2ros.patch new file mode 100644 index 00000000000..e70536c3e98 --- /dev/null +++ b/reactos/lib/mpr/winehq2ros.patch @@ -0,0 +1,15 @@ +Index: wnet.c +=================================================================== +RCS file: /home/wine/wine/dlls/mpr/wnet.c,v +retrieving revision 1.14 +diff -u -r1.14 wnet.c +--- wnet.c 5 Sep 2003 23:08:36 -0000 1.14 ++++ wnet.c 1 Feb 2004 19:48:21 -0000 +@@ -30,6 +30,7 @@ + + #include "windef.h" + #include "winbase.h" ++#include "winuser.h" + #include "winnls.h" + #include "winnetwk.h" + #include "wine/debug.h" diff --git a/reactos/lib/mpr/wnet.c b/reactos/lib/mpr/wnet.c index 2a819d9694c..0615f127887 100644 --- a/reactos/lib/mpr/wnet.c +++ b/reactos/lib/mpr/wnet.c @@ -18,11 +18,25 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "config.h" + #include +#include #include #include -#include -#include +#ifdef HAVE_UNISTD_H +# include +#endif + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "winnls.h" +#include "winnetwk.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(mpr); + /* * Browsing Functions @@ -34,6 +48,9 @@ DWORD WINAPI WNetOpenEnumA( DWORD dwScope, DWORD dwType, DWORD dwUsage, LPNETRESOURCEA lpNet, LPHANDLE lphEnum ) { + FIXME( "(%08lX, %08lX, %08lX, %p, %p): stub\n", + dwScope, dwType, dwUsage, lpNet, lphEnum ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -44,6 +61,9 @@ DWORD WINAPI WNetOpenEnumA( DWORD dwScope, DWORD dwType, DWORD dwUsage, DWORD WINAPI WNetOpenEnumW( DWORD dwScope, DWORD dwType, DWORD dwUsage, LPNETRESOURCEW lpNet, LPHANDLE lphEnum ) { + FIXME( "(%08lX, %08lX, %08lX, %p, %p): stub\n", + dwScope, dwType, dwUsage, lpNet, lphEnum ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -54,6 +74,9 @@ DWORD WINAPI WNetOpenEnumW( DWORD dwScope, DWORD dwType, DWORD dwUsage, DWORD WINAPI WNetEnumResourceA( HANDLE hEnum, LPDWORD lpcCount, LPVOID lpBuffer, LPDWORD lpBufferSize ) { + FIXME( "(%p, %p, %p, %p): stub\n", + hEnum, lpcCount, lpBuffer, lpBufferSize ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -64,6 +87,9 @@ DWORD WINAPI WNetEnumResourceA( HANDLE hEnum, LPDWORD lpcCount, DWORD WINAPI WNetEnumResourceW( HANDLE hEnum, LPDWORD lpcCount, LPVOID lpBuffer, LPDWORD lpBufferSize ) { + FIXME( "(%p, %p, %p, %p): stub\n", + hEnum, lpcCount, lpBuffer, lpBufferSize ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -73,6 +99,8 @@ DWORD WINAPI WNetEnumResourceW( HANDLE hEnum, LPDWORD lpcCount, */ DWORD WINAPI WNetCloseEnum( HANDLE hEnum ) { + FIXME( "(%p): stub\n", hEnum ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -84,6 +112,9 @@ DWORD WINAPI WNetGetResourceInformationA( LPNETRESOURCEA lpNetResource, LPVOID lpBuffer, LPDWORD cbBuffer, LPSTR *lplpSystem ) { + FIXME( "(%p, %p, %p, %p): stub\n", + lpNetResource, lpBuffer, cbBuffer, lplpSystem ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -95,6 +126,9 @@ DWORD WINAPI WNetGetResourceInformationW( LPNETRESOURCEW lpNetResource, LPVOID lpBuffer, LPDWORD cbBuffer, LPWSTR *lplpSystem ) { + FIXME( "(%p, %p, %p, %p): stub\n", + lpNetResource, lpBuffer, cbBuffer, lplpSystem ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -105,6 +139,9 @@ DWORD WINAPI WNetGetResourceInformationW( LPNETRESOURCEW lpNetResource, DWORD WINAPI WNetGetResourceParentA( LPNETRESOURCEA lpNetResource, LPVOID lpBuffer, LPDWORD lpBufferSize ) { + FIXME( "(%p, %p, %p): stub\n", + lpNetResource, lpBuffer, lpBufferSize ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -115,6 +152,9 @@ DWORD WINAPI WNetGetResourceParentA( LPNETRESOURCEA lpNetResource, DWORD WINAPI WNetGetResourceParentW( LPNETRESOURCEW lpNetResource, LPVOID lpBuffer, LPDWORD lpBufferSize ) { + FIXME( "(%p, %p, %p): stub\n", + lpNetResource, lpBuffer, lpBufferSize ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -131,6 +171,9 @@ DWORD WINAPI WNetGetResourceParentW( LPNETRESOURCEW lpNetResource, DWORD WINAPI WNetAddConnectionA( LPCSTR lpRemoteName, LPCSTR lpPassword, LPCSTR lpLocalName ) { + FIXME( "(%s, %p, %s): stub\n", + debugstr_a(lpRemoteName), lpPassword, debugstr_a(lpLocalName) ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -141,6 +184,9 @@ DWORD WINAPI WNetAddConnectionA( LPCSTR lpRemoteName, LPCSTR lpPassword, DWORD WINAPI WNetAddConnectionW( LPCWSTR lpRemoteName, LPCWSTR lpPassword, LPCWSTR lpLocalName ) { + FIXME( "(%s, %p, %s): stub\n", + debugstr_w(lpRemoteName), lpPassword, debugstr_w(lpLocalName) ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -152,6 +198,9 @@ DWORD WINAPI WNetAddConnection2A( LPNETRESOURCEA lpNetResource, LPCSTR lpPassword, LPCSTR lpUserID, DWORD dwFlags ) { + FIXME( "(%p, %p, %s, 0x%08lX): stub\n", + lpNetResource, lpPassword, debugstr_a(lpUserID), dwFlags ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -163,6 +212,9 @@ DWORD WINAPI WNetAddConnection2W( LPNETRESOURCEW lpNetResource, LPCWSTR lpPassword, LPCWSTR lpUserID, DWORD dwFlags ) { + FIXME( "(%p, %p, %s, 0x%08lX): stub\n", + lpNetResource, lpPassword, debugstr_w(lpUserID), dwFlags ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -174,6 +226,9 @@ DWORD WINAPI WNetAddConnection3A( HWND hwndOwner, LPNETRESOURCEA lpNetResource, LPCSTR lpPassword, LPCSTR lpUserID, DWORD dwFlags ) { + FIXME( "(%p, %p, %p, %s, 0x%08lX), stub\n", + hwndOwner, lpNetResource, lpPassword, debugstr_a(lpUserID), dwFlags ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -185,6 +240,9 @@ DWORD WINAPI WNetAddConnection3W( HWND hwndOwner, LPNETRESOURCEW lpNetResource, LPCWSTR lpPassword, LPCWSTR lpUserID, DWORD dwFlags ) { + FIXME( "(%p, %p, %p, %s, 0x%08lX), stub\n", + hwndOwner, lpNetResource, lpPassword, debugstr_w(lpUserID), dwFlags ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -197,6 +255,10 @@ DWORD WINAPI WNetUseConnectionA( HWND hwndOwner, LPNETRESOURCEA lpNetResource, LPSTR lpAccessName, LPDWORD lpBufferSize, LPDWORD lpResult ) { + FIXME( "(%p, %p, %p, %s, 0x%08lX, %s, %p, %p), stub\n", + hwndOwner, lpNetResource, lpPassword, debugstr_a(lpUserID), dwFlags, + debugstr_a(lpAccessName), lpBufferSize, lpResult ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -209,6 +271,10 @@ DWORD WINAPI WNetUseConnectionW( HWND hwndOwner, LPNETRESOURCEW lpNetResource, LPWSTR lpAccessName, LPDWORD lpBufferSize, LPDWORD lpResult ) { + FIXME( "(%p, %p, %p, %s, 0x%08lX, %s, %p, %p), stub\n", + hwndOwner, lpNetResource, lpPassword, debugstr_w(lpUserID), dwFlags, + debugstr_w(lpAccessName), lpBufferSize, lpResult ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -218,7 +284,9 @@ DWORD WINAPI WNetUseConnectionW( HWND hwndOwner, LPNETRESOURCEW lpNetResource, */ DWORD WINAPI WNetCancelConnectionA( LPCSTR lpName, BOOL fForce ) { - return WN_SUCCESS; + FIXME( "(%s, %d), stub\n", debugstr_a(lpName), fForce ); + + return WN_SUCCESS; } /********************************************************************* @@ -226,6 +294,8 @@ DWORD WINAPI WNetCancelConnectionA( LPCSTR lpName, BOOL fForce ) */ DWORD WINAPI WNetCancelConnectionW( LPCWSTR lpName, BOOL fForce ) { + FIXME( "(%s, %d), stub\n", debugstr_w(lpName), fForce ); + return WN_SUCCESS; } @@ -234,6 +304,8 @@ DWORD WINAPI WNetCancelConnectionW( LPCWSTR lpName, BOOL fForce ) */ DWORD WINAPI WNetCancelConnection2A( LPCSTR lpName, DWORD dwFlags, BOOL fForce ) { + FIXME( "(%s, %08lX, %d), stub\n", debugstr_a(lpName), dwFlags, fForce ); + return WN_SUCCESS; } @@ -242,7 +314,9 @@ DWORD WINAPI WNetCancelConnection2A( LPCSTR lpName, DWORD dwFlags, BOOL fForce ) */ DWORD WINAPI WNetCancelConnection2W( LPCWSTR lpName, DWORD dwFlags, BOOL fForce ) { - return WN_SUCCESS; + FIXME( "(%s, %08lX, %d), stub\n", debugstr_w(lpName), dwFlags, fForce ); + + return WN_SUCCESS; } /***************************************************************** @@ -250,6 +324,8 @@ DWORD WINAPI WNetCancelConnection2W( LPCWSTR lpName, DWORD dwFlags, BOOL fForce */ DWORD WINAPI WNetRestoreConnectionA( HWND hwndOwner, LPSTR lpszDevice ) { + FIXME( "(%p, %s), stub\n", hwndOwner, debugstr_a(lpszDevice) ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -259,6 +335,8 @@ DWORD WINAPI WNetRestoreConnectionA( HWND hwndOwner, LPSTR lpszDevice ) */ DWORD WINAPI WNetRestoreConnectionW( HWND hwndOwner, LPWSTR lpszDevice ) { + FIXME( "(%p, %s), stub\n", hwndOwner, debugstr_w(lpszDevice) ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -278,7 +356,8 @@ DWORD WINAPI WNetGetConnectionA( LPCSTR lpLocalName, { char label[40]; - if (lpLocalName[1] == ':') + TRACE( "local %s\n", lpLocalName ); + if (lpLocalName[1] == ':') { switch(GetDriveTypeA(lpLocalName)) { @@ -296,6 +375,7 @@ DWORD WINAPI WNetGetConnectionA( LPCSTR lpLocalName, case DRIVE_REMOVABLE: case DRIVE_FIXED: case DRIVE_CDROM: + TRACE("file is local\n"); return WN_NOT_CONNECTED; default: return WN_BAD_LOCALNAME; @@ -337,6 +417,8 @@ DWORD WINAPI WNetGetConnectionW( LPCWSTR lpLocalName, DWORD WINAPI WNetSetConnectionA( LPCSTR lpName, DWORD dwProperty, LPVOID pvValue ) { + FIXME( "(%s, %08lX, %p): stub\n", debugstr_a(lpName), dwProperty, pvValue ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -347,6 +429,8 @@ DWORD WINAPI WNetSetConnectionA( LPCSTR lpName, DWORD dwProperty, DWORD WINAPI WNetSetConnectionW( LPCWSTR lpName, DWORD dwProperty, LPVOID pvValue ) { + FIXME( "(%s, %08lX, %p): stub\n", debugstr_w(lpName), dwProperty, pvValue ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -357,6 +441,9 @@ DWORD WINAPI WNetSetConnectionW( LPCWSTR lpName, DWORD dwProperty, DWORD WINAPI WNetGetUniversalNameA ( LPCSTR lpLocalPath, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpBufferSize ) { + FIXME( "(%s, 0x%08lX, %p, %p): stub\n", + debugstr_a(lpLocalPath), dwInfoLevel, lpBuffer, lpBufferSize); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -367,6 +454,9 @@ DWORD WINAPI WNetGetUniversalNameA ( LPCSTR lpLocalPath, DWORD dwInfoLevel, DWORD WINAPI WNetGetUniversalNameW ( LPCWSTR lpLocalPath, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpBufferSize ) { + FIXME( "(%s, 0x%08lX, %p, %p): stub\n", + debugstr_w(lpLocalPath), dwInfoLevel, lpBuffer, lpBufferSize); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -393,6 +483,9 @@ DWORD WINAPI WNetGetUserA( LPCSTR lpName, LPSTR lpUserID, LPDWORD lpBufferSize ) */ DWORD WINAPI WNetGetUserW( LPCWSTR lpName, LPWSTR lpUserID, LPDWORD lpBufferSize ) { + FIXME( "(%s, %p, %p): mostly stub\n", + debugstr_w(lpName), lpUserID, lpBufferSize ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -402,6 +495,8 @@ DWORD WINAPI WNetGetUserW( LPCWSTR lpName, LPWSTR lpUserID, LPDWORD lpBufferSize */ DWORD WINAPI WNetConnectionDialog( HWND hwnd, DWORD dwType ) { + FIXME( "(%p, %08lX): stub\n", hwnd, dwType ); + SetLastError(WN_NO_NETWORK); return ERROR_NO_NETWORK; } @@ -411,6 +506,8 @@ DWORD WINAPI WNetConnectionDialog( HWND hwnd, DWORD dwType ) */ DWORD WINAPI WNetConnectionDialog1A( LPCONNECTDLGSTRUCTA lpConnDlgStruct ) { + FIXME( "(%p): stub\n", lpConnDlgStruct ); + SetLastError(WN_NO_NETWORK); return ERROR_NO_NETWORK; } @@ -420,7 +517,8 @@ DWORD WINAPI WNetConnectionDialog1A( LPCONNECTDLGSTRUCTA lpConnDlgStruct ) */ DWORD WINAPI WNetConnectionDialog1W( LPCONNECTDLGSTRUCTW lpConnDlgStruct ) { - + FIXME( "(%p): stub\n", lpConnDlgStruct ); + SetLastError(WN_NO_NETWORK); return ERROR_NO_NETWORK; } @@ -430,6 +528,8 @@ DWORD WINAPI WNetConnectionDialog1W( LPCONNECTDLGSTRUCTW lpConnDlgStruct ) */ DWORD WINAPI WNetDisconnectDialog( HWND hwnd, DWORD dwType ) { + FIXME( "(%p, %08lX): stub\n", hwnd, dwType ); + SetLastError(WN_NO_NETWORK); return ERROR_NO_NETWORK; } @@ -439,6 +539,8 @@ DWORD WINAPI WNetDisconnectDialog( HWND hwnd, DWORD dwType ) */ DWORD WINAPI WNetDisconnectDialog1A( LPDISCDLGSTRUCTA lpConnDlgStruct ) { + FIXME( "(%p): stub\n", lpConnDlgStruct ); + SetLastError(WN_NO_NETWORK); return ERROR_NO_NETWORK; } @@ -448,6 +550,8 @@ DWORD WINAPI WNetDisconnectDialog1A( LPDISCDLGSTRUCTA lpConnDlgStruct ) */ DWORD WINAPI WNetDisconnectDialog1W( LPDISCDLGSTRUCTW lpConnDlgStruct ) { + FIXME( "(%p): stub\n", lpConnDlgStruct ); + SetLastError(WN_NO_NETWORK); return ERROR_NO_NETWORK; } @@ -459,6 +563,9 @@ DWORD WINAPI WNetGetLastErrorA( LPDWORD lpError, LPSTR lpErrorBuf, DWORD nErrorBufSize, LPSTR lpNameBuf, DWORD nNameBufSize ) { + FIXME( "(%p, %p, %ld, %p, %ld): stub\n", + lpError, lpErrorBuf, nErrorBufSize, lpNameBuf, nNameBufSize ); + SetLastError(WN_NO_NETWORK); return ERROR_NO_NETWORK; } @@ -470,6 +577,9 @@ DWORD WINAPI WNetGetLastErrorW( LPDWORD lpError, LPWSTR lpErrorBuf, DWORD nErrorBufSize, LPWSTR lpNameBuf, DWORD nNameBufSize ) { + FIXME( "(%p, %p, %ld, %p, %ld): stub\n", + lpError, lpErrorBuf, nErrorBufSize, lpNameBuf, nNameBufSize ); + SetLastError(WN_NO_NETWORK); return ERROR_NO_NETWORK; } @@ -480,6 +590,8 @@ DWORD WINAPI WNetGetLastErrorW( LPDWORD lpError, DWORD WINAPI WNetGetNetworkInformationA( LPCSTR lpProvider, LPNETINFOSTRUCT lpNetInfoStruct ) { + FIXME( "(%s, %p): stub\n", debugstr_a(lpProvider), lpNetInfoStruct ); + SetLastError(WN_NO_NETWORK); return ERROR_NO_NETWORK; } @@ -490,6 +602,8 @@ DWORD WINAPI WNetGetNetworkInformationA( LPCSTR lpProvider, DWORD WINAPI WNetGetNetworkInformationW( LPCWSTR lpProvider, LPNETINFOSTRUCT lpNetInfoStruct ) { + FIXME( "(%s, %p): stub\n", debugstr_w(lpProvider), lpNetInfoStruct ); + SetLastError(WN_NO_NETWORK); return ERROR_NO_NETWORK; } @@ -500,6 +614,8 @@ DWORD WINAPI WNetGetNetworkInformationW( LPCWSTR lpProvider, DWORD WINAPI WNetGetProviderNameA( DWORD dwNetType, LPSTR lpProvider, LPDWORD lpBufferSize ) { + FIXME( "(%ld, %p, %p): stub\n", dwNetType, lpProvider, lpBufferSize ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; } @@ -510,6 +626,8 @@ DWORD WINAPI WNetGetProviderNameA( DWORD dwNetType, DWORD WINAPI WNetGetProviderNameW( DWORD dwNetType, LPWSTR lpProvider, LPDWORD lpBufferSize ) { + FIXME( "(%ld, %p, %p): stub\n", dwNetType, lpProvider, lpBufferSize ); + SetLastError(WN_NO_NETWORK); return WN_NO_NETWORK; }