mirror of
https://git.zx2c4.com/wireguard-go
synced 2025-10-06 00:57:23 +08:00
Add support for setupapi.SetupDiOpenDevRegKey()
Furthermore setupapi.DevInfoData has been obsoleted. SetupDiEnumDeviceInfo() fills existing SP_DEVINFO_DATA structure now. As other functions of SetupAPI use SP_DEVINFO_DATA, converting it to DevInfoData and back would hurt performance. Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:

committed by
Jason A. Donenfeld

parent
955d8dfe04
commit
dce5192d86
@@ -43,7 +43,7 @@ func TestSetupDiGetDeviceInfoListDetailLocal(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Errorf("Error calling SetupDiGetClassDevsEx: %s", err.Error())
|
||||
}
|
||||
defer SetupDiDestroyDeviceInfoList(devInfoList)
|
||||
defer devInfoList.Close()
|
||||
|
||||
data, err := SetupDiGetDeviceInfoListDetail(devInfoList)
|
||||
if err != nil {
|
||||
@@ -68,7 +68,7 @@ func TestSetupDiGetDeviceInfoListDetailRemote(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Errorf("Error calling SetupDiGetClassDevsEx: %s", err.Error())
|
||||
}
|
||||
defer SetupDiDestroyDeviceInfoList(devInfoList)
|
||||
defer devInfoList.Close()
|
||||
|
||||
data, err := SetupDiGetDeviceInfoListDetail(devInfoList)
|
||||
if err != nil {
|
||||
@@ -93,10 +93,11 @@ func TestSetupDiEnumDeviceInfo(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Errorf("Error calling SetupDiGetClassDevsEx: %s", err.Error())
|
||||
}
|
||||
defer SetupDiDestroyDeviceInfoList(devInfoList)
|
||||
defer devInfoList.Close()
|
||||
|
||||
var data SP_DEVINFO_DATA
|
||||
for i := 0; true; i++ {
|
||||
data, err := SetupDiEnumDeviceInfo(devInfoList, i)
|
||||
err := SetupDiEnumDeviceInfo(devInfoList, i, &data)
|
||||
if err != nil {
|
||||
if errWin, ok := err.(syscall.Errno); ok && errWin == 259 /*ERROR_NO_MORE_ITEMS*/ {
|
||||
break
|
||||
@@ -109,3 +110,28 @@ func TestSetupDiEnumDeviceInfo(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetupDiOpenDevRegKey(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()
|
||||
|
||||
var data SP_DEVINFO_DATA
|
||||
for i := 0; true; i++ {
|
||||
err := SetupDiEnumDeviceInfo(devInfoList, i, &data)
|
||||
if err != nil {
|
||||
if errWin, ok := err.(syscall.Errno); ok && errWin == 259 /*ERROR_NO_MORE_ITEMS*/ {
|
||||
break
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
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())
|
||||
}
|
||||
defer key.Close()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user