diff options
author | Keith Packard <keithp@keithp.com> | 2019-05-19 16:37:36 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2019-05-19 16:37:36 -0700 |
commit | f64922941111f411964c0901b4340b35e03afbe1 (patch) | |
tree | 45f25d3cab5767eaf2d3f59e11675437a1bcb4b3 | |
parent | acab9d2c0efb63323faebfd5e3405d77cd4b5617 (diff) | |
download | pyserial-git-f64922941111f411964c0901b4340b35e03afbe1.tar.gz |
tools/list_ports_windows: Scan both 'Ports' and 'Modem' device classes
Devices using the Window USB Modem driver use the Modem GUID instead
of the Ports GUID. Add the Modem class to the set of GUIDs to scan.
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | serial/tools/list_ports_windows.py | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/serial/tools/list_ports_windows.py b/serial/tools/list_ports_windows.py index 19b9499..0166646 100644 --- a/serial/tools/list_ports_windows.py +++ b/serial/tools/list_ports_windows.py @@ -134,17 +134,28 @@ KEY_READ = 0x20019 def iterate_comports(): """Return a generator that yields descriptions for serial ports""" - GUIDs = (GUID * 8)() # so far only seen one used, so hope 8 are enough... - guids_size = DWORD() + PortsGUIDs = (GUID * 8)() # so far only seen one used, so hope 8 are enough... + ports_guids_size = DWORD() if not SetupDiClassGuidsFromName( "Ports", - GUIDs, - ctypes.sizeof(GUIDs), - ctypes.byref(guids_size)): + PortsGUIDs, + ctypes.sizeof(PortsGUIDs), + ctypes.byref(ports_guids_size)): raise ctypes.WinError() + ModemsGUIDs = (GUID * 8)() # so far only seen one used, so hope 8 are enough... + modems_guids_size = DWORD() + if not SetupDiClassGuidsFromName( + "Modem", + ModemsGUIDs, + ctypes.sizeof(ModemsGUIDs), + ctypes.byref(modems_guids_size)): + raise ctypes.WinError() + + GUIDs = PortsGUIDs[:ports_guids_size.value] + ModemsGUIDs[:modems_guids_size.value] + # repeat for all possible GUIDs - for index in range(guids_size.value): + for index in range(len(GUIDs)): bInterfaceNumber = None g_hdi = SetupDiGetClassDevs( ctypes.byref(GUIDs[index]), |