// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved IWbemServices * InitServices(CString *pcsNameSpace = NULL, IWbemLocator *pLocator = NULL); BOOL WbemObjectIdentity(CString &rcsWbem1, CString &rcsWbem2); int StringInArray (CStringArray *pcsaArray, CString *pcsString, int nIndex); BOOL GetErrorObjectText (IWbemClassObject *pErrorObject, CString &rcsDescription); IWbemClassObject *CreateSimpleClass (IWbemServices * pProv, CString *pcsNewClass, CString *pcsParentClass, int &nError, CString &csError ); IWbemClassObject *GetClassObject (IWbemServices *pProv,CString *pcsClass, BOOL bQuiet = FALSE); BOOL SetProperty (IWbemServices * pProv, IWbemClassObject * pInst, CString *pcsProperty, CString *pcsPropertyValue); BOOL SetProperty (IWbemServices * pProv, IWbemClassObject * pInst, CString *pcsProperty, long lValue); CString GetProperty (IWbemClassObject * pInst, CString *pcsProperty, BOOL bQuietly = FALSE); CString GetBSTRProperty (IWbemServices * pProv, IWbemClassObject * pInst, CString *pcsProperty); CString GetBSTRProperty (IWbemClassObject * pInst, CString *pcsProperty); SCODE GetClasses(IWbemServices * pIWbemServices, CString *pcsParent, CPtrArray &cpaClasses, CString &rcsNamespace); int GetAllClasses(IWbemServices * pIWbemServices, CPtrArray &cpaClasses, CString &rcsNamespace); CStringArray *GetAllClassPaths(IWbemServices * pIWbemServices, CString &rcsNamespace); BOOL HasSubclasses(IWbemServices * pIWbemServices, CString *pcsClass, CString &rcsNamespace); BOOL HasSubclasses(IWbemServices * pIWbemServices, IWbemClassObject *pimcoClass, CString &rcsNamespace); long GetAttribBSTR (IWbemClassObject * pClassInt,CString *pcsPropName, CString *pcsAttribName, CString &csReturn); long GetAttribBool (IWbemClassObject * pClassInt,CString *pcsPropName, CString *pcsAttribName, BOOL &bReturn); SCODE MakeSafeArray (SAFEARRAY FAR ** pRet, VARTYPE vt, int iLen); SCODE PutStringInSafeArray (SAFEARRAY FAR * psa,CString *pcs, int iIndex); BOOL DeleteAClass (IWbemServices * pProv, CString *pcsClass); IWbemClassObject *RenameAClass (IWbemServices * pProv, IWbemClassObject *pimcoClass, CString *pcsNewName, BOOL bDeleteOriginal = FALSE); IWbemClassObject *ReparentAClass (IWbemServices * pProv, IWbemClassObject *pimcoParent, IWbemClassObject *pimcoChild); CString GetIWbemFullPath(IWbemClassObject *pClass); CString GetIWbemRelativePath(IWbemClassObject *pClass); BOOL ClassIdentity(IWbemClassObject *piWbem1, IWbemClassObject *piWbem2); void ReleaseErrorObject(IWbemClassObject *&rpErrorObject); void ErrorMsg (CString *pcsUserMsg, SCODE sc, IWbemClassObject *pErrorObject, BOOL bLog, CString *pcsLogMsg, char *szFile, int nLine, UINT uType = MB_ICONEXCLAMATION); void LogMsg (CString *pcsLogMsg, char *szFile, int nLine); BOOL ObjectInDifferentNamespace (IWbemServices *pProv, CString *pcsNamespace, IWbemClassObject *pObject); CString GetHmomWorkingDirectory(); SCODE GetInstances (IWbemServices *pServices, CString *pcsClass, CPtrArray &cpaInstances, BOOL bDeep); CString BuildOBJDBGetAssocsQuery (IWbemServices *pProv, CString *pcsTargetPath, CString *pcsAssocClass, CString *pcsResultClass, CString *pcsMyRoleFilter, CString *pcsReqAttrib, CString *pcsReqAssocAttrib, CString *pcsResultRole, BOOL bClassOnly); CString BuildOBJDBGetRefQuery (IWbemServices *pProv, CString *pcsTarget, CString *pcsResultClass, CString *pcsRoleFilter, CString *pcsReqAttrib = NULL, BOOL bClassOnly = FALSE); IEnumWbemClassObject *ExecOBJDBQuery (IWbemServices * pProv, CString &csQuery); CPtrArray *SemiSyncEnum (IEnumWbemClassObject *pEnum, BOOL &bCancel, HRESULT &hResult, int nRes); CString GetIWbemClass(IWbemClassObject *pClass); CStringArray *GetAllKeyPropValuePairs(IWbemClassObject *pObject); CString GetClass(CString *pcsPath); BOOL ArePathsEqual (CString csPath1, CString csPath2); CString GetPropertyNameByAttrib(IWbemClassObject *pObject , CString *pcsAttrib); BOOL IsClassAbstract(IWbemClassObject* pObject); CStringArray *ClassDerivation (IWbemClassObject *pObject); BOOL IsObjectOfClass(CString &csClass, IWbemClassObject *pObject); //HRESULT ConfigureSecurity(IUnknown *pUnknown); struct ParsedObjectPath; class CComparePaths { public: BOOL PathsRefSameObject(BSTR bstrPath1, BSTR bstrPath2); private: int CompareNoCase(LPWSTR pws1, LPWSTR pws2); BOOL IsEqual(LPWSTR pws1, LPWSTR pws2) {return CompareNoCase(pws1, pws2) == 0; } BOOL PathsRefSameObject(ParsedObjectPath* ppath1, ParsedObjectPath* ppath2); void NormalizeKeyArray(ParsedObjectPath& path); BOOL IsSameObject(BSTR bstrPath1, BSTR bstrPath2); BOOL KeyValuesAreEqual(VARIANT& variant1, VARIANT& variant2); };