]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
Simplify SetupDiEnumDeviceInfo() synopsis
authorSimon Rozman <simon@rozman.si>
Mon, 4 Feb 2019 10:40:44 +0000 (11:40 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 5 Feb 2019 11:59:42 +0000 (12:59 +0100)
The SetupDiEnumDeviceInfo() now returns a SP_DEVINFO_DATA rather than
taking it on input to fill it on return.

Signed-off-by: Simon Rozman <simon@rozman.si>
setupapi/setupapi_windows.go
setupapi/setupapi_windows_test.go

index 67793b29a2ba1952af269166325de904e119ac7f..95c5ba6e33aec1e22b08a07d87d8f6f8667490c5 100644 (file)
@@ -122,9 +122,11 @@ func SetupDiGetDeviceInfoListDetail(DeviceInfoSet DevInfo) (data *DevInfoListDet
 }
 
 // SetupDiEnumDeviceInfo function returns a SP_DEVINFO_DATA structure that specifies a device information element in a device information set.
-func SetupDiEnumDeviceInfo(DeviceInfoSet DevInfo, MemberIndex int, data *SP_DEVINFO_DATA) error {
-       data.Size = uint32(unsafe.Sizeof(*data))
-       return setupDiEnumDeviceInfo(DeviceInfoSet, uint32(MemberIndex), data)
+func SetupDiEnumDeviceInfo(DeviceInfoSet DevInfo, MemberIndex int) (DeviceInfoData *SP_DEVINFO_DATA, err error) {
+       data := SP_DEVINFO_DATA{}
+       data.Size = uint32(unsafe.Sizeof(data))
+
+       return &data, setupDiEnumDeviceInfo(DeviceInfoSet, uint32(MemberIndex), &data)
 }
 
 // SetupDiOpenDevRegKey function opens a registry key for device-specific configuration information.
index 5d84a39f2ee28dfead8f5e72847b1a05f73f1d6f..76257ac72c19d813334210411524a8602aa716d5 100644 (file)
@@ -146,9 +146,8 @@ func TestSetupDiEnumDeviceInfo(t *testing.T) {
        }
        defer devInfoList.Close()
 
-       var data SP_DEVINFO_DATA
        for i := 0; true; i++ {
-               err := SetupDiEnumDeviceInfo(devInfoList, i, &data)
+               data, err := SetupDiEnumDeviceInfo(devInfoList, i)
                if err != nil {
                        if errWin, ok := err.(syscall.Errno); ok && errWin == 259 /*ERROR_NO_MORE_ITEMS*/ {
                                break
@@ -169,9 +168,8 @@ func TestSetupDiOpenDevRegKey(t *testing.T) {
        }
        defer devInfoList.Close()
 
-       var data SP_DEVINFO_DATA
        for i := 0; true; i++ {
-               err := SetupDiEnumDeviceInfo(devInfoList, i, &data)
+               data, err := SetupDiEnumDeviceInfo(devInfoList, i)
                if err != nil {
                        if errWin, ok := err.(syscall.Errno); ok && errWin == 259 /*ERROR_NO_MORE_ITEMS*/ {
                                break
@@ -179,7 +177,7 @@ func TestSetupDiOpenDevRegKey(t *testing.T) {
                        continue
                }
 
-               key, err := SetupDiOpenDevRegKey(devInfoList, &data, DICS_FLAG_GLOBAL, 0, DIREG_DRV, windows.KEY_READ)
+               key, err := SetupDiOpenDevRegKey(devInfoList, data, DICS_FLAG_GLOBAL, 0, DIREG_DRV, windows.KEY_READ)
                if err != nil {
                        t.Errorf("Error calling SetupDiOpenDevRegKey: %s", err.Error())
                }
@@ -194,9 +192,8 @@ func TestSetupDiGetDeviceInstallParams(t *testing.T) {
        }
        defer devInfoList.Close()
 
-       var data SP_DEVINFO_DATA
        for i := 0; true; i++ {
-               err := SetupDiEnumDeviceInfo(devInfoList, i, &data)
+               data, err := SetupDiEnumDeviceInfo(devInfoList, i)
                if err != nil {
                        if errWin, ok := err.(syscall.Errno); ok && errWin == 259 /*ERROR_NO_MORE_ITEMS*/ {
                                break
@@ -204,7 +201,7 @@ func TestSetupDiGetDeviceInstallParams(t *testing.T) {
                        continue
                }
 
-               _, err = SetupDiGetDeviceInstallParams(devInfoList, &data)
+               _, err = SetupDiGetDeviceInstallParams(devInfoList, data)
                if err != nil {
                        t.Errorf("Error calling SetupDiOpenDevRegKey: %s", err.Error())
                }