summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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]),