setupapi: Move Go<>Windows struct marshaling to types_windows.go
Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
		
							parent
							
								
									99a3b628e9
								
							
						
					
					
						commit
						7b636380e5
					
				@ -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.
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user