#pragma once #define SHELL_EPID 0 // error #define SpTranslateError(internal_sp_error) (ErrorCodeEnum)(internal_sp_error) //ErrorCodeEnum SpTranslateError(int internal_sp_error) { return internal_sp_error; } // ini file ErrorCodeEnum SpIniFileReadString(const char *pszFile, const char *pszSection, const char *pszKey, CSimpleStringA &strValue); ErrorCodeEnum SpIniFileWriteString(const char *pszFile, const char *pszSection, const char *pszKey, const char *pszValue); ErrorCodeEnum SpIniFileReadAllKeys(const char *pszFile, const char *pszSection, CAutoArray &Keys); ErrorCodeEnum SpIniFileReadAllSections(const char *pszFile, CAutoArray &Sections); class SpEntity; class SpIniConfig : public IConfigInfo { public: SpIniConfig(SpEntity *pEntity, ConfigTypeEnum type) : m_type(type), m_pEntity(pEntity) {} virtual bool storageInMem() { return false; } virtual ConfigTypeEnum GetConfigType() { return m_type; } /** read/write config via shell */ virtual ErrorCodeEnum ReadConfigValue(const char *pszSection, const char *pszKey,CSimpleStringA &strValue); virtual ErrorCodeEnum ReadConfigValueInt(const char *pszSection, const char *pszKey, int &iValue); /** only can write self's section, pValue=NULL for delete */ virtual ErrorCodeEnum WriteConfigValue(const char *pszSection, const char *pszKey, const char *pszValue); virtual ErrorCodeEnum WriteConfigValueInt(const char *pszSection, const char *pszKey, int iValue); /** read all key-value pairs */ virtual ErrorCodeEnum ReadAllKeys(const char *pszSection, CAutoArray &strKeys); /** get all section values */ virtual ErrorCodeEnum ReadAllSections(CAutoArray &strSections); /** write hex int values, ig: "keyName=0x4F3D012A" */ virtual ErrorCodeEnum WriteConfigValueHexInt(const char *pszSection, const char *pszKey, UINT64 nValue); virtual ErrorCodeEnum ReadConfigValueHexInt(const char *pszSection, const char *pszKey, UINT64 &nValue); ErrorCodeEnum EstimateBeforeRW(); private: ErrorCodeEnum _GetMappFilePath(CSimpleStringA& strPath); ConfigTypeEnum m_type; SpEntity *m_pEntity; }; class SpRootMemConfig : public IConfigInfo { public: SpRootMemConfig(SpEntity* pEntity, ConfigTypeEnum type); ~SpRootMemConfig(); virtual bool storageInMem() { return true; } virtual ConfigTypeEnum GetConfigType() { return m_type; } /** read/write config via shell */ virtual ErrorCodeEnum ReadConfigValue(const char* pszSection, const char* pszKey, CSimpleStringA& strValue); virtual ErrorCodeEnum ReadConfigValueInt(const char* pszSection, const char* pszKey, int& iValue); /** only can write self's section, pValue=NULL for delete */ virtual ErrorCodeEnum WriteConfigValue(const char* pszSection, const char* pszKey, const char* pszValue); virtual ErrorCodeEnum WriteConfigValueInt(const char* pszSection, const char* pszKey, int iValue); /** read all key-value pairs */ virtual ErrorCodeEnum ReadAllKeys(const char* pszSection, CAutoArray& strKeys); /** get all section values */ virtual ErrorCodeEnum ReadAllSections(CAutoArray& strSections); /** write hex int values, ig: "keyName=0x4F3D012A" */ virtual ErrorCodeEnum WriteConfigValueHexInt(const char* pszSection, const char* pszKey, UINT64 nValue); virtual ErrorCodeEnum ReadConfigValueHexInt(const char* pszSection, const char* pszKey, UINT64& nValue); private: SpEntity* m_pEntity; ConfigTypeEnum m_type; //避免暴露实现,并删除特殊构造 class Impl; Impl *m_impl; SpRootMemConfig(SpRootMemConfig&& rhs); SpRootMemConfig& operator=(SpRootMemConfig&& rhs); SpRootMemConfig(const SpRootMemConfig& rhs); SpRootMemConfig& operator=(const SpRootMemConfig& rhs); }; void SpInitUUID(WORD wId);