]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
setupapi, wintun: replace syscall with golang.org/x/sys/windows
authorSimon Rozman <simon@rozman.si>
Tue, 4 Jun 2019 12:54:56 +0000 (14:54 +0200)
committerSimon Rozman <simon@rozman.si>
Tue, 4 Jun 2019 12:54:56 +0000 (14:54 +0200)
Signed-off-by: Simon Rozman <simon@rozman.si>
tun/wintun/setupapi/setupapi_windows.go
tun/wintun/setupapi/setupapi_windows_test.go
tun/wintun/setupapi/types_windows.go
tun/wintun/wintun_windows.go

index 2148a67337956a1914d0df08eba90a9feea909dc..1ac1419b662e2fadbfadc22f089b4935494984a1 100644 (file)
@@ -9,7 +9,6 @@ import (
        "encoding/binary"
        "fmt"
        "runtime"
-       "syscall"
        "unsafe"
 
        "golang.org/x/sys/windows"
@@ -22,7 +21,7 @@ import (
 func SetupDiCreateDeviceInfoListEx(classGUID *windows.GUID, hwndParent uintptr, machineName string) (deviceInfoSet DevInfo, err error) {
        var machineNameUTF16 *uint16
        if machineName != "" {
-               machineNameUTF16, err = syscall.UTF16PtrFromString(machineName)
+               machineNameUTF16, err = windows.UTF16PtrFromString(machineName)
                if err != nil {
                        return
                }
@@ -49,14 +48,14 @@ func (deviceInfoSet DevInfo) DeviceInfoListDetail() (*DevInfoListDetailData, err
 
 // SetupDiCreateDeviceInfo function creates a new device information element and adds it as a new member to the specified device information set.
 func SetupDiCreateDeviceInfo(deviceInfoSet DevInfo, deviceName string, classGUID *windows.GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (deviceInfoData *DevInfoData, err error) {
-       deviceNameUTF16, err := syscall.UTF16PtrFromString(deviceName)
+       deviceNameUTF16, err := windows.UTF16PtrFromString(deviceName)
        if err != nil {
                return
        }
 
        var deviceDescriptionUTF16 *uint16
        if deviceDescription != "" {
-               deviceDescriptionUTF16, err = syscall.UTF16PtrFromString(deviceDescription)
+               deviceDescriptionUTF16, err = windows.UTF16PtrFromString(deviceDescription)
                if err != nil {
                        return
                }
@@ -165,7 +164,7 @@ func SetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoDa
                return data, nil
        }
 
-       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_INSUFFICIENT_BUFFER {
+       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_INSUFFICIENT_BUFFER {
                // The buffer was too small. Now that we got the required size, create another one big enough and retry.
                buf := make([]byte, bufLen)
                data := (*DrvInfoDetailData)(unsafe.Pointer(&buf[0]))
@@ -199,14 +198,14 @@ func (deviceInfoSet DevInfo) DestroyDriverInfoList(deviceInfoData *DevInfoData,
 func SetupDiGetClassDevsEx(classGUID *windows.GUID, enumerator string, hwndParent uintptr, flags DIGCF, deviceInfoSet DevInfo, machineName string) (handle DevInfo, err error) {
        var enumeratorUTF16 *uint16
        if enumerator != "" {
-               enumeratorUTF16, err = syscall.UTF16PtrFromString(enumerator)
+               enumeratorUTF16, err = windows.UTF16PtrFromString(enumerator)
                if err != nil {
                        return
                }
        }
        var machineNameUTF16 *uint16
        if machineName != "" {
-               machineNameUTF16, err = syscall.UTF16PtrFromString(machineName)
+               machineNameUTF16, err = windows.UTF16PtrFromString(machineName)
                if err != nil {
                        return
                }
@@ -247,7 +246,7 @@ func SetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *Dev
                return getRegistryValue(buf[:bufLen], dataType)
        }
 
-       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_INSUFFICIENT_BUFFER {
+       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_INSUFFICIENT_BUFFER {
                // The buffer was too small. Now that we got the required size, create another one big enough and retry.
                buf = make([]byte, bufLen)
                err = setupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &dataType, &buf[0], uint32(cap(buf)), &bufLen)
@@ -396,7 +395,7 @@ func SetupDiClassNameFromGuidEx(classGUID *windows.GUID, machineName string) (cl
 
        var machineNameUTF16 *uint16
        if machineName != "" {
-               machineNameUTF16, err = syscall.UTF16PtrFromString(machineName)
+               machineNameUTF16, err = windows.UTF16PtrFromString(machineName)
                if err != nil {
                        return
                }
@@ -415,7 +414,7 @@ func SetupDiClassNameFromGuidEx(classGUID *windows.GUID, machineName string) (cl
 
 // SetupDiClassGuidsFromNameEx function retrieves the GUIDs associated with the specified class name. This resulting list contains the classes currently installed on a local or remote computer.
 func SetupDiClassGuidsFromNameEx(className string, machineName string) ([]windows.GUID, error) {
-       classNameUTF16, err := syscall.UTF16PtrFromString(className)
+       classNameUTF16, err := windows.UTF16PtrFromString(className)
        if err != nil {
                return nil, err
        }
@@ -426,7 +425,7 @@ func SetupDiClassGuidsFromNameEx(className string, machineName string) ([]window
 
        var machineNameUTF16 *uint16
        if machineName != "" {
-               machineNameUTF16, err = syscall.UTF16PtrFromString(machineName)
+               machineNameUTF16, err = windows.UTF16PtrFromString(machineName)
                if err != nil {
                        return nil, err
                }
@@ -438,7 +437,7 @@ func SetupDiClassGuidsFromNameEx(className string, machineName string) ([]window
                return buf[:bufLen], nil
        }
 
-       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_INSUFFICIENT_BUFFER {
+       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_INSUFFICIENT_BUFFER {
                // The GUID array was too small. Now that we got the required size, create another one big enough and retry.
                buf := make([]windows.GUID, bufLen)
                err = setupDiClassGuidsFromNameEx(classNameUTF16, &buf[0], bufLen, &bufLen, machineNameUTF16, 0)
index ede10784db98d26c71dabaf6e07e4956e8635bc2..a2edab825d36845a15a699755bfe2a8706f6b9db 100644 (file)
@@ -8,7 +8,6 @@ package setupapi
 import (
        "runtime"
        "strings"
-       "syscall"
        "testing"
 
        "golang.org/x/sys/windows"
@@ -114,7 +113,7 @@ func TestSetupDiCreateDeviceInfo(t *testing.T) {
        devInfoData, err := devInfoList.CreateDeviceInfo(deviceClassNetName, &deviceClassNetGUID, "This is a test device", 0, DICD_GENERATE_ID)
        if err != nil {
                // Access denied is expected, as the SetupDiCreateDeviceInfo() require elevation to succeed.
-               if errWin, ok := err.(syscall.Errno); !ok || errWin != windows.ERROR_ACCESS_DENIED {
+               if errWin, ok := err.(windows.Errno); !ok || errWin != windows.ERROR_ACCESS_DENIED {
                        t.Errorf("Error calling SetupDiCreateDeviceInfo: %s", err.Error())
                }
        } else if devInfoData.ClassGUID != deviceClassNetGUID {
@@ -132,7 +131,7 @@ func TestSetupDiEnumDeviceInfo(t *testing.T) {
        for i := 0; true; i++ {
                data, err := devInfoList.EnumDeviceInfo(i)
                if err != nil {
-                       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                break
                        }
                        continue
@@ -154,7 +153,7 @@ func TestDevInfo_BuildDriverInfoList(t *testing.T) {
        for i := 0; true; i++ {
                deviceData, err := devInfoList.EnumDeviceInfo(i)
                if err != nil {
-                       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                break
                        }
                        continue
@@ -171,7 +170,7 @@ func TestDevInfo_BuildDriverInfoList(t *testing.T) {
                for j := 0; true; j++ {
                        driverData, err := devInfoList.EnumDriverInfo(deviceData, driverType, j)
                        if err != nil {
-                               if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                               if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                        break
                                }
                                continue
@@ -265,7 +264,7 @@ func TestSetupDiGetClassDevsEx(t *testing.T) {
                devInfoList.Close()
                t.Errorf("SetupDiGetClassDevsEx(nil, ...) should fail")
        } else {
-               if errWin, ok := err.(syscall.Errno); !ok || errWin != windows.ERROR_INVALID_PARAMETER {
+               if errWin, ok := err.(windows.Errno); !ok || errWin != windows.ERROR_INVALID_PARAMETER {
                        t.Errorf("SetupDiGetClassDevsEx(nil, ...) should fail with ERROR_INVALID_PARAMETER")
                }
        }
@@ -281,7 +280,7 @@ func TestSetupDiOpenDevRegKey(t *testing.T) {
        for i := 0; true; i++ {
                data, err := devInfoList.EnumDeviceInfo(i)
                if err != nil {
-                       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                break
                        }
                        continue
@@ -305,7 +304,7 @@ func TestSetupDiGetDeviceRegistryProperty(t *testing.T) {
        for i := 0; true; i++ {
                data, err := devInfoList.EnumDeviceInfo(i)
                if err != nil {
-                       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                break
                        }
                        continue
@@ -335,7 +334,7 @@ func TestSetupDiGetDeviceRegistryProperty(t *testing.T) {
                val, err = devInfoList.DeviceRegistryProperty(data, SPDRP_COMPATIBLEIDS)
                if err != nil {
                        // Some devices have no SPDRP_COMPATIBLEIDS.
-                       if errWin, ok := err.(syscall.Errno); !ok || errWin != windows.ERROR_INVALID_DATA {
+                       if errWin, ok := err.(windows.Errno); !ok || errWin != windows.ERROR_INVALID_DATA {
                                t.Errorf("Error calling SetupDiGetDeviceRegistryProperty(SPDRP_COMPATIBLEIDS): %s", err.Error())
                        }
                }
@@ -362,7 +361,7 @@ func TestSetupDiGetDeviceInstallParams(t *testing.T) {
        for i := 0; true; i++ {
                data, err := devInfoList.EnumDeviceInfo(i)
                if err != nil {
-                       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                break
                        }
                        continue
@@ -400,7 +399,7 @@ func TestSetupDiClassNameFromGuidEx(t *testing.T) {
        if err == nil {
                t.Errorf("SetupDiClassNameFromGuidEx(nil) should fail")
        } else {
-               if errWin, ok := err.(syscall.Errno); !ok || errWin != windows.ERROR_INVALID_USER_BUFFER {
+               if errWin, ok := err.(windows.Errno); !ok || errWin != windows.ERROR_INVALID_USER_BUFFER {
                        t.Errorf("SetupDiClassNameFromGuidEx(nil) should fail with ERROR_INVALID_USER_BUFFER")
                }
        }
@@ -441,7 +440,7 @@ func TestSetupDiGetSelectedDevice(t *testing.T) {
        for i := 0; true; i++ {
                data, err := devInfoList.EnumDeviceInfo(i)
                if err != nil {
-                       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                break
                        }
                        continue
@@ -464,7 +463,7 @@ func TestSetupDiGetSelectedDevice(t *testing.T) {
        if err == nil {
                t.Errorf("SetupDiSetSelectedDevice(nil) should fail")
        } else {
-               if errWin, ok := err.(syscall.Errno); !ok || errWin != windows.ERROR_INVALID_PARAMETER {
+               if errWin, ok := err.(windows.Errno); !ok || errWin != windows.ERROR_INVALID_PARAMETER {
                        t.Errorf("SetupDiSetSelectedDevice(nil) should fail with ERROR_INVALID_USER_BUFFER")
                }
        }
index cf2b71874858fea1361f4e8571c032490323065d..6ceda0910f79077e10cca428f9cb8274780f948e 100644 (file)
@@ -7,7 +7,6 @@ package setupapi
 
 import (
        "strings"
-       "syscall"
        "unsafe"
 
        "golang.org/x/sys/windows"
@@ -71,7 +70,7 @@ func (data *DevInfoListDetailData) RemoteMachineName() string {
 }
 
 func (data *DevInfoListDetailData) SetRemoteMachineName(remoteMachineName string) error {
-       str, err := syscall.UTF16FromString(remoteMachineName)
+       str, err := windows.UTF16FromString(remoteMachineName)
        if err != nil {
                return err
        }
@@ -143,7 +142,7 @@ func (params *DevInstallParams) DriverPath() string {
 }
 
 func (params *DevInstallParams) SetDriverPath(driverPath string) error {
-       str, err := syscall.UTF16FromString(driverPath)
+       str, err := windows.UTF16FromString(driverPath)
        if err != nil {
                return err
        }
@@ -328,7 +327,7 @@ func (data *DrvInfoData) Description() string {
 }
 
 func (data *DrvInfoData) SetDescription(description string) error {
-       str, err := syscall.UTF16FromString(description)
+       str, err := windows.UTF16FromString(description)
        if err != nil {
                return err
        }
@@ -341,7 +340,7 @@ func (data *DrvInfoData) MfgName() string {
 }
 
 func (data *DrvInfoData) SetMfgName(mfgName string) error {
-       str, err := syscall.UTF16FromString(mfgName)
+       str, err := windows.UTF16FromString(mfgName)
        if err != nil {
                return err
        }
@@ -354,7 +353,7 @@ func (data *DrvInfoData) ProviderName() string {
 }
 
 func (data *DrvInfoData) SetProviderName(providerName string) error {
-       str, err := syscall.UTF16FromString(providerName)
+       str, err := windows.UTF16FromString(providerName)
        if err != nil {
                return err
        }
index 9dc4030d75bff3767b99656feb872b3ffce95dbb..6daa4d70d60b017971dcb09ca8b2df378ecdebad 100644 (file)
@@ -9,7 +9,6 @@ import (
        "errors"
        "fmt"
        "strings"
-       "syscall"
        "time"
        "unsafe"
 
@@ -112,7 +111,7 @@ func GetInterface(ifname string, hwndParent uintptr) (*Wintun, error) {
                // Get the device from the list. Should anything be wrong with this device, continue with next.
                deviceData, err := devInfoList.EnumDeviceInfo(index)
                if err != nil {
-                       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                break
                        }
                        continue
@@ -144,7 +143,7 @@ func GetInterface(ifname string, hwndParent uintptr) (*Wintun, error) {
                                // Get a driver from the list.
                                driverData, err := devInfoList.EnumDriverInfo(deviceData, driverType, index)
                                if err != nil {
-                                       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                                       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                                break
                                        }
                                        // Something is wrong with this driver. Skip it.
@@ -239,7 +238,7 @@ func CreateInterface(description string, hwndParent uintptr) (*Wintun, bool, err
                // Get a driver from the list.
                driverData, err := devInfoList.EnumDriverInfo(deviceData, driverType, index)
                if err != nil {
-                       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                break
                        }
                        // Something is wrong with this driver. Skip it.
@@ -434,7 +433,7 @@ func (wintun *Wintun) DeleteInterface(hwndParent uintptr) (bool, bool, error) {
                // Get the device from the list. Should anything be wrong with this device, continue with next.
                deviceData, err := devInfoList.EnumDeviceInfo(index)
                if err != nil {
-                       if errWin, ok := err.(syscall.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
+                       if errWin, ok := err.(windows.Errno); ok && errWin == windows.ERROR_NO_MORE_ITEMS {
                                break
                        }
                        continue