|
|
//***************************************************************************
//
// Copyright (c) 1998-1999 Microsoft Corporation
//
// util.h
//
// alanbos 13-Feb-98 Created.
//
// Useful things
//
//***************************************************************************
#ifndef _UTIL_H_
#define _UTIL_H_
HRESULT WmiVariantChangeType (VARIANT &vOut, VARIANT *pvIn, CIMTYPE lCimType); HRESULT WmiConvertSafeArray (VARIANT &vOut, SAFEARRAY *pArray, CIMTYPE lCimType); HRESULT WmiConvertDispatchArray (VARIANT &vOut, CComPtr<IDispatch> & pIDispatch, CIMTYPE lCimType); bool GetSafeArrayDimensions (SAFEARRAY &sArray, long &lLower, long &lUpper);
HRESULT ConvertDispatchToArray (VARIANT *pDest, VARIANT *pSrc, CIMTYPE lCimType = CIM_ILLEGAL, BOOL bIsQualifier = false, VARTYPE requiredQualifierType = VT_NULL);
HRESULT MapToCIMOMObject (VARIANT *pVal);
HRESULT MapFromCIMOMObject (CSWbemServices *pService, VARIANT *pVal, ISWbemInternalObject *pObject = NULL, BSTR propertyName = NULL, long index = -1);
HRESULT ConvertArray(VARIANT * pDest, VARIANT * pSrc, BOOL bQualTypesOnly = false, VARTYPE requiredVarType = VT_NULL);
HRESULT ConvertArrayRev(VARIANT * pDest, VARIANT * pSrc);
HRESULT ConvertBSTRArray(SAFEARRAY **ppDest, SAFEARRAY *pSrc);
HRESULT QualifierVariantChangeType(VARIANT* pvDest, VARIANT* pvSrc, VARTYPE vtNew);
VARTYPE GetAcceptableQualType(VARTYPE vt);
HRESULT BuildStringArray (SAFEARRAY *pArray, VARIANT & var); HRESULT SetFromStringArray (SAFEARRAY **ppArray, VARIANT *pVar);
BSTR FormatAssociatorsQuery (BSTR strObjectPath, BSTR strAssocClass, BSTR strResultClass, BSTR strResultRole, BSTR strRole, VARIANT_BOOL bClassesOnly, VARIANT_BOOL bSchemaOnly, BSTR strRequiredAssocQualifier, BSTR strRequiredQualifier);
BSTR FormatReferencesQuery (BSTR strObjectPath, BSTR strResultClass, BSTR strRole, VARIANT_BOOL bClassesOnly, VARIANT_BOOL bSchemaOnly, BSTR strRequiredQualifier);
BSTR FormatMultiQuery (SAFEARRAY &pClassList, long iNumElements);
void CheckArrayBounds (SAFEARRAY *psa, long index); void SetSite (VARIANT *pVal, ISWbemInternalObject *pSObject, BSTR propertyName, long index = -1); void SetWbemError (CSWbemServices *pService); void ResetLastErrors (); void SetException (EXCEPINFO *pExcepInfo, HRESULT hr, BSTR m_objectName); BSTR MapHresultToWmiDescription (HRESULT hr); void MapNulls (DISPPARAMS FAR* pdispparams);
void EnsureGlobalsInitialized ();
// CIM <-> VARIANT type coercion functions
VARTYPE CimTypeToVtType(CIMTYPE lType); WbemCimtypeEnum GetCIMType (VARIANT &var, CIMTYPE iCIMType, bool bIsArray = false, long lLBound = 0, long lUBound = 0); bool CanCoerceString (const BSTR & bsValue, WbemCimtypeEnum cimType); WbemCimtypeEnum MapVariantTypeToCimType (VARIANT *pVal, CIMTYPE cimType = CIM_ILLEGAL);
bool ReadUI64(LPCWSTR wsz, unsigned __int64& rui64); bool ReadI64(LPCWSTR wsz, __int64& rui64);
bool IsNullOrEmptyVariant (VARIANT & var); bool RemoveElementFromArray (SAFEARRAY & array, VARTYPE vt, long iIndex); bool ShiftLeftElement (SAFEARRAY & array, VARTYPE vt, long iIndex); bool ShiftElementsToRight (SAFEARRAY & array, VARTYPE vt, long iStartIndex, long iEndIndex, long iShift);
bool MatchBSTR (VARIANT & var, BSTR & bstrVal); bool MatchUI1 (VARIANT & var, unsigned char bVal); bool MatchI2 (VARIANT & var, short iVal); bool MatchI4 (VARIANT & var, long lVal); bool MatchR4 (VARIANT & var, float fltVal); bool MatchR8 (VARIANT & var, double dblVal); bool MatchBool (VARIANT & var, VARIANT_BOOL boolVal); bool MatchValue (VARIANT &var1, VARIANT &var2);
#define WBEMS_PDN_SCHEME L"WINMGMTS:"
#define WBEMS_LEFT_PAREN L"("
#define WBEMS_RIGHT_PAREN L")"
#define WBEMS_LEFT_CURLY L"{"
#define WBEMS_RIGHT_CURLY L"}"
#define WBEMS_LEFT_SQBRK L"["
#define WBEMS_RIGHT_SQBRK L"]"
#define WBEMS_LEFT_ANGLE L"<"
#define WBEMS_RIGHT_ANGLE L">"
#define WBEMS_EQUALS L"="
#define WBEMS_COMMA L","
#define WBEMS_EXCLAMATION L"!"
#define WBEMS_AUTH_LEVEL L"authenticationLevel"
#define WBEMS_AUTH_DEFAULT L"default"
#define WBEMS_AUTH_NONE L"none"
#define WBEMS_AUTH_CONNECT L"connect"
#define WBEMS_AUTH_CALL L"call"
#define WBEMS_AUTH_PKT L"pkt"
#define WBEMS_AUTH_PKT_INT L"pktIntegrity"
#define WBEMS_AUTH_PKT_PRIV L"pktPrivacy"
#define WBEMS_IMPERSON_LEVEL L"impersonationLevel"
#define WBEMS_IMPERSON_ANON L"anonymous"
#define WBEMS_IMPERSON_IDENTIFY L"identify"
#define WBEMS_IMPERSON_IMPERSON L"impersonate"
#define WBEMS_IMPERSON_DELEGATE L"delegate"
#define WBEMS_LOCALE L"locale"
#define WBEMS_AUTHORITY L"authority"
#define WBEMS_RK_SCRIPTING _T("Software\\Microsoft\\Wbem\\Scripting")
#define WBEMS_RV_DEFNS _T("Default Namespace")
#define WBEMS_RV_ENABLEFORASP _T("Enable for ASP")
#define WBEMS_RV_DEFAULTIMPLEVEL _T("Default Impersonation Level")
#define WBEMS_DEFNS _T("root\\cimv2")
// Strings for queries
#define WBEMS_QUERY_ASSOCOF OLESTR("associators of ")
#define WBEMS_QUERY_OPENBRACE OLESTR("{")
#define WBEMS_QUERY_CLOSEBRACE OLESTR("}")
#define WBEMS_QUERY_WHERE OLESTR(" where ")
#define WBEMS_QUERY_ASSOCCLASS OLESTR(" AssocClass ")
#define WBEMS_QUERY_EQUALS OLESTR("=")
#define WBEMS_QUERY_CLASSDEFS OLESTR(" ClassDefsOnly ")
#define WBEMS_QUERY_REQASSOCQ OLESTR(" RequiredAssocQualifier ")
#define WBEMS_QUERY_REQQUAL OLESTR(" RequiredQualifier ")
#define WBEMS_QUERY_RESCLASS OLESTR(" ResultClass ")
#define WBEMS_QUERY_RESROLE OLESTR(" ResultRole ")
#define WBEMS_QUERY_ROLE OLESTR(" Role ")
#define WBEMS_QUERY_SCHEMAONLY OLESTR(" SchemaOnly ")
#define WBEMS_QUERY_REFOF OLESTR("references of ")
#define WBEMS_QUERY_SELECT OLESTR("select * from ")
#define WBEMS_QUERY_GO OLESTR(" go ")
// System properties
#define WBEMS_SP_CLASS OLESTR("__CLASS")
#define WBEMS_SP_PATH OLESTR("__PATH")
#define WBEMS_SP_RELPATH OLESTR("__RELPATH")
#define WBEMS_SP_SERVER OLESTR("__SERVER")
#define WBEMS_SP_NAMESPACE OLESTR("__NAMESPACE")
#define WBEMS_SP_GENUS OLESTR("__GENUS")
#define WBEMS_SP_DERIVATION OLESTR("__DERIVATION")
// Context variables
#define WBEMS_CV_GET_EXTENSIONS OLESTR("__GET_EXTENSIONS")
#define WBEMS_CV_GET_EXT_CLIENT_REQUEST OLESTR("__GET_EXT_CLIENT_REQUEST")
#define WBEMS_CV_GET_EXT_PROPERTIES OLESTR("__GET_EXT_PROPERTIES")
#define WBEMS_CV_CLONE_SOURCE_PATH OLESTR("__CloneSourcePath")
#define WBEMS_CV_OWNER OLESTR("INCLUDE_OWNER")
#define WBEMS_CV_GROUP OLESTR("INCLUDE_GROUP")
#define WBEMS_CV_DACL OLESTR("INCLUDE_DACL")
#define WBEMS_CV_SACL OLESTR("INCLUDE_SACL")
#define ENGLISH_LOCALE 1033
// Useful cleanup macros
#define RELEASEANDNULL(x) \
if (x) \ { \ x->Release (); \ x = NULL; \ }
#define FREEANDNULL(x) \
if (x) \ { \ SysFreeString (x); \ x = NULL; \ }
#define DELETEANDNULL(x) \
if (x) \ { \ delete x; \ x = NULL; \ }
#ifdef _RDEBUG
extern void _RRPrint(int line, const char *file, const char *func, const char *str, long code, const char *str2); #define _RD(a) a
#define _RPrint(a,b,c,d) _RRPrint(__LINE__,__FILE__,a,b,c,d)
#else
#define _RD(a)
#define _RPrint(a,b,c,d)
#endif
#endif
|