//*************************************************************************** // // TestInfo.h // // Module: CDM Provider // // Purpose: Defines the CClassPro class. An object of this class is // created by the class factory for each connection. // // Copyright (c) 2000 Microsoft Corporation // //*************************************************************************** class CResultList { public: CResultList(); ~CResultList(); HRESULT Add(IWbemClassObject *ResultInstance, BSTR ResultRelPath, BSTR ResultForMSERelPath, BSTR ResultForTestRelPath); void Clear(void); HRESULT GetResultsList(ULONG *Count, IWbemClassObject ***Objects); HRESULT GetResultByResultRelPath(PWCHAR ObjectPath, IWbemClassObject **ppResult); HRESULT GetResultByResultForMSERelPath(PWCHAR ObjectPath, IWbemClassObject **ppResult); HRESULT GetResultByResultForTestRelPath(PWCHAR ObjectPath, IWbemClassObject **ppResult); private: typedef struct { IWbemClassObject *ResultInstance; BSTR ResultRelPath; BSTR ResultForMSERelPath; BSTR ResultForTestRelPath; } RESULTENTRY, *PRESULTENTRY; ULONG ListSize; ULONG ListEntries; PRESULTENTRY List; }; class CBstrArray { public: CBstrArray(); ~CBstrArray(); HRESULT Initialize(ULONG ListCount); void Set(ULONG Index, BSTR s); BSTR /* NOFREE */ Get(ULONG Index); ULONG GetListSize(); private: BOOLEAN IsInitialized(); BSTR *Array; ULONG ListSize; }; class CWbemObjectList { public: CWbemObjectList(); ~CWbemObjectList(); HRESULT Initialize(ULONG ListCount); HRESULT Set(ULONG Index, IWbemClassObject *Pointer, BOOLEAN KeepRelPath); IWbemClassObject *Get(ULONG Index); BSTR /* NOFREE */ GetRelPath(ULONG Index); ULONG GetListSize(void); private: BOOLEAN IsInitialized( ); ULONG ListSize; IWbemClassObject **List; BSTR *RelPaths; }; class CTestServices { public: CTestServices(); ~CTestServices(); // // Linked list management routines for the benefit of the // provider // CTestServices *GetNext(); CTestServices *GetPrev(); void InsertSelf(CTestServices **Head); HRESULT QueryWdmTest(IWbemClassObject *pCdmTest, int RelPathIndex); HRESULT ExecuteWdmTest( IWbemClassObject *pCdmSettings, IWbemClassObject *pCdmResult, int RelPathIndex, ULONG *Result, BSTR *ExecutionID); HRESULT StopWdmTest( int RelPathIndex, ULONG *Result, BOOLEAN *TestingStopped); HRESULT GetRelPathIndex(BSTR CimRelPath, int *RelPathIndex); ULONG GetInstanceCount(void) { return(RelPathCount); }; LONG GetTestEstimatedTime(int RelPathIndex) { return(0); }; BOOLEAN GetTestIsExclusiveForMSE(int RelPathIndex) { return(FALSE); }; HRESULT FillInCdmResult( IWbemClassObject *pCdmResult, IWbemClassObject *pCdmSettings, int RelPathIndex, BSTR ExecutionID ); BOOLEAN IsThisInitialized(void); HRESULT InitializeCdmClasses(PWCHAR CdmClassName); BOOLEAN ClaimCdmClassName(PWCHAR CdmClassName); HRESULT AddResultToList(IWbemClassObject *pCdmResult, BSTR ExecutionID, int RelPathIndex); void ClearResultsList(int RelPathIndex); HRESULT GetResultsList(int RelPathIndex, ULONG *ResultsCount, IWbemClassObject ***Results); HRESULT GetCdmResultByResultRelPath(int RelPathIndex, PWCHAR ObjectPath, IWbemClassObject **ppCdmResult); HRESULT GetCdmResultByResultForMSERelPath(int RelPathIndex, PWCHAR ObjectPath, IWbemClassObject **ppCdmResult); HRESULT GetCdmResultByResultForTestRelPath(int RelPathIndex, PWCHAR ObjectPath, IWbemClassObject **ppCdmResult); // // Accessors BSTR GetCimRelPath(int RelPathIndex); BSTR GetCdmTestClassName(void); BSTR GetCdmTestRelPath(void); BSTR GetCdmResultClassName(void); BSTR GetCdmSettingClassName(void); BSTR GetCdmSettingRelPath(int RelPathIndex, ULONG SettingIndex); ULONG GetCdmSettingCount(int RelPathIndex); IWbemClassObject *GetCdmSettingObject(int RelPathIndex, ULONG SettingIndex); BSTR GetCdmTestForMSEClassName(void); BSTR GetCdmTestForMSERelPath(int RelPathIndex); BSTR GetCdmSettingForTestClassName(void); BSTR GetCdmSettingForTestRelPath(int RelPathIndex, ULONG SettingIndex); BSTR GetCdmResultForMSEClassName(void); BSTR GetCdmResultForMSERelPath(int RelPathIndex); BSTR GetCdmResultForTestClassName(void); BSTR GetCdmResultForTestRelPath(int RelPathIndex); BSTR GetCdmTestForSoftwareClassName(void); BSTR GetCdmTestForSoftwareRelPath(void); BSTR GetCdmTestInPackageClassName(void); BSTR GetCdmTestInPackageRelPath(void); BSTR GetCdmResultInPackageClassName(void); BSTR GetCdmResultInPackageRelPath(void); private: HRESULT WdmPropertyToCdmProperty( IWbemClassObject *pCdmClassInstance, IWbemClassObject *pWdmClassInstance, BSTR PropertyName, VARIANT *PropertyValue, CIMTYPE CdmCimType, CIMTYPE WdmCimType ); HRESULT CdmPropertyToWdmProperty( IWbemClassObject *pWdmClassInstance, IWbemClassObject *pCdmClassInstance, BSTR PropertyName, VARIANT *PropertyValue, CIMTYPE WdmCimType, CIMTYPE CdmCimType ); HRESULT CopyBetweenCdmAndWdmClasses( IWbemClassObject *pDestinationClass, IWbemClassObject *pSourceClass, BOOLEAN WdmToCdm ); HRESULT ConnectToWdmClass(int RelPathIndex, IWbemClassObject **ppWdmClassObject); HRESULT GetCdmClassNamesFromOne( PWCHAR CdmClass ); HRESULT BuildResultRelPaths( IN int RelPathIndex, IN BSTR ExecutionId, OUT BSTR *ResultRelPath, OUT BSTR *ResultForMSERelPath, OUT BSTR *ResultForTestRelPath ); HRESULT BuildTestRelPaths( void ); HRESULT ParseSettingList( VARIANT *SettingList, CWbemObjectList *CdmSettings, CBstrArray *CdmSettingForTestRelPath, int RelPathIndex ); HRESULT BuildSettingForTestRelPath( OUT BSTR *RelPath, IN IWbemClassObject *pCdmSettingInstance ); HRESULT GetCdmTestSettings(void); HRESULT QueryOfflineResult( OUT IWbemClassObject *pCdmResult, IN BSTR ExecutionID, IN int RelPathIndex ); // @@BEGIN_DDKSPLIT HRESULT GatherRebootResults( void ); HRESULT PersistResultInSchema( IWbemClassObject *pCdmResult, BSTR ExecutionID, int RelPathIndex ); // @@END_DDKSPLIT HRESULT GetTestOutParams( IN IWbemClassObject *OutParams, OUT IWbemClassObject *pCdmResult, OUT ULONG *Result ); HRESULT OfflineDeviceForTest(IWbemClassObject *pCdmResult, BSTR ExecutionID, int RelPathIndex); BSTR GetExecutionID( void ); HRESULT FillTestInParams( OUT IWbemClassObject *pInParamInstance, IN IWbemClassObject *pCdmSettings, IN BSTR ExecutionID ); IWbemServices *GetWdmServices(void); IWbemServices *GetCdmServices(void); CTestServices *Next; CTestServices *Prev; // // WDM Class Names // BSTR WdmTestClassName; BSTR WdmSettingClassName; BSTR WdmResultClassName; BSTR WdmOfflineResultClassName; BSTR WdmSettingListClassName; // // CDM Class and RelPath Names // BSTR CdmTestClassName; BSTR CdmTestRelPath; BSTR CdmResultClassName; BSTR CdmSettingClassName; BSTR CdmTestForMSEClassName; BSTR *CdmTestForMSERelPath; BSTR CdmSettingForTestClassName; CBstrArray **CdmSettingForTestRelPath; BSTR CdmResultForMSEClassName; BSTR CdmResultForTestClassName; BSTR CdmTestForSoftwareClassName; BSTR CdmTestForSoftwareRelPath; BSTR CdmTestInPackageClassName; BSTR CdmTestInPackageRelPath; BSTR CdmResultInPackageClassName; BSTR CdmResultInPackageRelPath; // // Mapping class from Cim to WDM // BSTR CimClassMappingClassName; // // List of mappings between Cim and WDM // int RelPathCount; BSTR *CimRelPaths; BSTR *WdmRelPaths; BSTR *WdmInstanceNames; BSTR *PnPDeviceIdsX; // // Results for test executions. Each relpathindex maintains a // list of results. // CResultList *CdmResultsList; // // Settings for test execution, we can have many settings for // each test. // CWbemObjectList **CdmSettingsList; };