]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
setupapi: Move Go<>Windows struct marshaling to types_windows.go
authorSimon Rozman <simon@rozman.si>
Tue, 5 Feb 2019 13:03:28 +0000 (14:03 +0100)
committerSimon Rozman <simon@rozman.si>
Tue, 5 Feb 2019 13:03:28 +0000 (14:03 +0100)
Signed-off-by: Simon Rozman <simon@rozman.si>
setupapi/setupapi_windows.go
setupapi/types_windows.go

index 0a833eda69a81d9f0642be58029deac20ae071b2..750a81b8c9839a495d3c78dc1c1ef637743c1810 100644 (file)
@@ -41,11 +41,7 @@ func SetupDiGetDeviceInfoListDetail(DeviceInfoSet DevInfo) (DeviceInfoSetDetailD
                return
        }
 
-       return &DevInfoListDetailData{
-               ClassGUID:           _data.ClassGUID,
-               RemoteMachineHandle: _data.RemoteMachineHandle,
-               RemoteMachineName:   windows.UTF16ToString(_data.RemoteMachineName[:]),
-       }, nil
+       return _data.toGo(), nil
 }
 
 // GetDeviceInfoListDetail method retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.
@@ -247,15 +243,7 @@ func SetupDiGetDeviceInstallParams(DeviceInfoSet DevInfo, DeviceInfoData *SP_DEV
                return
        }
 
-       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[:]),
-       }, nil
+       return _data.toGo(), nil
 }
 
 // GetDeviceInstallParams method retrieves device installation parameters for a device information set or a particular device information element.
@@ -275,23 +263,12 @@ func (DeviceInfoSet DevInfo) GetClassInstallParams(DeviceInfoData *SP_DEVINFO_DA
 
 // SetupDiSetDeviceInstallParams function sets device installation parameters for a device information set or a particular device information element.
 func SetupDiSetDeviceInstallParams(DeviceInfoSet DevInfo, DeviceInfoData *SP_DEVINFO_DATA, DeviceInstallParams *DevInstallParams) (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)
+       _data, err := DeviceInstallParams.toWindows()
        if err != nil {
                return
        }
-       copy(_data.DriverPath[:], driverPathUTF16)
 
-       return setupDiSetDeviceInstallParams(DeviceInfoSet, DeviceInfoData, &_data)
+       return setupDiSetDeviceInstallParams(DeviceInfoSet, DeviceInfoData, _data)
 }
 
 // SetDeviceInstallParams member sets device installation parameters for a device information set or a particular device information element.
index c93d3aa9df520f0f5cc56b9ca26e111c0c369bde..9bbe38b67e04ea8e828da9c2eb899ceda52786d7 100644 (file)
@@ -6,6 +6,9 @@
 package setupapi
 
 import (
+       "syscall"
+       "unsafe"
+
        "golang.org/x/sys/windows"
 )
 
@@ -46,6 +49,14 @@ type _SP_DEVINFO_LIST_DETAIL_DATA struct {
        RemoteMachineName   [SP_MAX_MACHINENAME_LENGTH]uint16
 }
 
+func (_data _SP_DEVINFO_LIST_DETAIL_DATA) toGo() *DevInfoListDetailData {
+       return &DevInfoListDetailData{
+               ClassGUID:           _data.ClassGUID,
+               RemoteMachineHandle: _data.RemoteMachineHandle,
+               RemoteMachineName:   windows.UTF16ToString(_data.RemoteMachineName[:]),
+       }
+}
+
 // DevInfoListDetailData is a structure for detailed information on a device information set (used for SetupDiGetDeviceInfoListDetail which supercedes the functionality of SetupDiGetDeviceInfoListClass).
 type DevInfoListDetailData struct {
        ClassGUID           windows.GUID
@@ -111,6 +122,18 @@ type _SP_DEVINSTALL_PARAMS struct {
        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[:]),
+       }
+}
+
 // 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
@@ -122,6 +145,26 @@ type DevInstallParams struct {
        DriverPath               string
 }
 
+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)
+       if err != nil {
+               return
+       }
+       copy(_data.DriverPath[:], driverPathUTF16)
+
+       return
+}
+
 // DI_FLAGS is SP_DEVINSTALL_PARAMS.Flags values
 type DI_FLAGS uint32