3 Commits

Author SHA1 Message Date
Cristian Maglie
f0e4a45720 Merge pull request #202 from ctarsjp/win-port-enum
Fix (non-detailed) port enumeration on Windows
2025-03-28 15:54:19 +01:00
Stepan
bcb0408701 Windows: added a check for \\.\ prefix 2025-03-28 16:42:18 +09:00
Stepan
5069d66aa2 Windows: fixed port enumeration 2025-03-28 16:28:13 +09:00

View File

@@ -19,6 +19,7 @@ package serial
import ( import (
"errors" "errors"
"strings"
"sync" "sync"
"syscall" "syscall"
"time" "time"
@@ -45,12 +46,22 @@ func nativeGetPortsList() ([]string, error) {
} }
defer key.Close() defer key.Close()
list, err := key.ReadValueNames(0) names, err := key.ReadValueNames(0)
if err != nil { if err != nil {
return nil, &PortError{code: ErrorEnumeratingPorts, causedBy: err} 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 { func (port *windowsPort) Close() error {
@@ -342,7 +353,9 @@ func createOverlappedEvent() (*windows.Overlapped, error) {
} }
func nativeOpen(portName string, mode *Mode) (*windowsPort, error) { func nativeOpen(portName string, mode *Mode) (*windowsPort, error) {
portName = "\\\\.\\" + portName if !strings.HasPrefix(portName, `\\.\`) {
portName = `\\.\` + portName
}
path, err := windows.UTF16PtrFromString(portName) path, err := windows.UTF16PtrFromString(portName)
if err != nil { if err != nil {
return nil, err return nil, err