2025-04-27 07:49:33 -04:00

155 lines
4.7 KiB
C++

// 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);
};