Я следующий фрагмент кода,Получить указатель на интерфейс IUpdate2
IUpdateSession *iUpdate;
IUpdateSearcher *updateSearcher;
ISearchResult* pISearchResults;
IUpdateCollection* pIUpdateCollection;
IStringCollection *pIStrCollCVEs;
IUpdate2 *pIUpdate;
long lUpdateCount;
...
CoCreateInstance(
CLSID_UpdateSession,
NULL,
CLSCTX_INPROC_SERVER,
IID_IUpdateSession,
(LPVOID*)&iUpdate
);
iUpdate->CreateUpdateSearcher(&updateSearcher);
printf("\n Searching updates");
updateSearcher->Search(_bstr_t(_T("IsInstalled = 0")), &pISearchResults);
printf("\n Following updates found..\n");
pISearchResults->get_Updates(&pIUpdateCollection);
pIUpdateCollection->get_Count(&lUpdateCount);
LONG lCount;
BSTR buff;
while (0 != lUpdateCount)
{
pIUpdateCollection->get_Item(lUpdateCount, &pIUpdate);
pIUpdate->get_CveIDs(&pIStrCollCVEs);
pIStrCollCVEs->get_Count(&lCount);
pIUpdate->get_Title(&buff);
printf("TITLE : %s \n", buff);
while(0 != lCount)
{
pIStrCollCVEs ->get_Item(lCount, &buff);
_bstr_t b(buff);
printf("CVEID = %s \n", buff);
lCount --;
}
printf("\n");
lUpdateCount --;
}
::CoUninitialize();
getchar();
ОШИБКА: ошибка C2664: 'IUpdateCollection :: get_Item': не может преобразовать параметр 2 от 'IUpdate2 * *' до 'IUpdate * *'
@ Line43
Как получить указатель на интерфейс IUpdate2,
Дайте ему правильный тип указателя интерфейса, затем запросите тот, который вам нужен позже. Кроме того, буквально * ни одна из соответствующих переменных в этом вопросе объявлена здесь, что делает невозможным просмотр их типов. Пожалуйста, отправьте код, который делает * смысл *. Этот код также протекает как «Титаник». – WhozCraig
Я хочу использовать интерфейс 'IUpdate2' для использования функции' get_cveIDs() '. И про утечки для COM-интерфейсов ,,, это просто попытка, а не окончательный код, поэтому отлично с этим ... :) – 51k