// // global.h // #pragma once #include "stdafx.h" #include "SSRTE.h" #include "ssrmsg.h" #include #include #include "msxml2.h" class CFBLogMgr; extern CFBLogMgr g_fblog; using namespace std; const ULONG g_ulSsrEngineMajorVersion = 1; const ULONG g_ulSsrEngineMinorVersion = 0; const LONG g_lActionVerbConfigure = 1; const LONG g_lActionVerbRollback = 2; const LONG g_lActionVerbReport = 3; const DWORD g_dwHexDwordLen = 11; const DWORD g_dwResNothing = 0; extern WCHAR g_wszSsrRoot[]; extern DWORD g_dwSsrRootLen; extern LPCWSTR g_pwszSSRRegRoot; extern LPCWSTR g_pwszSSRMembersReg; extern LPCWSTR g_pwszSSRRootToExpand; extern LPCWSTR g_pwszSSR; extern LPCWSTR g_pwszLogs; // // The following are reserved action verbs // extern CComBSTR g_bstrConfigure; extern CComBSTR g_bstrRollback; extern CComBSTR g_bstrReport; // // the following are reserved file-usage values // extern CComBSTR g_bstrLaunch; extern CComBSTR g_bstrResult; // // the following is the reserved action data's names // extern LPCWSTR g_pwszCurrSecurityPolicy; extern LPCWSTR g_pwszTransformFiles; extern LPCWSTR g_pwszScriptFiles; // // the following are element tag names // extern CComBSTR g_bstrSsrMemberInfo; extern CComBSTR g_bstrDescription; extern CComBSTR g_bstrSupportedAction; extern CComBSTR g_bstrProcedures; extern CComBSTR g_bstrDefaultProc; extern CComBSTR g_bstrCustomProc; extern CComBSTR g_bstrTransformInfo; extern CComBSTR g_bstrScriptInfo; // // the following are attribute names // extern CComBSTR g_bstrAttrUniqueName; extern CComBSTR g_bstrAttrMajorVersion; extern CComBSTR g_bstrAttrMinorVersion; extern CComBSTR g_bstrAttrProgID; extern CComBSTR g_bstrAttrActionName; extern CComBSTR g_bstrAttrActionType; extern CComBSTR g_bstrAttrTemplateFile; extern CComBSTR g_bstrAttrResultFile; extern CComBSTR g_bstrAttrScriptFile; extern CComBSTR g_bstrAttrIsStatic; extern CComBSTR g_bstrAttrIsExecutable; extern CComBSTR g_bstrReportFilesDir; extern CComBSTR g_bstrConfigureFilesDir; extern CComBSTR g_bstrRollbackFilesDir; extern CComBSTR g_bstrTransformFilesDir; extern CComBSTR g_bstrMemberFilesDir; extern CComBSTR g_bstrTrue; extern CComBSTR g_bstrFalse; // // these are the known action types // extern LPCWSTR g_pwszApply; extern LPCWSTR g_pwszPrepare; typedef LONG SsrActionVerb; const SsrActionVerb ActionInvalid = 0; const SsrActionVerb ActionConfigure = 1; const SsrActionVerb ActionRollback = 2; const SsrActionVerb ActionReport = 3; const BSTR SsrPGetActionVerbString ( IN SsrActionVerb action ); SsrActionVerb SsrPGetActionVerbFromString ( IN LPCWSTR pwszVerb ); class CMemberAD; class CActionType { public: CActionType ( IN SsrActionVerb lAction, IN LONG lActionType ) : m_lAction(lAction), m_lType(lActionType) { } CActionType ( const CActionType & at ) : m_lAction(at.m_lAction), m_lType(at.m_lType) { } ~CActionType(){} SsrActionVerb GetAction()const { return m_lAction; } LONG GetActionType()const { return m_lType; } protected: // // we don't want anyone (include self) to be able to do an assignment. // void operator = (const CActionType& ); SsrActionVerb m_lAction; LONG m_lType; }; // // some global helper functions // //template< class T> template< class T> class strLessThan { public: bool operator()( const T& X, const T& Y ) const { return ( _wcsicmp( X, Y ) < 0 ); } }; //template<> class strLessThan{}; //template< class T> template< class T> class ActionTypeLessThan { public: bool operator()( const T& X, const T& Y ) const { if (X.GetAction() < Y.GetAction()) { return true; } else if (X.GetAction() == Y.GetAction()) { return X.GetActionType() < Y.GetActionType(); } return false; } }; //template<> class ActionTypeLessThan< CActionType >{}; typedef map > MapNameValue; //typedef MapNameValue::iterator NameValueIterator; typedef map< const CActionType, CMemberAD*, ActionTypeLessThan< CActionType > > MapMemberAD; //typedef MapMemberAD::iterator MemberADIterator; class CSsrMemberAccess; typedef map > MapMemberAccess; //typedef MapMemberAccess::iterator MemberAccessIterator; HRESULT SsrPDeleteEntireDirectory ( IN LPCWSTR pwszDirPath ); HRESULT SsrPCreateSubDirectories ( IN OUT LPWSTR pwszPath, IN LPCWSTR pwszSubRoot ); HRESULT SsrPLoadDOM ( IN BSTR bstrFile, // [in], IN LONG lFlag, // [in], IN IXMLDOMDocument2 * pDOM // [in] ); HRESULT SsrPGetBSTRAttrValue ( IN IXMLDOMNamedNodeMap * pNodeMap, IN BSTR bstrName, OUT BSTR * pbstrValue ); HRESULT SsrPCreateUniqueTempDirectory ( OUT LPWSTR pwszTempDirPath, IN DWORD dwBufLen ); // // move files from one location to another // HRESULT SsrPMoveFiles ( IN LPCWSTR pwszSrcDirRoot, IN LPCWSTR pwszDesDirRoot, IN LPCWSTR pwszRelPath ); bool SsrPPressOn ( IN SsrActionVerb lActionVerb, IN LONG lActionType, IN HRESULT hr ); const BSTR SsrPGetDirectory ( IN SsrActionVerb lActionVerb, IN BOOL bScriptFile ); HRESULT SsrPDoDCOMSettings ( bool bReg );