From 5069d66aa266bdc5aa7cc5d9fed52c4584675d4a Mon Sep 17 00:00:00 2001 From: Stepan Date: Fri, 28 Mar 2025 16:28:13 +0900 Subject: [PATCH 1/2] Windows: fixed port enumeration --- serial_windows.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/serial_windows.go b/serial_windows.go index 37b3b39..445430d 100644 --- a/serial_windows.go +++ b/serial_windows.go @@ -45,12 +45,22 @@ func nativeGetPortsList() ([]string, error) { } defer key.Close() - list, err := key.ReadValueNames(0) + names, err := key.ReadValueNames(0) if err != nil { return nil, &PortError{code: ErrorEnumeratingPorts, causedBy: err} } - return list, nil + var values []string + for _, n := range names { + v, _, err := key.GetStringValue(n) + if err != nil || v == "" { + continue + } + + values = append(values, v) + } + + return values, nil } func (port *windowsPort) Close() error { From bcb04087016ea55190c7895173b02ae204b3928a Mon Sep 17 00:00:00 2001 From: Stepan Date: Fri, 28 Mar 2025 16:42:18 +0900 Subject: [PATCH 2/2] Windows: added a check for \\.\ prefix --- serial_windows.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/serial_windows.go b/serial_windows.go index 445430d..7aa0123 100644 --- a/serial_windows.go +++ b/serial_windows.go @@ -19,6 +19,7 @@ package serial import ( "errors" + "strings" "sync" "syscall" "time" @@ -352,7 +353,9 @@ func createOverlappedEvent() (*windows.Overlapped, error) { } func nativeOpen(portName string, mode *Mode) (*windowsPort, error) { - portName = "\\\\.\\" + portName + if !strings.HasPrefix(portName, `\\.\`) { + portName = `\\.\` + portName + } path, err := windows.UTF16PtrFromString(portName) if err != nil { return nil, err