setupapi, wintun: replace syscall with golang.org/x/sys/windows
Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
parent
85b85e62e5
commit
625e445b22
@ -9,7 +9,6 @@ import (
|
|||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"fmt"
|
"fmt"
|
||||||
"runtime"
|
"runtime"
|
||||||
"syscall"
|
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
@ -22,7 +21,7 @@ import (
|
|||||||
func SetupDiCreateDeviceInfoListEx(classGUID *windows.GUID, hwndParent uintptr, machineName string) (deviceInfoSet DevInfo, err error) {
|
func SetupDiCreateDeviceInfoListEx(classGUID *windows.GUID, hwndParent uintptr, machineName string) (deviceInfoSet DevInfo, err error) {
|
||||||
var machineNameUTF16 *uint16
|
var machineNameUTF16 *uint16
|
||||||
if machineName != "" {
|
if machineName != "" {
|
||||||
machineNameUTF16, err = syscall.UTF16PtrFromString(machineName)
|
machineNameUTF16, err = windows.UTF16PtrFromString(machineName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
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.
|
// 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) {
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var deviceDescriptionUTF16 *uint16
|
var deviceDescriptionUTF16 *uint16
|
||||||
if deviceDescription != "" {
|
if deviceDescription != "" {
|
||||||
deviceDescriptionUTF16, err = syscall.UTF16PtrFromString(deviceDescription)
|
deviceDescriptionUTF16, err = windows.UTF16PtrFromString(deviceDescription)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -165,7 +164,7 @@ func SetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoDa
|
|||||||
return data, nil
|
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.
|
// The buffer was too small. Now that we got the required size, create another one big enough and retry.
|
||||||
buf := make([]byte, bufLen)
|
buf := make([]byte, bufLen)
|
||||||
data := (*DrvInfoDetailData)(unsafe.Pointer(&buf[0]))
|
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) {
|
func SetupDiGetClassDevsEx(classGUID *windows.GUID, enumerator string, hwndParent uintptr, flags DIGCF, deviceInfoSet DevInfo, machineName string) (handle DevInfo, err error) {
|
||||||
var enumeratorUTF16 *uint16
|
var enumeratorUTF16 *uint16
|
||||||
if enumerator != "" {
|
if enumerator != "" {
|
||||||
enumeratorUTF16, err = syscall.UTF16PtrFromString(enumerator)
|
enumeratorUTF16, err = windows.UTF16PtrFromString(enumerator)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var machineNameUTF16 *uint16
|
var machineNameUTF16 *uint16
|
||||||
if machineName != "" {
|
if machineName != "" {
|
||||||
machineNameUTF16, err = syscall.UTF16PtrFromString(machineName)
|
machineNameUTF16, err = windows.UTF16PtrFromString(machineName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -247,7 +246,7 @@ func SetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *Dev
|
|||||||
return getRegistryValue(buf[:bufLen], dataType)
|
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.
|
// The buffer was too small. Now that we got the required size, create another one big enough and retry.
|
||||||
buf = make([]byte, bufLen)
|
buf = make([]byte, bufLen)
|
||||||
err = setupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &dataType, &buf[0], uint32(cap(buf)), &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
|
var machineNameUTF16 *uint16
|
||||||
if machineName != "" {
|
if machineName != "" {
|
||||||
machineNameUTF16, err = syscall.UTF16PtrFromString(machineName)
|
machineNameUTF16, err = windows.UTF16PtrFromString(machineName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
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.
|
// 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) {
|
func SetupDiClassGuidsFromNameEx(className string, machineName string) ([]windows.GUID, error) {
|
||||||
classNameUTF16, err := syscall.UTF16PtrFromString(className)
|
classNameUTF16, err := windows.UTF16PtrFromString(className)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -426,7 +425,7 @@ func SetupDiClassGuidsFromNameEx(className string, machineName string) ([]window
|
|||||||
|
|
||||||
var machineNameUTF16 *uint16
|
var machineNameUTF16 *uint16
|
||||||
if machineName != "" {
|
if machineName != "" {
|
||||||
machineNameUTF16, err = syscall.UTF16PtrFromString(machineName)
|
machineNameUTF16, err = windows.UTF16PtrFromString(machineName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -438,7 +437,7 @@ func SetupDiClassGuidsFromNameEx(className string, machineName string) ([]window
|
|||||||
return buf[:bufLen], nil
|
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.
|
// 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)
|
buf := make([]windows.GUID, bufLen)
|
||||||
err = setupDiClassGuidsFromNameEx(classNameUTF16, &buf[0], bufLen, &bufLen, machineNameUTF16, 0)
|
err = setupDiClassGuidsFromNameEx(classNameUTF16, &buf[0], bufLen, &bufLen, machineNameUTF16, 0)
|
||||||
|
@ -8,7 +8,6 @@ package setupapi
|
|||||||
import (
|
import (
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"golang.org/x/sys/windows"
|
"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)
|
devInfoData, err := devInfoList.CreateDeviceInfo(deviceClassNetName, &deviceClassNetGUID, "This is a test device", 0, DICD_GENERATE_ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Access denied is expected, as the SetupDiCreateDeviceInfo() require elevation to succeed.
|
// 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())
|
t.Errorf("Error calling SetupDiCreateDeviceInfo: %s", err.Error())
|
||||||
}
|
}
|
||||||
} else if devInfoData.ClassGUID != deviceClassNetGUID {
|
} else if devInfoData.ClassGUID != deviceClassNetGUID {
|
||||||
@ -132,7 +131,7 @@ func TestSetupDiEnumDeviceInfo(t *testing.T) {
|
|||||||
for i := 0; true; i++ {
|
for i := 0; true; i++ {
|
||||||
data, err := devInfoList.EnumDeviceInfo(i)
|
data, err := devInfoList.EnumDeviceInfo(i)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -154,7 +153,7 @@ func TestDevInfo_BuildDriverInfoList(t *testing.T) {
|
|||||||
for i := 0; true; i++ {
|
for i := 0; true; i++ {
|
||||||
deviceData, err := devInfoList.EnumDeviceInfo(i)
|
deviceData, err := devInfoList.EnumDeviceInfo(i)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -171,7 +170,7 @@ func TestDevInfo_BuildDriverInfoList(t *testing.T) {
|
|||||||
for j := 0; true; j++ {
|
for j := 0; true; j++ {
|
||||||
driverData, err := devInfoList.EnumDriverInfo(deviceData, driverType, j)
|
driverData, err := devInfoList.EnumDriverInfo(deviceData, driverType, j)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -265,7 +264,7 @@ func TestSetupDiGetClassDevsEx(t *testing.T) {
|
|||||||
devInfoList.Close()
|
devInfoList.Close()
|
||||||
t.Errorf("SetupDiGetClassDevsEx(nil, ...) should fail")
|
t.Errorf("SetupDiGetClassDevsEx(nil, ...) should fail")
|
||||||
} else {
|
} 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")
|
t.Errorf("SetupDiGetClassDevsEx(nil, ...) should fail with ERROR_INVALID_PARAMETER")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -281,7 +280,7 @@ func TestSetupDiOpenDevRegKey(t *testing.T) {
|
|||||||
for i := 0; true; i++ {
|
for i := 0; true; i++ {
|
||||||
data, err := devInfoList.EnumDeviceInfo(i)
|
data, err := devInfoList.EnumDeviceInfo(i)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -305,7 +304,7 @@ func TestSetupDiGetDeviceRegistryProperty(t *testing.T) {
|
|||||||
for i := 0; true; i++ {
|
for i := 0; true; i++ {
|
||||||
data, err := devInfoList.EnumDeviceInfo(i)
|
data, err := devInfoList.EnumDeviceInfo(i)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -335,7 +334,7 @@ func TestSetupDiGetDeviceRegistryProperty(t *testing.T) {
|
|||||||
val, err = devInfoList.DeviceRegistryProperty(data, SPDRP_COMPATIBLEIDS)
|
val, err = devInfoList.DeviceRegistryProperty(data, SPDRP_COMPATIBLEIDS)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Some devices have no SPDRP_COMPATIBLEIDS.
|
// 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())
|
t.Errorf("Error calling SetupDiGetDeviceRegistryProperty(SPDRP_COMPATIBLEIDS): %s", err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -362,7 +361,7 @@ func TestSetupDiGetDeviceInstallParams(t *testing.T) {
|
|||||||
for i := 0; true; i++ {
|
for i := 0; true; i++ {
|
||||||
data, err := devInfoList.EnumDeviceInfo(i)
|
data, err := devInfoList.EnumDeviceInfo(i)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -400,7 +399,7 @@ func TestSetupDiClassNameFromGuidEx(t *testing.T) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("SetupDiClassNameFromGuidEx(nil) should fail")
|
t.Errorf("SetupDiClassNameFromGuidEx(nil) should fail")
|
||||||
} else {
|
} 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")
|
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++ {
|
for i := 0; true; i++ {
|
||||||
data, err := devInfoList.EnumDeviceInfo(i)
|
data, err := devInfoList.EnumDeviceInfo(i)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -464,7 +463,7 @@ func TestSetupDiGetSelectedDevice(t *testing.T) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("SetupDiSetSelectedDevice(nil) should fail")
|
t.Errorf("SetupDiSetSelectedDevice(nil) should fail")
|
||||||
} else {
|
} 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")
|
t.Errorf("SetupDiSetSelectedDevice(nil) should fail with ERROR_INVALID_USER_BUFFER")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@ package setupapi
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
@ -71,7 +70,7 @@ func (data *DevInfoListDetailData) RemoteMachineName() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (data *DevInfoListDetailData) SetRemoteMachineName(remoteMachineName string) error {
|
func (data *DevInfoListDetailData) SetRemoteMachineName(remoteMachineName string) error {
|
||||||
str, err := syscall.UTF16FromString(remoteMachineName)
|
str, err := windows.UTF16FromString(remoteMachineName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -143,7 +142,7 @@ func (params *DevInstallParams) DriverPath() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (params *DevInstallParams) SetDriverPath(driverPath string) error {
|
func (params *DevInstallParams) SetDriverPath(driverPath string) error {
|
||||||
str, err := syscall.UTF16FromString(driverPath)
|
str, err := windows.UTF16FromString(driverPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -328,7 +327,7 @@ func (data *DrvInfoData) Description() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (data *DrvInfoData) SetDescription(description string) error {
|
func (data *DrvInfoData) SetDescription(description string) error {
|
||||||
str, err := syscall.UTF16FromString(description)
|
str, err := windows.UTF16FromString(description)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -341,7 +340,7 @@ func (data *DrvInfoData) MfgName() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (data *DrvInfoData) SetMfgName(mfgName string) error {
|
func (data *DrvInfoData) SetMfgName(mfgName string) error {
|
||||||
str, err := syscall.UTF16FromString(mfgName)
|
str, err := windows.UTF16FromString(mfgName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -354,7 +353,7 @@ func (data *DrvInfoData) ProviderName() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (data *DrvInfoData) SetProviderName(providerName string) error {
|
func (data *DrvInfoData) SetProviderName(providerName string) error {
|
||||||
str, err := syscall.UTF16FromString(providerName)
|
str, err := windows.UTF16FromString(providerName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
|
||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"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.
|
// Get the device from the list. Should anything be wrong with this device, continue with next.
|
||||||
deviceData, err := devInfoList.EnumDeviceInfo(index)
|
deviceData, err := devInfoList.EnumDeviceInfo(index)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -144,7 +143,7 @@ func GetInterface(ifname string, hwndParent uintptr) (*Wintun, error) {
|
|||||||
// Get a driver from the list.
|
// Get a driver from the list.
|
||||||
driverData, err := devInfoList.EnumDriverInfo(deviceData, driverType, index)
|
driverData, err := devInfoList.EnumDriverInfo(deviceData, driverType, index)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
// Something is wrong with this driver. Skip it.
|
// 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.
|
// Get a driver from the list.
|
||||||
driverData, err := devInfoList.EnumDriverInfo(deviceData, driverType, index)
|
driverData, err := devInfoList.EnumDriverInfo(deviceData, driverType, index)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
// Something is wrong with this driver. Skip it.
|
// 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.
|
// Get the device from the list. Should anything be wrong with this device, continue with next.
|
||||||
deviceData, err := devInfoList.EnumDeviceInfo(index)
|
deviceData, err := devInfoList.EnumDeviceInfo(index)
|
||||||
if err != nil {
|
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
|
break
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
|
Loading…
Reference in New Issue
Block a user