]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
setupapi: Merge _SP_DEVINSTALL_PARAMS and DevInstallParams
authorSimon Rozman <simon@rozman.si>
Thu, 7 Feb 2019 21:35:03 +0000 (22:35 +0100)
committerSimon Rozman <simon@rozman.si>
Thu, 7 Feb 2019 22:50:30 +0000 (23:50 +0100)
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/setupapi/zsetupapi_windows.go

index d195ba4a6a9042ce4c13232804cb7c685d4b60e6..ca944f134b406da9a9a5d124e16f9ff91871f331 100644 (file)
@@ -332,19 +332,14 @@ func (deviceInfoSet DevInfo) SetDeviceRegistryProperty(deviceInfoData *DevInfoDa
        return SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, propertyBuffers)
 }
 
-//sys  setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *_SP_DEVINSTALL_PARAMS) (err error) = setupapi.SetupDiGetDeviceInstallParamsW
+//sys  setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiGetDeviceInstallParamsW
 
 // SetupDiGetDeviceInstallParams function retrieves device installation parameters for a device information set or a particular device information element.
-func SetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (deviceInstallParams *DevInstallParams, err error) {
-       var _data _SP_DEVINSTALL_PARAMS
-       _data.Size = uint32(unsafe.Sizeof(_data))
+func SetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DevInstallParams, error) {
+       params := &DevInstallParams{}
+       params.size = uint32(unsafe.Sizeof(*params))
 
-       err = setupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData, &_data)
-       if err != nil {
-               return
-       }
-
-       return _data.toGo(), nil
+       return params, setupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData, params)
 }
 
 // GetDeviceInstallParams method retrieves device installation parameters for a device information set or a particular device information element.
@@ -360,17 +355,7 @@ func (deviceInfoSet DevInfo) GetClassInstallParams(deviceInfoData *DevInfoData,
        return SetupDiGetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize, requiredSize)
 }
 
-//sys  setupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *_SP_DEVINSTALL_PARAMS) (err error) = setupapi.SetupDiSetDeviceInstallParamsW
-
-// SetupDiSetDeviceInstallParams function sets device installation parameters for a device information set or a particular device information element.
-func SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {
-       _data, err := deviceInstallParams.toWindows()
-       if err != nil {
-               return
-       }
-
-       return setupDiSetDeviceInstallParams(deviceInfoSet, deviceInfoData, _data)
-}
+//sys  SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiSetDeviceInstallParamsW
 
 // SetDeviceInstallParams member sets device installation parameters for a device information set or a particular device information element.
 func (deviceInfoSet DevInfo) SetDeviceInstallParams(deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) error {
index b8f4bc70603d56cbc29468dbe60242dc545ed648..32e0f1e0e3fde4e6e72c131a5cadb12c9b276aa4 100644 (file)
@@ -361,6 +361,12 @@ func TestSetupDiGetDeviceInstallParams(t *testing.T) {
                        t.Errorf("Error calling SetupDiGetDeviceInstallParams: %s", err.Error())
                }
        }
+
+       params := &DevInstallParams{}
+       params.SetDriverPath("foobar")
+       if params.GetDriverPath() != "foobar" {
+               t.Error("DevInstallParams.(Get|Set)DriverPath() differ")
+       }
 }
 
 func TestSetupDiClassNameFromGuidEx(t *testing.T) {
index a37fdec0659478b11836454ff3464d1b70273d88..ae60bd0eb4ce5387cf044ea7432b3d395e6f5729 100644 (file)
@@ -123,8 +123,9 @@ const (
        DIF_FINISHINSTALL_ACTION           DI_FUNCTION = 0x0000002A
 )
 
-type _SP_DEVINSTALL_PARAMS struct {
-       Size                     uint32
+// DevInstallParams is device installation parameters structure (associated with a particular device information element, or globally with a device information set)
+type DevInstallParams struct {
+       size                     uint32
        Flags                    DI_FLAGS
        FlagsEx                  DI_FLAGSEX
        hwndParent               uintptr
@@ -133,50 +134,20 @@ type _SP_DEVINSTALL_PARAMS struct {
        FileQueue                HSPFILEQ
        _                        uintptr
        _                        uint32
-       DriverPath               [windows.MAX_PATH]uint16
-}
-
-func (_data *_SP_DEVINSTALL_PARAMS) toGo() *DevInstallParams {
-       return &DevInstallParams{
-               Flags:                    _data.Flags,
-               FlagsEx:                  _data.FlagsEx,
-               hwndParent:               _data.hwndParent,
-               InstallMsgHandler:        _data.InstallMsgHandler,
-               InstallMsgHandlerContext: _data.InstallMsgHandlerContext,
-               FileQueue:                _data.FileQueue,
-               DriverPath:               windows.UTF16ToString(_data.DriverPath[:]),
-       }
+       driverPath               [windows.MAX_PATH]uint16
 }
 
-// DevInstallParams is device installation parameters structure (associated with a particular device information element, or globally with a device information set)
-type DevInstallParams struct {
-       Flags                    DI_FLAGS
-       FlagsEx                  DI_FLAGSEX
-       hwndParent               uintptr
-       InstallMsgHandler        uintptr
-       InstallMsgHandlerContext uintptr
-       FileQueue                HSPFILEQ
-       DriverPath               string
+func (params *DevInstallParams) GetDriverPath() string {
+       return windows.UTF16ToString(params.driverPath[:])
 }
 
-func (DeviceInstallParams *DevInstallParams) toWindows() (_data *_SP_DEVINSTALL_PARAMS, err error) {
-       _data = &_SP_DEVINSTALL_PARAMS{
-               Flags:                    DeviceInstallParams.Flags,
-               FlagsEx:                  DeviceInstallParams.FlagsEx,
-               hwndParent:               DeviceInstallParams.hwndParent,
-               InstallMsgHandler:        DeviceInstallParams.InstallMsgHandler,
-               InstallMsgHandlerContext: DeviceInstallParams.InstallMsgHandlerContext,
-               FileQueue:                DeviceInstallParams.FileQueue,
-       }
-       _data.Size = uint32(unsafe.Sizeof(*_data))
-
-       driverPathUTF16, err := syscall.UTF16FromString(DeviceInstallParams.DriverPath)
+func (params *DevInstallParams) SetDriverPath(driverPath string) error {
+       str, err := syscall.UTF16FromString(driverPath)
        if err != nil {
-               return
+               return err
        }
-       copy(_data.DriverPath[:], driverPathUTF16)
-
-       return
+       copy(params.driverPath[:], str)
+       return nil
 }
 
 // DI_FLAGS is SP_DEVINSTALL_PARAMS.Flags values
index 9292413159fda259d229713e41e650337cfcc974..2e8a6854f43016d99405ce0884d5209b30ed4add 100644 (file)
@@ -273,7 +273,7 @@ func setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *Dev
        return
 }
 
-func setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *_SP_DEVINSTALL_PARAMS) (err error) {
+func setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {
        r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))
        if r1 == 0 {
                if e1 != 0 {
@@ -297,7 +297,7 @@ func SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfo
        return
 }
 
-func setupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *_SP_DEVINSTALL_PARAMS) (err error) {
+func SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {
        r1, _, e1 := syscall.Syscall(procSetupDiSetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))
        if r1 == 0 {
                if e1 != 0 {