From: Bernhard Kölbl bkoelbl@codeweavers.com
--- dlls/setupapi/tests/devinst.c | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+)
diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c index bf5d3c2a953..d12653abfe8 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c @@ -4732,6 +4732,65 @@ static void test_driver_store(struct testsign_context *ctx) ok(ret, "Failed to destroy device list.\n"); }
+static void test_device_enum(void) +{ + SP_DEVINFO_DATA devinfodata; + DEVPROPTYPE proptype; + HDEVINFO set; + WCHAR buf[2048]; + BOOL next, ret; + DWORD i, len; + + set = SetupDiGetClassDevsExW(&GUID_DEVCLASS_DISPLAY, NULL, 0, DIGCF_PRESENT, 0, NULL, 0); + ok(set != INVALID_HANDLE_VALUE, "SetupDiGetClassDevsExW failed with %lu.\n", GetLastError()); + + ZeroMemory(&devinfodata, sizeof(SP_DEVINFO_DATA)); + devinfodata.cbSize = sizeof(SP_DEVINFO_DATA); + + i = 0; + next = SetupDiEnumDeviceInfo(set, i, &devinfodata); + ok(next, "Failed getting at least one element from SetupDiEnumDeviceInfo with error %lu.\n", GetLastError()); + + while (next) + { + ZeroMemory(buf, sizeof(buf)); + len = 0; + ret = SetupDiGetDevicePropertyW(set, &devinfodata, &DEVPKEY_Device_DriverDate, &proptype, (BYTE *)buf, sizeof(buf), &len, 0); + todo_wine ok(ret, "getting DEVPKEY_Device_DriverDate failed with error %lu.\n", GetLastError()); + todo_wine ok(len == sizeof(LARGE_INTEGER), "got unexpected length.\n"); + + ZeroMemory(buf, sizeof(buf)); + len = 0; + ret = SetupDiGetDevicePropertyW(set, &devinfodata, &DEVPKEY_Device_DriverVersion, &proptype, (BYTE *)buf, sizeof(buf), &len, 0); + todo_wine ok(ret, "getting DEVPKEY_Device_DriverVersion failed with error %lu.\n", GetLastError()); + todo_wine ok(len > 0, "got unexpected length.\n"); + + ZeroMemory(buf, sizeof(buf)); + len = 0; + ret = SetupDiGetDevicePropertyW(set, &devinfodata, &DEVPKEY_Device_DriverDesc, &proptype, (BYTE *)buf, sizeof(buf), &len, 0); + todo_wine ok(ret, "getting DEVPKEY_Device_DriverDesc failed with error %lu.\n", GetLastError()); + todo_wine ok(len > 0, "got unexpected length.\n"); + + ZeroMemory(buf, sizeof(buf)); + len = 0; + ret = SetupDiGetDevicePropertyW(set, &devinfodata, &DEVPKEY_Device_DriverProvider, &proptype, (BYTE *)buf, sizeof(buf), &len, 0); + todo_wine ok(ret, "getting DEVPKEY_Device_DriverProvider failed with error %lu.\n", GetLastError()); + todo_wine ok(len > 0, "got unexpected length.\n"); + + ZeroMemory(buf, sizeof(buf)); + len = 0; + ret = SetupDiGetDevicePropertyW(set, &devinfodata, &DEVPKEY_Device_DriverCoInstallers, &proptype, (BYTE *)buf, sizeof(buf), &len, 0); + ok(!ret, "getting DEVPKEY_Device_DriverCoInstallers failed with error %lu.\n", GetLastError()); + ok(len == 0, "got unexpected length.\n"); + + i++; + next = SetupDiEnumDeviceInfo(set, i, &devinfodata); + } + + if (set) + SetupDiDestroyDeviceInfoList(set); +} + START_TEST(devinst) { static BOOL (WINAPI *pIsWow64Process)(HANDLE, BOOL *); @@ -4779,6 +4838,7 @@ START_TEST(devinst) test_call_class_installer(); test_get_class_devs(); test_SetupDiOpenDeviceInterface(); + test_device_enum();
if (!testsign_create_cert(&ctx)) return;