Index: dll/win32/mpr/CMakeLists.txt =================================================================== --- dll/win32/mpr/CMakeLists.txt (revision 75440) +++ dll/win32/mpr/CMakeLists.txt (working copy) @@ -23,6 +23,6 @@ set_module_type(mpr win32dll) target_link_libraries(mpr wine) -add_importlibs(mpr advapi32 user32 msvcrt kernel32 ntdll) +add_importlibs(mpr advapi32 netplwiz user32 msvcrt kernel32 ntdll) add_pch(mpr precomp.h SOURCE) add_cd_file(TARGET mpr DESTINATION reactos/system32 FOR all) Index: dll/win32/mpr/wnet.c =================================================================== --- dll/win32/mpr/wnet.c (revision 75440) +++ dll/win32/mpr/wnet.c (working copy) @@ -2710,10 +2710,14 @@ */ DWORD WINAPI WNetDisconnectDialog( HWND hwnd, DWORD dwType ) { - FIXME( "(%p, %08X): stub\n", hwnd, dwType ); + DISCDLGSTRUCTW disconn_dlg; - SetLastError(WN_NO_NETWORK); - return WN_NO_NETWORK; + ZeroMemory(&disconn_dlg, sizeof(disconn_dlg)); + + disconn_dlg.cbStructure = sizeof(disconn_dlg); + disconn_dlg.hwndOwner = hwnd; + + return WNetDisconnectDialog1W(&disconn_dlg); } /********************************************************************* @@ -2732,10 +2736,28 @@ */ DWORD WINAPI WNetDisconnectDialog1W( LPDISCDLGSTRUCTW lpConnDlgStruct ) { - FIXME( "(%p): stub\n", lpConnDlgStruct ); - - SetLastError(WN_NO_NETWORK); - return WN_NO_NETWORK; + DWORD ret; + HRESULT hr; + HRESULT WINAPI SHDisconnectNetDrives(PVOID Unused); + + hr = SHDisconnectNetDrives(NULL); + + if (hr == S_OK) + ret = NO_ERROR; + else if (hr == -1) + ret = ERROR_CANCELLED; + else if (hr == ERROR_OPEN_FILES) + ret = ERROR_OPEN_FILES; + else if (hr == ERROR_BUSY) + ret = ERROR_BUSY; + else if (hr == ERROR_NO_NETWORK) + ret = ERROR_NO_NETWORK; + else if (hr == ERROR_NOT_ENOUGH_MEMORY) + ret = ERROR_NOT_ENOUGH_MEMORY; + else + ret = ERROR_EXTENDED_ERROR; + TRACE("WNetDisconnectDialog1W Returned %d\n", ret); + return ret; } /*********************************************************************