#ifndef IVRSHAREMEM_H #define IVRSHAREMEM_H #include #include "VrShareMem_global.h" /** * @brief 共享内存接口类 * 提供跨平台的共享内存创建、映射、读写操作 */ class IVrShareMem { public: virtual ~IVrShareMem() = default; /** * @brief 创建或打开共享内存区域 * @param name 共享内存名称 * @param size 内存大小(字节) * @param create 是否创建新的共享内存(true:创建,false:打开已存在的) * @return 成功返回SUCCESS(0),失败返回VrError.h中定义的错误码 */ virtual int CreateOrOpen(const std::string& name, size_t size, bool create = true) = 0; /** * @brief 将共享内存映射到当前进程地址空间 * @return 成功返回映射地址,失败返回nullptr */ virtual void* MapView() = 0; /** * @brief 取消内存映射 * @return 成功返回SUCCESS(0),失败返回VrError.h中定义的错误码 */ virtual int UnmapView() = 0; /** * @brief 关闭共享内存句柄 * @return 成功返回SUCCESS(0),失败返回VrError.h中定义的错误码 */ virtual int Close() = 0; /** * @brief 获取共享内存大小 * @return 内存大小(字节) */ virtual size_t GetSize() const = 0; /** * @brief 获取映射地址 * @return 映射地址,未映射返回nullptr */ virtual void* GetMappedAddress() const = 0; /** * @brief 检查共享内存是否有效 * @return 有效返回true,无效返回false */ virtual bool IsValid() const = 0; /** * @brief 写入数据到共享内存 * @param offset 偏移量 * @param data 数据指针 * @param size 数据大小 * @return 成功返回写入的字节数,失败返回VrError.h中定义的错误码 */ virtual int WriteData(size_t offset, const void* data, size_t size) = 0; /** * @brief 从共享内存读取数据 * @param offset 偏移量 * @param buffer 输出缓冲区 * @param size 读取大小 * @return 成功返回读取的字节数,失败返回VrError.h中定义的错误码 */ virtual int ReadData(size_t offset, void* buffer, size_t size) = 0; /** * @brief 锁定共享内存(用于同步) * @param timeout 超时时间(毫秒),-1表示无限等待 * @return 成功返回SUCCESS(0),失败返回VrError.h中定义的错误码 */ virtual int Lock(int timeout = -1) = 0; /** * @brief 解锁共享内存 * @return 成功返回SUCCESS(0),失败返回VrError.h中定义的错误码 */ virtual int Unlock() = 0; }; /** * @brief 创建共享内存实例 * @return 共享内存实例指针 */ IVrShareMem* CreateShareMemInstance(); /** * @brief 销毁共享内存实例 * @param instance 实例指针 */ void DestroyShareMemInstance(IVrShareMem* instance); #endif // IVRSHAREMEM_H