diff --git a/dll/win32/setupapi/CMakeLists.txt b/dll/win32/setupapi/CMakeLists.txt index e1b473f92c6..ac97433e49c 100644 --- a/dll/win32/setupapi/CMakeLists.txt +++ b/dll/win32/setupapi/CMakeLists.txt @@ -44,6 +44,6 @@ add_library(setupapi MODULE set_module_type(setupapi win32dll UNICODE) target_link_libraries(setupapi uuid wine ${PSEH_LIB}) add_delay_importlibs(setupapi comdlg32 shell32 winspool.drv wintrust) -add_importlibs(setupapi gdi32 comctl32 advapi32 user32 rpcrt4 version msvcrt kernel32 ntdll) +add_importlibs(setupapi gdi32 comctl32 advapi32 user32 rpcrt4 version msvcrt kernel32 ntdll shell32) add_pch(setupapi setupapi_private.h "${PCH_SKIP_SOURCE}") add_cd_file(TARGET setupapi DESTINATION reactos/system32 FOR all) diff --git a/dll/win32/setupapi/dialog.c b/dll/win32/setupapi/dialog.c index b1611dc32ba..9d65c7e3565 100644 --- a/dll/win32/setupapi/dialog.c +++ b/dll/win32/setupapi/dialog.c @@ -228,7 +228,7 @@ UINT WINAPI SetupPromptForDiskW(HWND hwndParent, PCWSTR DialogTitle, PCWSTR Disk debugstr_w(TagFile), DiskPromptStyle, PathBuffer, PathBufferSize, PathRequiredSize); - if(!FileSought) + if(!FileSought || noBrowse) { SetLastError(ERROR_INVALID_PARAMETER); return DPROMPT_CANCEL; diff --git a/dll/win32/setupapi/driver.c b/dll/win32/setupapi/driver.c index 3ead218522b..9596de69fb1 100644 --- a/dll/win32/setupapi/driver.c +++ b/dll/win32/setupapi/driver.c @@ -1998,6 +1998,60 @@ done: return ret; } +/*********************************************************************** + * SetupDiGetDriverInstallParamsW (SETUPAPI.@) + */ +BOOL WINAPI +SetupDiGetDriverInstallParamsA( + IN HDEVINFO DeviceInfoSet, + IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, + IN PSP_DRVINFO_DATA_A DriverInfoData, + OUT PSP_DRVINSTALL_PARAMS DriverInstallParams) +{ + BOOL ret = FALSE; + + ERR("SIMONE - %p %p %p %p\n", DeviceInfoSet, DeviceInfoData, DriverInfoData, DriverInstallParams); + + if (!DeviceInfoSet || !DriverInfoData || !DriverInstallParams) + SetLastError(ERROR_INVALID_PARAMETER); + else if (DeviceInfoSet == (HDEVINFO)INVALID_HANDLE_VALUE) + SetLastError(ERROR_INVALID_HANDLE); + else if (((struct DeviceInfoSet *)DeviceInfoSet)->magic != SETUP_DEVICE_INFO_SET_MAGIC) + SetLastError(ERROR_INVALID_HANDLE); + else if (DeviceInfoData && DeviceInfoData->cbSize != sizeof(SP_DEVINFO_DATA)) + SetLastError(ERROR_INVALID_USER_BUFFER); + else if (DriverInfoData->cbSize != sizeof(SP_DRVINFO_DATA_V1_A) && DriverInfoData->cbSize != sizeof(SP_DRVINFO_DATA_V2_A)) + SetLastError(ERROR_INVALID_USER_BUFFER); + else if (DriverInstallParams->cbSize != sizeof(SP_DRVINSTALL_PARAMS)) + SetLastError(ERROR_INVALID_USER_BUFFER); + else + { + SP_DEVINSTALL_PARAMS_A InstallParams; + + InstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS_A); + if (SetupDiGetDeviceInstallParamsA(DeviceInfoSet, DeviceInfoData, &InstallParams)) + { + struct DriverInfoElement *driverInfo; + driverInfo = (struct DriverInfoElement *)InstallParams.ClassInstallReserved; + ERR("SIMONE - SetupDiGetDeviceInstallParamsA return - driverInfo=%p\n",driverInfo); + if (driverInfo == NULL) + SetLastError(ERROR_NO_DRIVER_SELECTED); + else + { + ERR("SIMONE - SetupDiGetDeviceInstallParamsA return - driverInfo->Params=0x%X DriverInstallParams->cbSize=%d\n",driverInfo->Params,DriverInstallParams->cbSize); + memcpy( + DriverInstallParams, + &driverInfo->Params, + DriverInstallParams->cbSize); + ret = TRUE; + } + } + } + + TRACE("Returning %d\n", ret); + return ret; +} + /*********************************************************************** * SetupDiGetDriverInstallParamsW (SETUPAPI.@) */ diff --git a/dll/win32/setupapi/query.c b/dll/win32/setupapi/query.c index 58c3d5b888e..66dbb40ec22 100644 --- a/dll/win32/setupapi/query.c +++ b/dll/win32/setupapi/query.c @@ -693,3 +693,373 @@ BOOL WINAPI SetupQueryInfOriginalFileInformationW( return TRUE; } + +/*********************************************************************** + * pSetupGetRealSystemTime (SETUPAPI.@) + */ + +SYSTEMTIME WINAPI pSetupGetRealSystemTime(){ + SYSTEMTIME time; + GetSystemTime(&time); + return time; +} + +/*********************************************************************** + * SetupFreeSourceListA (SETUPAPI.@) + */ + +BOOL WINAPI SetupFreeSourceListA( + PCSTR **List, + UINT Count) +{ + TRACE("(%p, %d)\n", List, Count); + + for(int i=0; i