[PATCH 2/3] setupapi: Implement SetupDiSetDeviceInstallParams().
Aric Stewart
aric at codeweavers.com
Thu May 16 06:58:20 CDT 2019
Signed-off-by: Aric Stewart <aric at codeweavers.com>
On 5/15/19 10:56 PM, Zebediah Figura wrote:
> Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
> ---
> dlls/setupapi/devinst.c | 48 +++++++++++++++++++++++++++++++----------
> 1 file changed, 37 insertions(+), 11 deletions(-)
>
> diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c
> index 46aeb5a7d6..43b86c7dd0 100644
> --- a/dlls/setupapi/devinst.c
> +++ b/dlls/setupapi/devinst.c
> @@ -3600,25 +3600,51 @@ BOOL WINAPI SetupDiGetDeviceInstallParamsA(HDEVINFO devinfo,
> /***********************************************************************
> * SetupDiSetDeviceInstallParamsA (SETUPAPI.@)
> */
> -BOOL WINAPI SetupDiSetDeviceInstallParamsA(
> - HDEVINFO DeviceInfoSet,
> - PSP_DEVINFO_DATA DeviceInfoData,
> - PSP_DEVINSTALL_PARAMS_A DeviceInstallParams)
> +BOOL WINAPI SetupDiSetDeviceInstallParamsA(HDEVINFO devinfo,
> + SP_DEVINFO_DATA *device_data, SP_DEVINSTALL_PARAMS_A *params)
> {
> - FIXME("(%p, %p, %p) stub\n", DeviceInfoSet, DeviceInfoData, DeviceInstallParams);
> + SP_DEVINSTALL_PARAMS_W paramsW;
>
> - return TRUE;
> + if (params->cbSize != sizeof(SP_DEVINSTALL_PARAMS_A))
> + {
> + SetLastError(ERROR_INVALID_USER_BUFFER);
> + return FALSE;
> + }
> +
> + paramsW.cbSize = sizeof(paramsW);
> + paramsW.Flags = params->Flags;
> + paramsW.FlagsEx = params->FlagsEx;
> + paramsW.hwndParent = params->hwndParent;
> + paramsW.InstallMsgHandler = params->InstallMsgHandler;
> + paramsW.InstallMsgHandlerContext = params->InstallMsgHandlerContext;
> + paramsW.FileQueue = params->FileQueue;
> + paramsW.ClassInstallReserved = params->ClassInstallReserved;
> + paramsW.Reserved = params->Reserved;
> + MultiByteToWideChar(CP_ACP, 0, params->DriverPath, -1, paramsW.DriverPath, sizeof(paramsW.DriverPath));
> +
> + return SetupDiSetDeviceInstallParamsW(devinfo, device_data, ¶msW);
> }
>
> /***********************************************************************
> * SetupDiSetDeviceInstallParamsW (SETUPAPI.@)
> */
> -BOOL WINAPI SetupDiSetDeviceInstallParamsW(
> - HDEVINFO DeviceInfoSet,
> - PSP_DEVINFO_DATA DeviceInfoData,
> - PSP_DEVINSTALL_PARAMS_W DeviceInstallParams)
> +BOOL WINAPI SetupDiSetDeviceInstallParamsW(HDEVINFO devinfo,
> + SP_DEVINFO_DATA *device_data, SP_DEVINSTALL_PARAMS_W *params)
> {
> - FIXME("(%p, %p, %p) stub\n", DeviceInfoSet, DeviceInfoData, DeviceInstallParams);
> + struct device *device;
> +
> + TRACE("devinfo %p, device_data %p, params %p.\n", devinfo, device_data, params);
> +
> + if (params->cbSize != sizeof(SP_DEVINSTALL_PARAMS_W))
> + {
> + SetLastError(ERROR_INVALID_USER_BUFFER);
> + return FALSE;
> + }
> +
> + if (!(device = get_device(devinfo, device_data)))
> + return FALSE;
> +
> + device->params = *params;
>
> return TRUE;
> }
>
More information about the wine-devel
mailing list