diff options
author | zsquareplusc <cliechti@gmx.net> | 2019-08-13 13:26:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-13 13:26:41 +0200 |
commit | 7bb1dcc5aea16ca1c957690cb5276df33af1c286 (patch) | |
tree | 9370b1f7070e2b88e8375b4042ec74029d5d9f70 | |
parent | 47e4a113375943c601a43ec0ee781ba1d886aaae (diff) | |
parent | f64922941111f411964c0901b4340b35e03afbe1 (diff) | |
download | pyserial-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.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 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]), |