Module: wine Branch: refs/heads/master Commit: 94515450fac20ad00246b4d1ceeeaa8a7ae35ffa URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=94515450fac20ad00246b4d1...
Author: James Hawkins truiken@gmail.com Date: Tue Feb 14 12:23:58 2006 +0100
setupapi: Handle the INFINFO_REVERSE_DEFAULT_SEARCH search flag.
---
dlls/setupapi/query.c | 32 ++++++++++++++++++++++++++++++++ dlls/setupapi/tests/query.c | 7 ++----- 2 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/dlls/setupapi/query.c b/dlls/setupapi/query.c index 1f4478e..957cba6 100644 --- a/dlls/setupapi/query.c +++ b/dlls/setupapi/query.c @@ -60,6 +60,36 @@ static BOOL fill_inf_info(HINF inf, PSP_ return TRUE; }
+static HINF search_for_inf(LPCVOID InfSpec, DWORD SearchControl) +{ + HINF hInf = INVALID_HANDLE_VALUE; + WCHAR inf_path[MAX_PATH]; + + static const WCHAR infW[] = {'\','i','n','f','\',0}; + static const WCHAR system32W[] = {'\','s','y','s','t','e','m','3','2','\',0}; + + if (SearchControl == INFINFO_REVERSE_DEFAULT_SEARCH) + { + GetWindowsDirectoryW(inf_path, MAX_PATH); + lstrcatW(inf_path, system32W); + lstrcatW(inf_path, InfSpec); + + hInf = SetupOpenInfFileW(inf_path, NULL, + INF_STYLE_OLDNT | INF_STYLE_WIN4, NULL); + if (hInf != INVALID_HANDLE_VALUE) + return hInf; + + GetWindowsDirectoryW(inf_path, MAX_PATH); + lstrcpyW(inf_path, infW); + lstrcatW(inf_path, InfSpec); + + return SetupOpenInfFileW(inf_path, NULL, + INF_STYLE_OLDNT | INF_STYLE_WIN4, NULL); + } + + return INVALID_HANDLE_VALUE; +} + /*********************************************************************** * SetupGetInfInformationA (SETUPAPI.@) * @@ -131,6 +161,8 @@ BOOL WINAPI SetupGetInfInformationW(LPCV INF_STYLE_OLDNT | INF_STYLE_WIN4, NULL); break; case INFINFO_REVERSE_DEFAULT_SEARCH: + inf = search_for_inf(InfSpec, SearchControl); + break; case INFINFO_INF_PATH_LIST_SEARCH: FIXME("Unhandled search control: %ld\n", SearchControl);
diff --git a/dlls/setupapi/tests/query.c b/dlls/setupapi/tests/query.c index c5581f8..1113aa1 100644 --- a/dlls/setupapi/tests/query.c +++ b/dlls/setupapi/tests/query.c @@ -231,11 +231,8 @@ static void test_SetupGetInfInformation(
/* test the INFINFO_REVERSE_DEFAULT_SEARCH search flag */ ret = pSetupGetInfInformationA("test.inf", INFINFO_REVERSE_DEFAULT_SEARCH, info, size, &size); - todo_wine - { - ok(ret == TRUE, "Expected SetupGetInfInformation to succeed\n"); - ok(check_info_filename(info, inf_two), "Expected returned filename to be equal\n"); - } + ok(ret == TRUE, "Expected SetupGetInfInformation to succeed\n"); + ok(check_info_filename(info, inf_two), "Expected returned filename to be equal\n");
DeleteFileA(inf_filename); DeleteFileA(inf_one);