Проблемы с производительностью IUpdateSearcher
Я использую IUpdateSession
а также IUpdateSearcher
в попытке получить список доступных обновлений для системы Windows.
hr = CoCreateInstance(CLSID_UpdateSession, NULL, CLSCTX_INPROC_SERVER, IID_IUpdateSession, (void**)&pUpdateSession);
if (FAILED(hr) || pUpdateSession == NULL)
{
return;
}
hr = pUpdateSession->CreateUpdateSearcher(&pUpdateSearcher);
if (FAILED(hr) || pUpdateSearcher == NULL)
{
return;
}
pUpdateSearcher->put_Online(VARIANT_FALSE);
pUpdateSearcher->put_CanAutomaticallyUpgradeService(VARIANT_FALSE);
pUpdateSearcher->put_IncludePotentiallySupersededUpdates(VARIANT_FALSE);
hr = pUpdateSearcher->Search(BSTR(L"IsInstalled=0 AND IsHidden=0"), &type);
if (FAILED(hr) || type == NULL)
{
return;
}
else
{
... Print results etc. etc.
}
Это прекрасно работает, когда у вас есть одно (или небольшое количество) обновлений. При тестировании на новой машине с 109 доступными обновлениями ->Search()
обработка звонка занимает более 10 минут.
Это нормальное поведение или что-то можно сделать для улучшения производительности?
Заранее благодарю за любую помощь. Другие решения для получения списка доступных обновлений также приветствуются.
1 ответ
Это нормальное поведение, и я думаю, что вы, возможно, ищете обновления для новой виртуальной машины Windows 7.