implemented SetupDiSetSelectedDriverA Modified: trunk/reactos/lib/setupapi/devinst.c Modified: trunk/reactos/lib/setupapi/setupapi.spec _____
Modified: trunk/reactos/lib/setupapi/devinst.c --- trunk/reactos/lib/setupapi/devinst.c 2005-10-26 18:19:20 UTC (rev 18777) +++ trunk/reactos/lib/setupapi/devinst.c 2005-10-26 19:00:08 UTC (rev 18778) @@ -121,7 +121,7 @@
struct InfFileDetails { HINF hInf; - ULONG References; + LONG References; };
struct DriverInfoElement /* Element of DeviceInfoSet.DriverListHead and DeviceInfoElement.DriverListHead */ @@ -4974,7 +4974,71 @@ return ret; }
+
/*********************************************************************** + * SetupDiSetSelectedDriverA (SETUPAPI.@) + */ +BOOL WINAPI +SetupDiSetSelectedDriverA( + IN HDEVINFO DeviceInfoSet, + IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, + IN OUT PSP_DRVINFO_DATA_A DriverInfoData OPTIONAL) +{ + SP_DRVINFO_DATA_V1_W DriverInfoDataW; + PSP_DRVINFO_DATA_W pDriverInfoDataW = NULL; + BOOL ret = FALSE; + + if (DriverInfoData != NULL) + { + if (DriverInfoData->cbSize != sizeof(SP_DRVINFO_DATA_V2_A) && + DriverInfoData->cbSize != sizeof(SP_DRVINFO_DATA_V1_A)); + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + DriverInfoDataW.cbSize = sizeof(SP_DRVINFO_DATA_V1_W); + DriverInfoDataW.Reserved = DriverInfoData->Reserved; + + if (DriverInfoDataW.Reserved == 0) + { + DriverInfoDataW.DriverType = DriverInfoData->DriverType; + + /* convert the strings to unicode */ + if (!MultiByteToWideChar(CP_ACP, + 0, + DriverInfoData->Description, + LINE_LEN, + DriverInfoDataW.Description, + LINE_LEN) || + !MultiByteToWideChar(CP_ACP, + 0, + DriverInfoData->ProviderName, + LINE_LEN, + DriverInfoDataW.ProviderName, + LINE_LEN)) + { + return FALSE; + } + } + + pDriverInfoDataW = (PSP_DRVINFO_DATA_W)&DriverInfoDataW; + } + + ret = SetupDiSetSelectedDriverW(DeviceInfoSet, + DeviceInfoData, + pDriverInfoDataW); + + if (ret && pDriverInfoDataW != NULL) + { + DriverInfoData->Reserved = DriverInfoDataW.Reserved; + } + + return ret; +} + + +/********************************************************************** * * SetupDiSetSelectedDriverW (SETUPAPI.@) */ BOOL WINAPI _____
Modified: trunk/reactos/lib/setupapi/setupapi.spec --- trunk/reactos/lib/setupapi/setupapi.spec 2005-10-26 18:19:20 UTC (rev 18777) +++ trunk/reactos/lib/setupapi/setupapi.spec 2005-10-26 19:00:08 UTC (rev 18778) @@ -381,7 +381,7 @@
@ stub SetupDiSetDriverInstallParamsA @ stub SetupDiSetDriverInstallParamsW @ stub SetupDiSetSelectedDevice -@ stub SetupDiSetSelectedDriverA +@ stdcall SetupDiSetSelectedDriverA(ptr ptr ptr) @ stdcall SetupDiSetSelectedDriverW(ptr ptr ptr) @ stub SetupDiUnremoveDevice @ stub SetupDuplicateDiskSpaceListA