Well I finally know which part of the driver stack is no longer functional. After spending hours reading through the "Hardware Dev Center" details I determined that a log of the device install procedure exists in c:\windows\inf\setupapi.dev.log. In my case this clearly shows that the problem lies with "usbser.sys":
>>> [Device Install (Hardware initiated) - USB\VID_06E0&PID_F104\5&711e76&0&5]
>>> Section start 2019/01/30 16:03:15.745
dvi: {Build Driver List} 16:03:15.767
dvi: Searching for hardware ID(s):
dvi: usb\vid_06e0&pid_f104&rev_0100
dvi: usb\vid_06e0&pid_f104
dvi: Searching for compatible ID(s):
dvi: usb\class_ff&subclass_ff&prot_ff
dvi: usb\class_ff&subclass_ff
dvi: usb\class_ff
dvi: Created Driver Node:
dvi: HardwareID - USB\Vid_06e0&Pid_f104
dvi: InfName - C:\WINDOWS\System32\DriverStore\FileRepository\mdmcpq.inf_amd64_81d387a9bb4a4cc8\mdmcpq.inf
dvi: DevDesc - MultiTech MT5634ZBA-USB 56K Modem
dvi: Section - Modem14.NT
dvi: Rank - 0x00ff0001
dvi: Signer Score - INBOX
dvi: DrvDate - 03/09/2000
dvi: Version - 10.0.17134.1
dvi: {Build Driver List - exit(0x00000000)} 16:03:15.785
dvi: {DIF_SELECTBESTCOMPATDRV} 16:03:15.785
dvi: Using exported function 'ClassInstall32' in module 'C:\WINDOWS\system32\mdminst.dll'.
dvi: Class installer == mdminst.dll,ClassInstall32
dvi: Class installer: Enter 16:03:15.793
dvi: Class installer: Exit
dvi: Default installer: Enter 16:03:15.794
dvi: {Select Best Driver}
dvi: Class GUID of device changed to: {4d36e96d-e325-11ce-bfc1-08002be10318}.
dvi: {DIF_DESTROYPRIVATEDATA} 16:03:15.795
dvi: Class installer: Enter 16:03:15.795
dvi: Class installer: Exit
dvi: {DIF_DESTROYPRIVATEDATA - exit(0x00000000)} 16:03:15.796
dvi: Selected Driver:
dvi: Description - MultiTech MT5634ZBA-USB 56K Modem
dvi: InfFile - c:\windows\system32\driverstore\filerepository\mdmcpq.inf_amd64_81d387a9bb4a4cc8\mdmcpq.inf
dvi: Section - Modem14
dvi: {Select Best Driver - exit(0x00000000)}
dvi: Default installer: Exit
dvi: {DIF_SELECTBESTCOMPATDRV - exit(0x00000000)} 16:03:15.798
dvi: {Core Device Install} 16:03:15.798
dvi: {Install Device - USB\VID_06E0&PID_F104\5&711E76&0&5} 16:03:15.800
dvi: Device Status: 0x01806400, Problem: 0x1 (0xc0000493)
dvi: Parent device: USB\ROOT_HUB30\4&38e6ef67&0&0
dvi: {Configure Device - USB\VID_06E0&PID_F104\5&711E76&0&5} 16:03:15.804
dvi: Device Status: 0x01806400, Problem: 0x1 (0xc0000493)
dvi: Parent device: USB\ROOT_HUB30\4&38e6ef67&0&0
! dvi: Device class {4d36e96d-e325-11ce-bfc1-08002be10318} is not configurable.
dvi: {Configure Device - exit(0x00000032)} 16:03:15.805
dvi: {DIF_ALLOW_INSTALL} 16:03:15.806
dvi: Using exported function 'ClassInstall32' in module 'C:\WINDOWS\system32\mdminst.dll'.
dvi: Class installer == mdminst.dll,ClassInstall32
dvi: Class installer: Enter 16:03:15.807
dvi: Class installer: Exit
dvi: Default installer: Enter 16:03:15.808
dvi: Default installer: Exit
dvi: {DIF_ALLOW_INSTALL - exit(0xe000020e)} 16:03:15.808
dvi: {DIF_INSTALLDEVICEFILES} 16:03:15.809
dvi: Class installer: Enter 16:03:15.810
dvi: Class installer: Exit
dvi: {DIF_INSTALLDEVICEFILES - exit(0x00000000)} 16:03:15.814
flq: File 'C:\WINDOWS\system32\DRIVERS\usbser.sys' pruned from copy.
dvi: {DIF_REGISTER_COINSTALLERS} 16:03:15.846
dvi: Reset Device: Resetting device configuration. 16:03:15.847
dvi: Reset Device: Resetting device configuration completed. 16:03:15.848
dvi: Class installer: Enter 16:03:15.848
dvi: Class installer: Exit
dvi: Default installer: Enter 16:03:15.848
inf: {Install from INF Section - Modem14.NT.CoInstallers} 16:03:15.849
inf: Flags - 0x001001ee
inf: {Install from INF Section - exit(0x00000000)} 16:03:15.850
dvi: Default installer: Exit
dvi: {DIF_REGISTER_COINSTALLERS - exit(0x00000000)} 16:03:15.851
dvi: {DIF_INSTALLINTERFACES} 16:03:15.851
dvi: Class installer: Enter 16:03:15.852
dvi: Class installer: Exit
dvi: Default installer: Enter 16:03:15.852
dvi: Default installer: Exit
dvi: {DIF_INSTALLINTERFACES - exit(0x00000000)} 16:03:15.853
dvi: {DIF_INSTALLDEVICE} 16:03:15.853
dvi: Class installer: Enter 16:03:15.854
dvi: {Install DEVICE}
inf: {Install from INF Section - Modem14.NT} 16:03:15.860
inf: Flags - 0x001005ee
inf: {Install from INF Section - exit(0x00000000)} 16:03:15.958
inf: {Install from INF Section - UsbSerial_ModemFilter_Install} 16:03:15.958
inf: Flags - 0x001005ee
inf: {Install from INF Section - exit(0x00000000)} 16:03:15.959
inf: {Install from INF Section - Modem14.NT.Hw} 16:03:15.960
inf: Flags - 0x00100004
inf: {Install from INF Section - exit(0x00000000)} 16:03:15.961
inf: {Install from INF Section - UsbSerial_ModemFilter_Install.Hw} 16:03:15.961
inf: Flags - 0x00100004
inf: {Install from INF Section - exit(0x00000000)} 16:03:15.962
dvi: {Writing Device Properties}
dvi: Strong Name=mdmcpq.inf:39e4895befabc47d:Modem14:10.0.17134.1:usb\vid_06e0&pid_f104
dvi: {Writing Device Properties - Complete}
inf: AddService=usbser,,UsbSerial_Service_Install,UsbSerial_EventLog_Install (usbser.inf line 106)
dvi: Add Service: Modified existing service 'usbser'.
inf: {Install from INF Section - UsbSerial_Service_Install} 16:03:15.970
inf: Flags - 0x00100004
inf: {Install from INF Section - exit(0x00000000)} 16:03:15.970
inf: {Install from INF Section - UsbSerial_EventLog_Install} 16:03:15.971
inf: Flags - 0x00100004
inf: {Install from INF Section - exit(0x00000000)} 16:03:15.972
dvi: {Install DEVICE exit (0x00000000)}
dvi: Install Device: Configuring device class. 16:03:15.975
dvi: Install Device: Configuring device class completed. 16:03:15.976
dvi: Device Status: 0x01806400, Problem: 0x1 (0xc0000493)
dvi: Install Device: Starting device 'USB\VID_06E0&PID_F104\5&711E76&0&5'. 16:03:15.977
dvi: Install Device: Starting device completed. 16:03:20.459
!!! dvi: Device not started: Device has problem: 0x0a (CM_PROB_FAILED_START), problem status: 0xc000000e.
dvi: Class installer: Exit
dvi: {DIF_INSTALLDEVICE - exit(0x00000000)} 16:03:20.519
dvi: Device Status: 0x01806400, Problem: 0xa
dvi: {DIF_NEWDEVICEWIZARD_FINISHINSTALL} 16:03:20.520
dvi: Class installer: Enter 16:03:20.521
dvi: Class installer: Exit
dvi: Default installer: Enter 16:03:20.521
dvi: Default installer: Exit
dvi: {DIF_NEWDEVICEWIZARD_FINISHINSTALL - exit(0xe000020e)} 16:03:20.522
dvi: {Install Device - exit(0x00000000)} 16:03:20.524
dvi: {Core Device Install - exit(0x00000000)} 16:03:20.524
dvi: {DIF_DESTROYPRIVATEDATA} 16:03:20.524
dvi: Class installer: Enter 16:03:20.525
dvi: Class installer: Exit
dvi: {DIF_DESTROYPRIVATEDATA - exit(0x00000000)} 16:03:20.526
<<< Section end 2019/01/30 16:03:20.535
<<< [Exit status: SUCCESS]
So the whole installation process succeeds but the driver fails to start the device. I then found:
https://pete.akeo.ie/2011/03/troubleshooting-usb-device-development.html
Which details what the driver is trying to do:
"CM_PROB_FAILED_START means that your driver loaded, passed through DriverEntry, passed through AddDevice, and then failed during IRP_MN_START_DEVICE.
In layman's terms, this means that the issue occurs during the USB transfers that Windows issues with the device, after the driver has been setup and the device instance has been (re)created."
So it would appear that Windows 10 did a total re-write on "usbser.sys":
- https://technet.microsoft.com/en-us/dn707976(v=vs.90)
- https://blogs.msdn.microsoft.com/usbcoreblog/2015/07/29/what-is-new-with-serial-in-windows-10/
and in the process managed to change the way the device initialisation worked thus breaking loads of USB Communication Device Class (CDC) components. Clearly whatever the driver is doing now it is not operating in a backward compatible manner and clearly Microsoft have not tested their own "in-box" supplied "INF" files on the devices that are clearly identified by the "Device-IDs" that identify the component.
I managed to find a not very satisfactory workaround for my laptop using a USB to Serial Cable and a really old Multitech MT5600ZDX serial modem, which worked perfectly; this did at least allow me to get the "Windows Fax and Scan" working. It would clearly be advantageous if Microsoft drivers actually produced a human readable description of the Hex error codes emitted by the drivers and wrote them to either the "Event Log" or "setupapi.dev.log". It is anyone's guess what "problem status: 0xc000000e" actually means and why the new driver felt it needed to fail the device when Windows 7 allows the device to start; IMHO this type of behaviour is not progress it is just lack of testing in Windows 10 to ensure that code re-writes don't break things and some form of regression testing is carried out.