diff options
-rw-r--r-- | serial/tools/list_ports_windows.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/serial/tools/list_ports_windows.py b/serial/tools/list_ports_windows.py index 90d6b49..6112704 100644 --- a/serial/tools/list_ports_windows.py +++ b/serial/tools/list_ports_windows.py @@ -34,7 +34,14 @@ REGSAM = ACCESS_MASK def byte_buffer(length):
"""Get a buffer for a string"""
- return (ctypes.c_char*length)()
+ return (BYTE*length)()
+
+def string(buffer):
+ s = []
+ for c in buffer:
+ if c == 0: break
+ s.append(chr(c))
+ return ''.join(s)
class GUID(ctypes.Structure):
@@ -185,8 +192,7 @@ def comports(): port_name_length = ULONG(ctypes.sizeof(port_name_buffer))
RegQueryValueEx(hkey, PortName, None, None, ctypes.byref(port_name_buffer), ctypes.byref(port_name_length))
RegCloseKey(hkey)
- port_name = str(port_name_buffer.value)
- yield port_name, szFriendlyName.value, szHardwareID.value
+ yield string(port_name_buffer), string(szFriendlyName), string(szHardwareID)
SetupDiDestroyDeviceInfoList(g_hdi)
|