直接跳到内容

共享内存

SharedMemoryCreate

  • 位置

sys_shared_memory.aclib

  • 功能说明

创建共享内存对象,如果已存在同名对象则返回该对象的句柄。

imgimg

  • 参数说明
输入参数数据类型描述常量
pszNameSTRING共享内存名称×
pucPhysicalAddressPOINTER TO BYTE共享内存关联地址(Windows系统下无效)
uiSizeDWORD共享内存大小
error_codeshared_memory_error_code错误码
输出参数数据类型描述常量
SharedMemoryCreatePOINTER TO BYTE返回共享内存句柄×
  • 示例

例如创建一个名字为'sharemem_ac'的共享内存对象,则操作方式如下:

CFC示例

img

ST示例

img

SharedMemoryOpen

  • 位置

sys_shared_memory.aclib

  • 功能说明

打开共享内存对象,返回该对象的句柄。

img

  • 参数说明
输入参数数据类型描述常量
pszNameSTRING共享内存名称×
pucPhysicalAddressPOINTER TO BYTE共享内存关联地址(Windows系统下无效)
uiSizeDWORD共享内存大小
error_codeshared_memory_error_code错误码
输出参数数据类型描述常量
SharedMemoryOpenPOINTER TO BYTE返回共享内存句柄×
  • 示例

例如打开一个名字为'sharemem_ac'的共享内存对象,则操作方式如下:

CFC示例

img

ST示例

img

SharedMemoryRead

  • 位置

sys_shared_memory.aclib

  • 功能说明

读共享内存对象。

img

  • 参数说明
输入参数数据类型描述常量
hShmPOINTER TO BYTE共享内存句柄×
ulOffsetDWORD读取共享内存的偏移×
pbyDataPOINTER TO BYTE用户缓存,保存从共享内存中读取的数据×
uiSizeDWORD读取长度×
error_codeshared_memory_error_code错误码×
输出参数数据类型描述常量
SharedMemoryReadDINT读取的数据长度,失败时返回-1×
  • 示例

例如从共享内存对象偏移为10字节开始读取10个字节,则操作方式如下:

CFC示例

img

ST示例

img

SharedMemoryWrite

  • 位置

sys_shared_memory.aclib

  • 功能说明

写共享内存对象。

img

  • 参数说明
输入参数数据类型描述常量
hShmPOINTER TO BYTE共享内存句柄×
ulOffsetDWORD写入共享内存的偏移×
pbyDataPOINTER TO BYTE用户缓存,保存要写入共享内存中的数据×
uiSizeDWORD写入长度×
error_codeshared_memory_error_code错误码×
输出参数数据类型描述常量
SharedMemoryWriteDINT写入的数据长度,失败时返回-1×
  • 示例

例如向共享内存对象起始地址开始写入100个字节,则操作方式如下:

CFC示例

img

ST示例

img

SharedMemoryGetPointer

  • 位置

sys_shared_memory.aclib

  • 功能说明

获取共享内存的内存地址。

img

  • 参数说明
输入参数数据类型描述常量
hShmPOINTER TO BYTE共享内存句柄×
error_codeshared_memory_error_code错误码×
输出参数数据类型描述常量
SharedMemoryGetPointerPOINTER TO BYTE返回共享内存的内存地址×
  • 示例

例如获取共享内存的内存地址,则操作方式如下:

CFC示例

img

ST示例

img

SharedMemoryClose

  • 位置

sys_shared_memory.aclib

  • 功能说明

关闭共享内存对象,如果该共享内存没有其他进程与其关联则将该对象内存释放。

img

  • 参数说明
输入参数数据类型描述常量
hShmPOINTER TO BYTE共享内存句柄×
输出参数数据类型描述常量
SharedMemoryCloseDINT返回关闭共享内存是否成功,0:成功,其它:失败。×
  • 示例

例如关闭共享内存对象,则操作方式如下:

CFC示例

img

ST示例

img

共享内存使用示例

共享内存写入示例

(例程路径:安装目录\example\sharedMemory)

以下内容展示了创建并打开共享内存对象,并向共享内存中写入用户数据。

img

共享内存读取示例

以下内容展示了创建并打开共享内存对象,并从共享内存中读取用户数据。

方式1:通过SharedMemoryRead函数实现读取

img

方式2:通过SharedMemoryGetPointer获取共享内存的地址,通过MEMCPY来获取共享内存的数据

img

imgAnyControl在Linux系统中使用 POSIX共享内存(shm_open()、mmap()、munmap()、shm_unlink())接口,如果需要和其他进程通讯,请使用相同接口。
img更加丰富的调用示例请参见AnyControl中的示例工程- sharedMemory。
共享内存已经加载完毕