المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : AddScanPackageService is retruning E_INVALIDARG



C++ Programming
04-08-2009, 10:42 AM
Hello All ,
My following Code is in cpp and use COM interfaces, My complile and build with 0 errors and 0 warnings .But at run it gives exception .In code line
hr=serviceManager->AddScanPackageService(BSTR("Offline SyncService"),BSTR("c:\\wsusscan.cab"),0,&service);

when this line exicute value of hr is E_INVALIDARG.
plz help my code is as folloing .

/////////////////////////////////////////////////////////////////////

{
IUpdateSession * session = 0;
IUpdateServiceManager * serviceManager = 0;
IUpdateService * service = 0;
IUpdateSearcher * searcher = 0;
ISearchResult * searchResult = 0;
IUpdateCollection *collection=0;
IUpdate *update=0;
HRESULT hr;
CoInitialize(NULL);
hr = CoCreateInstance(CLSID_UpdateServiceManager, 0, CLSCTX_ALL,
IID_IUpdateServiceManager,(LPVOID *)&serviceManager);

hr=CoCreateInstance(CLSID_UpdateSession,0,CLSCTX_ALL,IID_IUpdateSession,
(LPVOID *)&session);
////////////////////////////////////////////
hr=serviceManager->AddScanPackageService(BSTR("Offline Sync Service"),BSTR("c:\\wsusscan.cab"),0,&service);
//////////////////////////////////////////////////////////
hr=session->CreateUpdateSearcher(&searcher);

ServerSelection ss={ ssOthers } ;
BSTR str=0;
hr=searcher->put_ServerSelection(ss);
hr=service->get_ServiceID(&str);
hr=searcher->put_ServiceID(str);
hr=searcher->Search(L"IsInstalled=0",&searchResult );
hr=searchResult->get_Updates(&collection);
LONG count;
hr=collection->get_Count(&count);

for(LONG i=0;iget_Item(i,&update);
update->get_Title(&str);
printf("%s",(char *)str);
}

}


///////////////////////////////////////////////////////////////////////



Thanks for reading this
question/ replying answer.