[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, &paramsW);
>   }
>   
>   /***********************************************************************
>    *              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