https://bugs.winehq.org/show_bug.cgi?id=41034
Bug ID: 41034 Summary: TomTom MyDrive Connect needs implementation of KERNEL32.dll.SetVolumeMountPointW and others Product: Wine Version: 1.9.15 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: kernel32 Assignee: wine-bugs@winehq.org Reporter: h.mth@web.de Distribution: ---
Created attachment 55207 --> https://bugs.winehq.org/attachment.cgi?id=55207 snipped of application log
Starting TomTom MyDrive Connect with Wine 1.9.15 its tray icon appears. Though, left-, right- and double-click will not present its context(drop-down) menu.
Attached is a snipped of the application log. The application tries to mount a volume at 'E:', then queries NotifyAddrChange multiple times and finally retries to mount volume again. This goes on endlessly.
https://bugs.winehq.org/show_bug.cgi?id=41034
winetest@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |austinenglish@gmail.com, | |winetest@luukku.com
--- Comment #1 from winetest@luukku.com --- Doesnt look too bad to implement.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365561(v=vs.85).a...
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #2 from Hanno Meyer-Thurow h.mth@web.de --- Functions reported in log are:
fixme:win:RegisterDeviceNotificationW (hwnd=0x10088, filter=0x33cfb4,flags=0x00000000) returns a fake device notification handle!
fixme:iphlpapi:NotifyAddrChange (Handle (nil), overlapped (nil)): stub
fixme:volume:SetVolumeMountPointW (L"E:\", L"\\?\Volume{00000000-ab48-4d46-0 000-000000000000}\"), stub!
fixme:volume:DeleteVolumeMountPointW (L""), stub!
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #3 from Hanno Meyer-Thurow h.mth@web.de --- To connect via usb network to VIA 135 device one needs to enable following kernel configurations:
CONFIG_USB_NET_DRIVERS=y CONFIG_USB_USBNET=y CONFIG_USB_NET_CDCETHER=y CONFIG_USB_NET_CDC_NCM=y CONFIG_USB_NET_CDC_SUBSET_ENABLE=y CONFIG_USB_NET_CDC_SUBSET=y CONFIG_RT2800USB=y CONFIG_RT2800USB_RT35XX=y CONFIG_RT2X00_LIB_USB=y
Connect device, check 'ifconfig -a' for new device and execute:
~ # ip addr add 169.254.255.2 dev <device> ~ # ip route add 169.254.255.0/24 dev <device>
Finally ping device address '169.254.255.1'.
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #4 from Hanno Meyer-Thurow h.mth@web.de --- Just wondering about the following:
Had a look at the TomTom installation. It ships with d3dcompiler_47.dll. Which means it requires D3D11 code. I wonder if all necessary D3D11 code is implemented.
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #5 from shcd@hotmail.com --- Created attachment 57336 --> https://bugs.winehq.org/attachment.cgi?id=57336 Unhandled exception: unimplemented function KERNEL32.dll.SetVolumeMountPointW called in 32-bit code (0x7b83936c).
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #6 from winetest@luukku.com --- (In reply to shcd from comment #5)
Created attachment 57336 [details] Unhandled exception: unimplemented function KERNEL32.dll.SetVolumeMountPointW called in 32-bit code (0x7b83936c).
This is expected since the function is not implemented. You need to upgrade your wine. It's 2-3 years behind in development.
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #7 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 57894 --> https://bugs.winehq.org/attachment.cgi?id=57894 implementation of SetVolumeMountPointW by Johannes Obermayr
I wonder if it needs to be polished. At least it has this follow up FIXME:
Maybe the device detection works if wine's MountManager supports MOUNTMGR_CREATE_POINT_INPUT: - fixme:mountmgr:mountmgr_ioctl ioctl 6dc000 not supported - http://doxygen.reactos.org/d9/df4/drivers_2filters_2mountmgr_2device_8c_sour...
And then, there are still the other functions not implemented.
[0] https://www.winehq.org/pipermail/wine-patches/2012-November/120160.html [1] https://github.com/PlayOnLinux/wine-patches/blob/master/custom/TomTomHOME/se...
https://bugs.winehq.org/show_bug.cgi?id=41034
Alexey Slepov sir-lexa@yandex.ru changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sir-lexa@yandex.ru
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #8 from Hanno Meyer-Thurow h.mth@web.de --- There are patches for NotifyAddrChange[0][1][2] from 2013 that needs little adjustments for 3.7. Next to that I implemented the mountmgr ioctl MOUNTMGR_CREATE_POINT_INPUT.
With these TomTom MyDrive Connect starts, tray icon and settings dialog work. Though, there is no wlan connection found via 'WlanEnumInterfaces/WlanRegisterNotification'.
A pity, these patches were not applied.
[0] https://www.winehq.org/pipermail/wine-patches/2013-August/125696.html [1] https://www.winehq.org/pipermail/wine-patches/2013-August/125697.html [2] https://www.winehq.org/pipermail/wine-patches/2013-August/125698.html
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #9 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 61277 --> https://bugs.winehq.org/attachment.cgi?id=61277 Implementation of mountmgr ioctl IOCTL_MOUNTMGR_CREATE_POINT
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #10 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 61278 --> https://bugs.winehq.org/attachment.cgi?id=61278 Implementation of NotifyAddrChange part 1 from Erich E. Hoover
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #11 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 61279 --> https://bugs.winehq.org/attachment.cgi?id=61279 Implementation of NotifyAddrChange part 2 from Erich E. Hoover
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #12 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 61280 --> https://bugs.winehq.org/attachment.cgi?id=61280 Implementation of NotifyAddrChange part 3 from Erich E. Hoover
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #13 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 61281 --> https://bugs.winehq.org/attachment.cgi?id=61281 Implementation of NotifyAddrChange: build fixes for 3.7
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #14 from Hanno Meyer-Thurow h.mth@web.de --- In patch "Implementation of NotifyAddrChange part 1 from Erich E. Hoover" the ws2 test should be replaced. (test_sioAddressListChange2 -> test_sioAddressListChange)
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #15 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 61283 --> https://bugs.winehq.org/attachment.cgi?id=61283 Show TomTom MyDrive Connect (somewhat) running in linux.
https://bugs.winehq.org/show_bug.cgi?id=41034
Hanno Meyer-Thurow h.mth@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|1.9.15 |3.7
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #16 from Hanno Meyer-Thurow h.mth@web.de --- Wine Staging 3.7 is able to login; patches can be applied. Without ip setup, simply connecting device crashes MyDrive Connect. Let's see if debugging helps.
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #17 from Hanno Meyer-Thurow h.mth@web.de --- Now I see this error: 0035:err:iphlpapi:NotifyAddrChange Could not create interface monitoring socket.
I wonder what is wrong with this: SERVER_START_REQ( create_socket ) { req->family = PF_NETLINK; req->type = SOCK_RAW; req->protocol = NETLINK_ROUTE; req->access = GENERIC_READ|SYNCHRONIZE; req->attributes = OBJ_INHERIT; req->flags = WSA_FLAG_OVERLAPPED; status = wine_server_call( req ); *h = wine_server_ptr_handle( reply->handle ); } SERVER_END_REQ;
https://bugs.winehq.org/show_bug.cgi?id=41034
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Summary|TomTom MyDrive Connect |TomTom MyDrive Connect |needs implementation of |needs implementation of |KERNEL32.dll.SetVolumeMount |KERNEL32.dll.SetVolumeMount |PointW and others |PointW Status|UNCONFIRMED |NEW Ever confirmed|0 |1
--- Comment #18 from Anastasius Focht focht@gmx.net --- Hello folks,
could you stop abusing this ticket for multiple unrelated issues?
--- quote --- Each bug report should cover one problem. If there are additional problems with the same application or game, file separate reports for each. --- quote ---
Meta-bugs a la "make app foobar to work" are not allowed. Create separate tickets for each issue and make sure you search for existing ones (potential dupes) prior.
Regards
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #19 from Hanno Meyer-Thurow h.mth@web.de --- Opened bug 45116 for iphlpapi.dll.NotifyAddrChange.
https://bugs.winehq.org/show_bug.cgi?id=41034
tokktokk fdsfgs@krutt.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fdsfgs@krutt.org
https://bugs.winehq.org/show_bug.cgi?id=41034
Hanno Meyer-Thurow h.mth@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #61281|0 |1 is obsolete| |
https://bugs.winehq.org/show_bug.cgi?id=41034
Hanno Meyer-Thurow h.mth@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #61280|0 |1 is obsolete| |
https://bugs.winehq.org/show_bug.cgi?id=41034
Hanno Meyer-Thurow h.mth@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #61279|0 |1 is obsolete| |
https://bugs.winehq.org/show_bug.cgi?id=41034
Hanno Meyer-Thurow h.mth@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #61278|0 |1 is obsolete| |
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #20 from Hanno Meyer-Thurow h.mth@web.de --- Just had another look at SetVolumeMountPointW. Does the anonymous struct 'input' need to be freed from heap like that? (HeapFree(GetProcessHeap(), 0, &input);)
Is that Wine specific? Otherwise that struct is on the stack and not on heap, isn't it? Doesn't that cause a silent heap corruption as-is? Or is that call to HeapFree with that address simply ignored?
https://bugs.winehq.org/show_bug.cgi?id=41034
--- Comment #21 from Hanno Meyer-Thurow h.mth@web.de --- Patch for mountmgr create point ioctl is missing call to set_mount_point_id. mountmgr.sys:device.c sets disk_device->unix_mount as unique id. How should I generate that within mountmgr.sys:mountmgr.c?
https://bugs.winehq.org/show_bug.cgi?id=41034
Hanno Meyer-Thurow h.mth@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #57894|0 |1 is obsolete| |
--- Comment #22 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 61369 --> https://bugs.winehq.org/attachment.cgi?id=61369 implementation of SetVolumeMountPointW by Johannes Obermayr (updated)
v2: Remove call to HeapFree. v2: Add null-terminator for WCHAR arrays to keep mountmgr ioctl simple.
https://bugs.winehq.org/show_bug.cgi?id=41034
Hanno Meyer-Thurow h.mth@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #61277|0 |1 is obsolete| |
--- Comment #23 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 61372 --> https://bugs.winehq.org/attachment.cgi?id=61372 Implementation of mountmgr ioctl IOCTL_MOUNTMGR_CREATE_POINT (v2)
v2: generate mount id v2: fix crash
I still wonder, if this behaves as it should. Application thread tries to mount volume half a dozen of times after attaching device and then keeps on hold for next event.
https://bugs.winehq.org/show_bug.cgi?id=41034
Hanno Meyer-Thurow h.mth@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #61369|0 |1 is obsolete| |
--- Comment #24 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 61374 --> https://bugs.winehq.org/attachment.cgi?id=61374 Implementation of SetVolumeMountPointW by Johannes Obermayr (v3)
v2: Remove call to HeapFree. v2: Add null-terminator for WCHAR arrays to keep mountmgr ioctl simple. v3: Actually do the right thing.
What is not happening, is, that the drive is not physically created on disk. There is no ~/.wine-staging/drive_e nor ~/.wine-staging/dosdevices/e: created. That would need a link to mountmgr.sys:device.c or so. Any pointers anyone?
https://bugs.winehq.org/show_bug.cgi?id=41034
Hanno Meyer-Thurow h.mth@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #61372|0 |1 is obsolete| |
--- Comment #25 from Hanno Meyer-Thurow h.mth@web.de --- Created attachment 61375 --> https://bugs.winehq.org/attachment.cgi?id=61375 Implementation of mountmgr ioctl IOCTL_MOUNTMGR_CREATE_POINT (v3)
v2: generate mount id v2: fix crash v3: actually do the right thing
https://bugs.winehq.org/show_bug.cgi?id=41034
Andreas Gnau Rondom@Rondom.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |Rondom@Rondom.de
https://bugs.winehq.org/show_bug.cgi?id=41034
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|TomTom MyDrive Connect |TomTom MyDrive Connect 4.x |needs implementation of |needs implementation of |KERNEL32.dll.SetVolumeMount |KERNEL32.dll.SetVolumeMount |PointW |PointW URL| |https://web.archive.org/web | |/20180624025612/http://cdn. | |sa.services.tomtom.com/stat | |ic/sa/Windows/InstallTomTom | |MyDriveConnect.exe Keywords| |download
--- Comment #26 from Anastasius Focht focht@gmx.net --- Hello folks,
adding stable download from Internet archive for the installer (4.2.x)
https://web.archive.org/web/20180624025612/http://cdn.sa.services.tomtom.com...
Obviously still present.
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/kernel32/volume.c#l21...
$ sha1sum InstallTomTomMyDriveConnect.exe 5e3ee07c72d66e54b5860a66793fbe5cae36027e InstallTomTomMyDriveConnect.exe
$ du -sh InstallTomTomMyDriveConnect.exe 66M InstallTomTomMyDriveConnect.exe
$ wine --version wine-4.4
Regards