summaryrefslogtreecommitdiff
path: root/setupapi/setupapi_windows_test.go
diff options
context:
space:
mode:
authorSimon Rozman <simon@rozman.si>2019-02-05 16:29:17 +0100
committerSimon Rozman <simon@rozman.si>2019-02-05 16:29:17 +0100
commit3e8f2e3fa58b5825cfb3a2dbcf4591a882ecf92b (patch)
tree5db177c98352a21ce398a42f0b5942a4340c3ff1 /setupapi/setupapi_windows_test.go
parent7b636380e50f257e7f1b98b6b5829a24166e2000 (diff)
downloadwireguard-go-3e8f2e3fa58b5825cfb3a2dbcf4591a882ecf92b.tar.gz
wireguard-go-3e8f2e3fa58b5825cfb3a2dbcf4591a882ecf92b.zip
setupapi: Add support for driver info lists
Signed-off-by: Simon Rozman <simon@rozman.si>
Diffstat (limited to 'setupapi/setupapi_windows_test.go')
-rw-r--r--setupapi/setupapi_windows_test.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/setupapi/setupapi_windows_test.go b/setupapi/setupapi_windows_test.go
index 93ae42a..12b5fe1 100644
--- a/setupapi/setupapi_windows_test.go
+++ b/setupapi/setupapi_windows_test.go
@@ -136,6 +136,69 @@ func TestSetupDiEnumDeviceInfo(t *testing.T) {
}
}
+func TestDevInfo_BuildDriverInfoList(t *testing.T) {
+ devInfoList, err := SetupDiGetClassDevsEx(&deviceClassNetGUID, "", 0, DIGCF_PRESENT, DevInfo(0), "")
+ if err != nil {
+ t.Errorf("Error calling SetupDiGetClassDevsEx: %s", err.Error())
+ }
+ defer devInfoList.Close()
+
+ for i := 0; true; i++ {
+ deviceData, err := devInfoList.EnumDeviceInfo(i)
+ if err != nil {
+ if errWin, ok := err.(syscall.Errno); ok && errWin == 259 /*ERROR_NO_MORE_ITEMS*/ {
+ break
+ }
+ continue
+ }
+
+ const driverType SPDIT = SPDIT_COMPATDRIVER
+ err = devInfoList.BuildDriverInfoList(deviceData, driverType)
+ if err != nil {
+ t.Errorf("Error calling SetupDiBuildDriverInfoList: %s", err.Error())
+ }
+ defer devInfoList.DestroyDriverInfoList(deviceData, driverType)
+
+ var selectedDriverData *SP_DRVINFO_DATA
+ for j := 0; true; j++ {
+ driverData, err := devInfoList.EnumDriverInfo(deviceData, driverType, j)
+ if err != nil {
+ if errWin, ok := err.(syscall.Errno); ok && errWin == 259 /*ERROR_NO_MORE_ITEMS*/ {
+ break
+ }
+ continue
+ }
+
+ if driverData2, err2 := driverData.ToGo().ToWindows(); err2 != nil || *driverData2 != *driverData {
+ t.Error("Error converting between SP_DRVINFO_DATA and DrvInfoData")
+ }
+
+ if driverData.DriverType == 0 {
+ continue
+ }
+
+ err = devInfoList.SetSelectedDriver(deviceData, driverData)
+ if err != nil {
+ t.Errorf("Error calling SetupDiSetSelectedDriver: %s", err.Error())
+ } else {
+ selectedDriverData = driverData
+ }
+
+ _, err = devInfoList.GetDriverInfoDetail(deviceData, driverData)
+ if err != nil {
+ t.Errorf("Error calling SetupDiGetDriverInfoDetail: %s", err.Error())
+ }
+ }
+
+ selectedDriverData2, err := devInfoList.GetSelectedDriver(deviceData)
+ if err != nil {
+ t.Errorf("Error calling SetupDiGetSelectedDriver: %s", err.Error())
+ } else if *selectedDriverData != *selectedDriverData2 {
+ t.Error("SetupDiGetSelectedDriver should return driver selected with SetupDiSetSelectedDriver")
+ }
+ }
+}
+
func TestSetupDiGetClassDevsEx(t *testing.T) {
devInfoList, err := SetupDiGetClassDevsEx(&deviceClassNetGUID, "PCI", 0, DIGCF_PRESENT, DevInfo(0), computerName)
if err == nil {