Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

862 lines
34 KiB

  1. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // BVTCIMv2.CPP
  4. //
  5. //
  6. // Copyright (c)2000 Microsoft Corporation, All Rights Reserved
  7. //
  8. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  9. #include <bvt.h>
  10. #include "bvtrefresh.h"
  11. #define NO_ERRORS_EXPECTED FALSE,__FILE__,__LINE__
  12. #define ERRORS_CAN_BE_EXPECTED TRUE,__FILE__,__LINE__
  13. int TestSemiSyncEvent(WCHAR * wcsEventInfo, BOOL fCompareResults);
  14. int TestAsyncEvent(WCHAR * wcsEventInfo, BOOL fCompareResults);
  15. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  16. int GetListOfProviders( int nWhichTest, ItemList & MasterList )
  17. {
  18. int nRc = FATAL_ERROR;
  19. CHString sProviders;
  20. if( g_Options.GetSpecificOptionForAPITest(L"PROVIDERS",sProviders,nWhichTest) )
  21. {
  22. //=======================================================
  23. // Parse the list of Providers to process
  24. //=======================================================
  25. if( InitMasterList(sProviders,MasterList))
  26. {
  27. nRc = SUCCESS;
  28. }
  29. }
  30. return nRc;
  31. }
  32. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  33. int GetNextProviderNamespace( int i, int nWhichTest, ItemList & MasterList, CHString & sNamespace, CHString & sKey )
  34. {
  35. int nRc = FATAL_ERROR;
  36. ItemInfo * p = MasterList.GetAt(i);
  37. if( p )
  38. {
  39. CHString sTmp;
  40. sKey = p->Item;
  41. if( g_Options.GetSpecificOptionForAPITest(sKey,sTmp, nWhichTest) )
  42. {
  43. nRc = CrackNamespace(WPTR sTmp,sNamespace, NO_ERRORS_EXPECTED);
  44. }
  45. }
  46. return nRc;
  47. }
  48. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  49. int GetNextNamespaceAndRunRequestedTests( int nWhichTest, int & i, ItemList & MasterList, CHString & sNamespace, CHString & sKey,
  50. BOOL fCompareResults, BOOL fSuppressHeader, IWbemServices ** ppNamespace )
  51. {
  52. //==========================================================================
  53. // Open the requested namespaces
  54. //==========================================================================
  55. int nRc = FATAL_ERROR;
  56. if( i == -1 )
  57. {
  58. LogTestBeginning(nWhichTest,fSuppressHeader);
  59. nRc = GetListOfProviders( nWhichTest, MasterList );
  60. }
  61. else
  62. {
  63. nRc = SUCCESS;
  64. }
  65. if( SUCCESS == nRc )
  66. {
  67. i++;
  68. // =====================================================================
  69. // Make sure we are still in range
  70. // =====================================================================
  71. if( i < MasterList.Size() )
  72. {
  73. nRc = GetNextProviderNamespace(i, 200, MasterList, sNamespace, sKey);
  74. if( SUCCESS == nRc )
  75. {
  76. // ==============================================================
  77. // Open the namespace
  78. // ==============================================================
  79. nRc = OpenNamespaceAndKeepOpen( ppNamespace,WPTR sNamespace,FALSE,fCompareResults);
  80. }
  81. }
  82. else
  83. {
  84. nRc = NO_MORE_DATA;
  85. }
  86. }
  87. if( SUCCESS == nRc )
  88. {
  89. nRc = RunRequestedTests(nWhichTest, fCompareResults);
  90. }
  91. return nRc;
  92. }
  93. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  94. //*****************************************************************************************************************
  95. // Test 200
  96. //*****************************************************************************************************************
  97. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  98. int ProviderOpenNamespace(BOOL fCompareResults, BOOL fSuppressHeader)
  99. {
  100. //==========================================================================
  101. // Open the requested namespaces
  102. //==========================================================================
  103. int nRc = FATAL_ERROR;
  104. IWbemServices * pNamespace = NULL;
  105. ItemList MasterList;
  106. CHString sNamespace, sKey;
  107. int i = -1;
  108. while(TRUE)
  109. {
  110. nRc = GetNextNamespaceAndRunRequestedTests( 200, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  111. // ==============================================================
  112. // Release the pointers
  113. // ==============================================================
  114. SAFE_RELEASE_PTR(pNamespace);
  115. if( nRc == NO_MORE_DATA )
  116. {
  117. nRc = SUCCESS;
  118. break;
  119. }
  120. if( nRc == FATAL_ERROR )
  121. {
  122. break;
  123. }
  124. }
  125. LogTestEnding(200,nRc,fSuppressHeader);
  126. return nRc;
  127. }
  128. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  129. //*****************************************************************************************************************
  130. // Test 201
  131. //*****************************************************************************************************************
  132. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  133. int ProviderEnumerateClasses(BOOL fCompareResults, BOOL fSuppressHeader)
  134. {
  135. int nRc = FATAL_ERROR;
  136. IWbemServices * pNamespace = NULL;
  137. ItemList MasterList;
  138. CHString sNamespace;
  139. int i = -1;
  140. while(TRUE)
  141. {
  142. CHString sKey;
  143. nRc = GetNextNamespaceAndRunRequestedTests( 201, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  144. if( SUCCESS != nRc )
  145. {
  146. break;
  147. }
  148. // =============================================================
  149. // Get the list of classes to make sure they are in namespace
  150. // =============================================================
  151. CHString sClasses;
  152. if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sClasses, 201 ) )
  153. {
  154. ItemList ClassList;
  155. if(InitMasterList(sClasses, ClassList))
  156. {
  157. for( int i = 0; i < ClassList.Size(); i++ )
  158. {
  159. ItemInfo * pClass = ClassList.GetAt(i);
  160. CHString sClassName;
  161. if( g_Options.GetSpecificOptionForAPITest( WPTR pClass->Item,sClassName, 201 ) )
  162. {
  163. // =========================================================
  164. // Get the class name and expected results,
  165. // =========================================================
  166. CHString sClass;
  167. ItemList Results;
  168. nRc = CrackClassNameAndResults(WPTR sClassName, sClass, Results, NO_ERRORS_EXPECTED );
  169. if( SUCCESS == nRc )
  170. {
  171. // =========================================================
  172. // Get the enumeration flags
  173. // =========================================================
  174. ItemList FlagList;
  175. nRc = GetFlags(201, FlagList);
  176. if( SUCCESS == nRc )
  177. {
  178. for( int x = 0; x < FlagList.Size(); x++ )
  179. {
  180. ItemInfo * p = FlagList.GetAt(x);
  181. // =========================================================
  182. // Make sure those classes are in the namespace
  183. // =========================================================
  184. IEnumWbemClassObject * pEnum = NULL;
  185. nRc = EnumerateClassesAndLogErrors( pNamespace,&pEnum, p->dwFlags, WPTR sClass, WPTR sNamespace, NO_ERRORS_EXPECTED );
  186. if( SUCCESS == nRc )
  187. {
  188. if( fCompareResults )
  189. {
  190. if( x < Results.Size() )
  191. {
  192. ItemInfo * pResults = Results.GetAt(x);
  193. nRc = CompareResultsFromEnumeration(pEnum,pResults->Results,WPTR sClass, WPTR sNamespace);
  194. }
  195. }
  196. }
  197. SAFE_RELEASE_PTR(pEnum);
  198. }
  199. }
  200. }
  201. }
  202. }
  203. }
  204. }
  205. // =====================================================================
  206. // Release the pointers
  207. // =====================================================================
  208. SAFE_RELEASE_PTR(pNamespace);
  209. }
  210. if( nRc == NO_MORE_DATA )
  211. {
  212. nRc = SUCCESS;
  213. }
  214. LogTestEnding(201,nRc,fSuppressHeader);
  215. return nRc;
  216. }
  217. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  218. //*****************************************************************************************************************
  219. // Test 202
  220. //*****************************************************************************************************************
  221. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  222. int ProviderExecuteQueries(BOOL fCompareResults, BOOL fSuppressHeader)
  223. {
  224. int nRc = FATAL_ERROR;
  225. IWbemServices * pNamespace = NULL;
  226. ItemList MasterList;
  227. CHString sNamespace;
  228. int i = -1;
  229. while(TRUE)
  230. {
  231. CHString sKey;
  232. nRc = GetNextNamespaceAndRunRequestedTests( 202, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  233. if( SUCCESS != nRc )
  234. {
  235. break;
  236. }
  237. // =============================================================
  238. // Get the list of queries
  239. // =============================================================
  240. CHString sQueries;
  241. if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sQueries, 202 ) )
  242. {
  243. ItemList List;
  244. if(InitMasterList(sQueries, List))
  245. {
  246. for( int i = 0; i < List.Size(); i++ )
  247. {
  248. ItemInfo * p = List.GetAt(i);
  249. CHString sQuery;
  250. if( g_Options.GetSpecificOptionForAPITest(p->Item,sQuery,202) )
  251. {
  252. EventInfo Query;
  253. nRc = CrackEvent(WPTR sQuery, Query,NO_ERRORS_EXPECTED);
  254. if( SUCCESS == nRc )
  255. {
  256. //==================================================================
  257. // Regular query
  258. //==================================================================
  259. nRc = QueryAndCompareResults( pNamespace,WPTR Query.Query,Query.Results,WPTR sNamespace);
  260. if( nRc != S_OK )
  261. {
  262. break;
  263. }
  264. }
  265. }
  266. }
  267. }
  268. }
  269. // =====================================================================
  270. // Release the pointers
  271. // =====================================================================
  272. SAFE_RELEASE_PTR(pNamespace);
  273. }
  274. if( nRc == NO_MORE_DATA )
  275. {
  276. nRc = SUCCESS;
  277. }
  278. LogTestEnding(202,nRc,fSuppressHeader);
  279. return nRc;
  280. }
  281. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  282. //*****************************************************************************************************************
  283. // Test 203
  284. //*****************************************************************************************************************
  285. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  286. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  287. //*****************************************************************************************************************
  288. // Test 204
  289. //*****************************************************************************************************************
  290. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  291. int ProviderEnumerateInstances(BOOL fCompareResults, BOOL fSuppressHeader)
  292. {
  293. int nRc = FATAL_ERROR;
  294. IWbemServices * pNamespace = NULL;
  295. ItemList MasterList;
  296. CHString sNamespace;
  297. int i = -1;
  298. while(TRUE)
  299. {
  300. CHString sKey;
  301. nRc = GetNextNamespaceAndRunRequestedTests( 204, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  302. if( SUCCESS != nRc )
  303. {
  304. break;
  305. }
  306. // =============================================================
  307. // Get the list of instances
  308. // =============================================================
  309. CHString sInstances;
  310. if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sInstances, 204 ) )
  311. {
  312. // =========================================================
  313. // Get the enumeration flags
  314. // =========================================================
  315. ItemList FlagList;
  316. nRc = GetFlags(204, FlagList);
  317. if( SUCCESS == nRc )
  318. {
  319. for( int x = 0; x < FlagList.Size(); x++ )
  320. {
  321. ItemInfo * p = FlagList.GetAt(x);
  322. // =================================================
  323. // Make sure those instances are in the namespace
  324. // =================================================
  325. nRc = EnumerateInstancesAndCompare( sInstances, 204, fCompareResults, pNamespace,(WCHAR*)((const WCHAR*)sNamespace));
  326. }
  327. }
  328. }
  329. // =====================================================================
  330. // Release the pointers
  331. // =====================================================================
  332. SAFE_RELEASE_PTR(pNamespace);
  333. }
  334. if( nRc == NO_MORE_DATA )
  335. {
  336. nRc = SUCCESS;
  337. }
  338. LogTestEnding(204,nRc,fSuppressHeader);
  339. return nRc;
  340. }
  341. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  342. //*****************************************************************************************************************
  343. // Test 205
  344. //*****************************************************************************************************************
  345. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  346. int ProviderGetObjects(BOOL fCompareResults, BOOL fSuppressHeader)
  347. {
  348. int nRc = FATAL_ERROR;
  349. IWbemServices * pNamespace = NULL;
  350. ItemList MasterList;
  351. CHString sNamespace;
  352. int i = -1;
  353. while(TRUE)
  354. {
  355. CHString sKey;
  356. nRc = GetNextNamespaceAndRunRequestedTests( 205, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  357. if( SUCCESS != nRc )
  358. {
  359. break;
  360. }
  361. // =============================================================
  362. // Get the list of instances
  363. // =============================================================
  364. CHString sObjects;
  365. if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sObjects, 205 ) )
  366. {
  367. // =========================================================
  368. // Get the enumeration flags
  369. // =========================================================
  370. ItemList FlagList;
  371. nRc = GetFlags(205, FlagList);
  372. if( SUCCESS == nRc )
  373. {
  374. for( int x = 0; x < FlagList.Size(); x++ )
  375. {
  376. ItemInfo * p = FlagList.GetAt(x);
  377. // =================================================
  378. // Get the specific objects
  379. // =================================================
  380. nRc = GetSpecificObjects(sObjects, pNamespace, 205,WPTR sNamespace);
  381. }
  382. }
  383. }
  384. // =====================================================================
  385. // Release the pointers
  386. // =====================================================================
  387. SAFE_RELEASE_PTR(pNamespace);
  388. }
  389. if( nRc == NO_MORE_DATA )
  390. {
  391. nRc = SUCCESS;
  392. }
  393. LogTestEnding(205,nRc,fSuppressHeader);
  394. return nRc;
  395. }
  396. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  397. //*****************************************************************************************************************
  398. // Test 206
  399. //*****************************************************************************************************************
  400. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  401. int ProviderEnumerateMethods(BOOL fCompareResults, BOOL fSuppressHeader)
  402. {
  403. int nRc = FATAL_ERROR;
  404. IWbemServices * pNamespace = NULL;
  405. ItemList MasterList;
  406. CHString sNamespace;
  407. int i = -1;
  408. while(TRUE)
  409. {
  410. CHString sKey;
  411. nRc = GetNextNamespaceAndRunRequestedTests( 206, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  412. if( SUCCESS != nRc )
  413. {
  414. break;
  415. }
  416. // =============================================================
  417. // Get the list of Methods
  418. // =============================================================
  419. CHString sObjects;
  420. if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sObjects, 206 ) )
  421. {
  422. // =========================================================
  423. // Get the enumeration flags
  424. // =========================================================
  425. ItemList FlagList;
  426. nRc = GetFlags(206, FlagList);
  427. if( SUCCESS == nRc )
  428. {
  429. for( int x = 0; x < FlagList.Size(); x++ )
  430. {
  431. ItemInfo * p = FlagList.GetAt(x);
  432. // =========================================================
  433. // Delete the methods
  434. // =========================================================
  435. nRc = EnumerateMethodsAndCompare(sObjects, pNamespace, 206,fCompareResults,WPTR sNamespace);
  436. }
  437. }
  438. }
  439. // =====================================================================
  440. // Release the pointers
  441. // =====================================================================
  442. SAFE_RELEASE_PTR(pNamespace);
  443. }
  444. if( nRc == NO_MORE_DATA )
  445. {
  446. nRc = SUCCESS;
  447. }
  448. LogTestEnding(206,nRc,fSuppressHeader);
  449. return nRc;
  450. }
  451. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  452. //*****************************************************************************************************************
  453. // Test 207
  454. //*****************************************************************************************************************
  455. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  456. int ProviderExecuteMethods(BOOL fCompareResults, BOOL fSuppressHeader)
  457. {
  458. int nRc = FATAL_ERROR;
  459. IWbemServices * pNamespace = NULL;
  460. ItemList MasterList;
  461. CHString sNamespace;
  462. int i = -1;
  463. while(TRUE)
  464. {
  465. CHString sKey;
  466. nRc = GetNextNamespaceAndRunRequestedTests( 207, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  467. if( SUCCESS != nRc )
  468. {
  469. break;
  470. }
  471. // =============================================================
  472. // Get the list of Methods
  473. // =============================================================
  474. CHString sObjects;
  475. if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sObjects, 207 ) )
  476. {
  477. // =========================================================
  478. // Get the enumeration flags
  479. // =========================================================
  480. ItemList FlagList;
  481. nRc = GetFlags(207, FlagList);
  482. if( SUCCESS == nRc )
  483. {
  484. for( int x = 0; x < FlagList.Size(); x++ )
  485. {
  486. ItemInfo * p = FlagList.GetAt(x);
  487. // =========================================================
  488. // Delete the methods
  489. // =========================================================
  490. nRc = ExecuteMethodsAndCompare(sObjects, pNamespace, 207,fCompareResults,WPTR sNamespace);
  491. }
  492. }
  493. }
  494. // =====================================================================
  495. // Release the pointers
  496. // =====================================================================
  497. SAFE_RELEASE_PTR(pNamespace);
  498. }
  499. if( nRc == NO_MORE_DATA )
  500. {
  501. nRc = SUCCESS;
  502. }
  503. LogTestEnding(207,nRc,fSuppressHeader);
  504. return nRc;
  505. }
  506. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  507. //*****************************************************************************************************************
  508. // Test 208
  509. //*****************************************************************************************************************
  510. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  511. int ProviderSemiSyncEvents(BOOL fCompareResults, BOOL fSuppressHeader)
  512. {
  513. int nRc = FATAL_ERROR;
  514. IWbemServices * pNamespace = NULL;
  515. ItemList MasterList;
  516. CHString sNamespace;
  517. int i = -1;
  518. while(TRUE)
  519. {
  520. CHString sKey;
  521. nRc = GetNextNamespaceAndRunRequestedTests( 208, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  522. if( SUCCESS != nRc )
  523. {
  524. break;
  525. }
  526. // =============================================================
  527. // Get the list of Methods
  528. // =============================================================
  529. CHString sEvents;
  530. if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sEvents, 208 ) )
  531. {
  532. ItemList EventList;
  533. if(InitMasterList(sEvents, EventList))
  534. {
  535. for( int i = 0; i < EventList.Size(); i++ )
  536. {
  537. ItemInfo * pEvent = EventList.GetAt(i);
  538. CHString sEventInfo;
  539. // ==================================================
  540. // Get the event info
  541. // ==================================================
  542. if( g_Options.GetSpecificOptionForAPITest( WPTR pEvent->Item,sEventInfo, 208 ) )
  543. {
  544. nRc = TestSemiSyncEvent( WPTR sEventInfo, fCompareResults);
  545. }
  546. }
  547. }
  548. }
  549. // =====================================================================
  550. // Release the pointers
  551. // =====================================================================
  552. SAFE_RELEASE_PTR(pNamespace);
  553. }
  554. if( nRc == NO_MORE_DATA )
  555. {
  556. nRc = SUCCESS;
  557. }
  558. LogTestEnding(208,nRc,fSuppressHeader);
  559. return nRc;
  560. }
  561. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  562. //*****************************************************************************************************************
  563. // Test 209
  564. //*****************************************************************************************************************
  565. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  566. int ProviderTempAsyncEvents(BOOL fCompareResults, BOOL fSuppressHeader)
  567. {
  568. int nRc = FATAL_ERROR;
  569. IWbemServices * pNamespace = NULL;
  570. ItemList MasterList;
  571. CHString sNamespace;
  572. int i = -1;
  573. while(TRUE)
  574. {
  575. CHString sKey;
  576. nRc = GetNextNamespaceAndRunRequestedTests( 209, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  577. if( SUCCESS != nRc )
  578. {
  579. break;
  580. }
  581. // =============================================================
  582. // Get the list of Methods
  583. // =============================================================
  584. CHString sEvents;
  585. if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sEvents, 209 ) )
  586. {
  587. ItemList EventList;
  588. if(InitMasterList(sEvents, EventList))
  589. {
  590. for( int i = 0; i < EventList.Size(); i++ )
  591. {
  592. ItemInfo * pEvent = EventList.GetAt(i);
  593. CHString sEventInfo;
  594. // ==================================================
  595. // Get the event info
  596. // ==================================================
  597. if( g_Options.GetSpecificOptionForAPITest( WPTR pEvent->Item,sEventInfo, 209 ) )
  598. {
  599. nRc = TestAsyncEvent( WPTR sEventInfo, fCompareResults);
  600. }
  601. }
  602. }
  603. }
  604. // =====================================================================
  605. // Release the pointers
  606. // =====================================================================
  607. SAFE_RELEASE_PTR(pNamespace);
  608. }
  609. if( nRc == NO_MORE_DATA )
  610. {
  611. nRc = SUCCESS;
  612. }
  613. LogTestEnding(209,nRc,fSuppressHeader);
  614. return nRc;
  615. }
  616. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  617. //*****************************************************************************************************************
  618. // Test 210
  619. //*****************************************************************************************************************
  620. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  621. int RefreshLoop( WCHAR * wcsClass, IWbemServices * pNamespace)
  622. {
  623. int nRc = FATAL_ERROR;
  624. long lLoopCount = 0; // Refresh loop counter
  625. CRefresher aRefClient;
  626. // Initialize our container class
  627. // ==============================
  628. aRefClient.Initialize(pNamespace, wcsClass);
  629. // Add items to the refresher
  630. // ==========================
  631. // Add an enumerator
  632. // =================
  633. HRESULT hr = aRefClient.AddEnum(wcsClass);
  634. if ( SUCCEEDED( hr ) )
  635. {
  636. hr = aRefClient.AddObjects(wcsClass);
  637. if( SUCCEEDED(hr) )
  638. {
  639. // Begin the refreshing loop
  640. // =========================
  641. for ( lLoopCount = 0; lLoopCount < cdwNumReps; lLoopCount++ )
  642. {
  643. // Refresh!!
  644. // =========
  645. hr = aRefClient.Refresh();
  646. if ( SUCCEEDED (hr) )
  647. {
  648. aRefClient.EnumerateObjectData();
  649. aRefClient.EnumerateEnumeratorData();
  650. }
  651. else
  652. {
  653. break;
  654. }
  655. }
  656. }
  657. }
  658. aRefClient.RemoveEnum();
  659. aRefClient.RemoveObjects();
  660. return nRc;
  661. }
  662. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  663. int ProviderRefresher(BOOL fCompareResults, BOOL fSuppressHeader)
  664. {
  665. int nRc = FATAL_ERROR;
  666. IWbemServices * pNamespace = NULL;
  667. ItemList MasterList;
  668. CHString sNamespace;
  669. int i = -1;
  670. while(TRUE)
  671. {
  672. CHString sKey;
  673. nRc = GetNextNamespaceAndRunRequestedTests( 210, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  674. if( SUCCESS != nRc )
  675. {
  676. break;
  677. }
  678. // =============================================================
  679. // Get the list of Methods
  680. // =============================================================
  681. CHString sEvents;
  682. if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sEvents, 210) )
  683. {
  684. ItemList EventList;
  685. if(InitMasterList(sEvents, EventList))
  686. {
  687. for( int i = 0; i < EventList.Size(); i++ )
  688. {
  689. ItemInfo * pEvent = EventList.GetAt(i);
  690. CHString sEventInfo;
  691. // ==================================================
  692. // Get the event info
  693. // ==================================================
  694. if( g_Options.GetSpecificOptionForAPITest( WPTR pEvent->Item,sEventInfo, 210 ) )
  695. {
  696. // nRc = RefreshLoop( WPTR sEventInfo, pNamespace);
  697. }
  698. }
  699. }
  700. }
  701. // =====================================================================
  702. // Release the pointers
  703. // =====================================================================
  704. SAFE_RELEASE_PTR(pNamespace);
  705. }
  706. if( nRc == NO_MORE_DATA )
  707. {
  708. nRc = SUCCESS;
  709. }
  710. LogTestEnding(210,nRc,fSuppressHeader);
  711. return nRc;
  712. }
  713. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  714. //*****************************************************************************************************************
  715. // Test 211
  716. //*****************************************************************************************************************
  717. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  718. int ProviderCreateClasses(BOOL fCompareResults, BOOL fSuppressHeader)
  719. {
  720. int nRc = FATAL_ERROR;
  721. IWbemServices * pNamespace = NULL;
  722. ItemList MasterList;
  723. CHString sNamespace;
  724. int i = -1;
  725. while(TRUE)
  726. {
  727. CHString sKey;
  728. nRc = GetNextNamespaceAndRunRequestedTests( 211, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  729. if( SUCCESS != nRc )
  730. {
  731. break;
  732. }
  733. // =========================================================
  734. // Get the enumeration flags
  735. // =========================================================
  736. ItemList FlagList;
  737. nRc = GetFlags(211, FlagList);
  738. if( SUCCESS == nRc )
  739. {
  740. for( int x = 0; x < FlagList.Size(); x++ )
  741. {
  742. ItemInfo * p = FlagList.GetAt(x);
  743. // =========================================================
  744. // Create classes
  745. // =========================================================
  746. nRc = CreateClassesForSpecificTest(pNamespace, WPTR sNamespace, WPTR sKey,211);
  747. }
  748. }
  749. // =====================================================================
  750. // Release the pointers
  751. // =====================================================================
  752. SAFE_RELEASE_PTR(pNamespace);
  753. }
  754. if( nRc == NO_MORE_DATA )
  755. {
  756. nRc = SUCCESS;
  757. }
  758. LogTestEnding(211,nRc,fSuppressHeader);
  759. return nRc;
  760. }
  761. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  762. //*****************************************************************************************************************
  763. // Test 212
  764. //*****************************************************************************************************************
  765. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  766. int ProviderCreateInstances(BOOL fCompareResults, BOOL fSuppressHeader)
  767. {
  768. int nRc = FATAL_ERROR;
  769. IWbemServices * pNamespace = NULL;
  770. ItemList MasterList;
  771. CHString sNamespace;
  772. int i = -1;
  773. while(TRUE)
  774. {
  775. CHString sKey;
  776. nRc = GetNextNamespaceAndRunRequestedTests( 212, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace );
  777. if( SUCCESS != nRc )
  778. {
  779. break;
  780. }
  781. // =========================================================
  782. // Get the enumeration flags
  783. // =========================================================
  784. ItemList FlagList;
  785. nRc = GetFlags(212, FlagList);
  786. if( SUCCESS == nRc )
  787. {
  788. for( int x = 0; x < FlagList.Size(); x++ )
  789. {
  790. ItemInfo * p = FlagList.GetAt(x);
  791. // =========================================================
  792. // Create Instances
  793. // =========================================================
  794. nRc = CreateInstancesForSpecificTest(pNamespace, WPTR sNamespace,WPTR sKey,212,TRUE);
  795. }
  796. }
  797. // =====================================================================
  798. // Release the pointers
  799. // =====================================================================
  800. SAFE_RELEASE_PTR(pNamespace);
  801. }
  802. if( nRc == NO_MORE_DATA )
  803. {
  804. nRc = SUCCESS;
  805. }
  806. LogTestEnding(212,nRc,fSuppressHeader);
  807. return nRc;
  808. }