summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzsquareplusc <cliechti@gmx.net>2019-08-13 13:26:41 +0200
committerGitHub <noreply@github.com>2019-08-13 13:26:41 +0200
commit7bb1dcc5aea16ca1c957690cb5276df33af1c286 (patch)
tree9370b1f7070e2b88e8375b4042ec74029d5d9f70
parent47e4a113375943c601a43ec0ee781ba1d886aaae (diff)
parentf64922941111f411964c0901b4340b35e03afbe1 (diff)
downloadpyserial-git-7bb1dcc5aea16ca1c957690cb5276df33af1c286.tar.gz
Merge pull request #433 from keith-packard/master
tools/list_ports_windows: Scan both 'Ports' and 'Modem' device classes fixes #314
-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 345b39d..2c530e8 100644
--- a/serial/tools/list_ports_windows.py
+++ b/serial/tools/list_ports_windows.py
@@ -228,17 +228,28 @@ def get_parent_serial_number(child_devinst, child_vid, child_pid, depth=0):
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]),