summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2019-05-19 16:37:36 -0700
committerKeith Packard <keithp@keithp.com>2019-05-19 16:37:36 -0700
commitf64922941111f411964c0901b4340b35e03afbe1 (patch)
tree45f25d3cab5767eaf2d3f59e11675437a1bcb4b3
parentacab9d2c0efb63323faebfd5e3405d77cd4b5617 (diff)
downloadpyserial-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.py23
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]),