////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 1999-2000 Microsoft Corporation // // Module Name: // Common.h // // Description: // Definition of common type, constant and header files. // // Author: // Henry Wang (HenryWa) 24-AUG-1999 // MSP Prabu (mprabu) 04-Dec-2000 // Jim Benton (jbenton) 15-Oct-2001 // // Notes: // ////////////////////////////////////////////////////////////////////////////// #pragma once #pragma warning( disable : 4786 ) ////////////////////////////////////////////////////////////////////////////// // Include Files ////////////////////////////////////////////////////////////////////////////// using namespace std; class CProvBase; class CObjPath; class CWbemClassObject; extern long g_cObj; extern long g_cLock; extern HMODULE g_hModule; typedef LPVOID * PPVOID; typedef CProvBase * (__stdcall * FPNEW)( IN LPCWSTR pwszName, IN CWbemServices * pNamespace ); void CreateClass( IN const WCHAR * pwszClassName, IN CWbemServices * pNamespace, IN OUT auto_ptr& rNewClass ); _bstr_t EncodeQuotes(IN WCHAR * wszString); BOOL MapVssErrorToMsg( IN HRESULT hr, OUT LONG *plMsgNum ) throw( HRESULT ); LPWSTR GetMsg( IN LONG msgId, ... ); #define GUID_PRINTF_ARG( X ) \ (X).Data1, \ (X).Data2, \ (X).Data3, \ (X).Data4[0], (X).Data4[1], (X).Data4[2], (X).Data4[3], \ (X).Data4[4], (X).Data4[5], (X).Data4[6], (X).Data4[7] #define IF_WSTR_NULL_THROW( XWSTR, XHR, XMSG ) \ { if ((WCHAR*)XWSTR == NULL || ((WCHAR*)XWSTR)[0] == L'\0') \ { ft.hr = XHR; ft.Throw(VSSDBG_VSSADMIN, ft.hr, XMSG); } } #define IF_PROP_NULL_THROW( XOBJ, XPROP, XHR, XMSG ) \ { if (XOBJ.IsPropertyNull(XPROP)) \ { ft.hr = XHR; ft.Throw(VSSDBG_VSSADMIN, ft.hr, XMSG); } } WCHAR* GuidToString(GUID guid); const int g_cchGUID = 48; const int g_cchWBEM_MAX_OBJPATH = 520; const int g_cchWBEM_DATETIME_FORMAT = 26; const int g_cchMAX_I64DEC_STRING = 22; // // wbem // extern const WCHAR * const PVD_WBEM_PROVIDERNAME; extern const WCHAR * const PVD_WBEM_EXTENDEDSTATUS; extern const WCHAR * const PVD_WBEM_DESCRIPTION; extern const WCHAR * const PVD_WBEM_STATUSCODE; extern const WCHAR * const PVD_WBEM_STATUS; extern const WCHAR * const PVD_WBEM_CLASS; extern const WCHAR * const PVD_WBEM_RELPATH; extern const WCHAR * const PVD_WBEM_PROP_ANTECEDENT; extern const WCHAR * const PVD_WBEM_PROP_DEPENDENT; extern const WCHAR * const PVD_WBEM_PROP_ELEMENT; extern const WCHAR * const PVD_WBEM_PROP_SETTING; extern const WCHAR * const PVD_WBEM_PROP_DEVICEID; extern const WCHAR * const PVD_WBEM_PROP_RETURNVALUE; extern const WCHAR * const PVD_WBEM_PROP_PROVIDERNAME; extern const WCHAR * const PVD_WBEM_QUA_DYNAMIC; extern const WCHAR * const PVD_WBEM_QUA_CIMTYPE; // // Constants used in partial value maps for localization // extern const WCHAR * const PVDR_CONS_UNAVAILABLE; extern const WCHAR * const PVDR_CONS_ENABLED; extern const WCHAR * const PVDR_CONS_DISABLED; class CClassData { public: const WCHAR * wszClassName; FPNEW pfConstruct; const char * szType; }; // *** class CClassData class CClassCreator { public: CClassCreator( void ) : m_pfnConstructor( NULL ) , m_pbstrClassName( L"" ) { }; CClassCreator( IN FPNEW pfn, IN const WCHAR * pwszClassName ) : m_pfnConstructor( pfn ) , m_pbstrClassName( pwszClassName ) { }; FPNEW m_pfnConstructor; _bstr_t m_pbstrClassName; }; //*** class CClassCreator template< class _Ty > struct strLessThan : binary_function< _Ty, _Ty, bool > { bool operator()( const _Ty& _X, const _Ty& _Y ) const { return ( _wcsicmp( _X, _Y ) < 0 ); } }; //*** struct strLessThan typedef map< _bstr_t, CClassCreator, strLessThan< _bstr_t > > ClassMap; typedef map< _bstr_t, _bstr_t, strLessThan< _bstr_t > > TypeNameToClass; extern TypeNameToClass g_TypeNameToClass; extern ClassMap g_ClassMap;