一, FileAccess 简介
为了防止文件共享可能会导致文件被破坏或未经核准的用户修改文件,文件系统必须控制用户对文件的存取,即解决对文件的读、写、执行的许可问题。为此,必须在文件系统中建立相应的文件保护机制。FileAcces 在GenICam手册中的标准术语是 File Access Control,中文理解意思就是文件访问控制,描述了设备中与访问文件相关的所有特性。 它包含符合GenICam的设备的通用文件访问模式的定义。
它基于一组标准特性,这些特性由设备中的适配器代码控制GenICam参考实现。适配器代码通过继承自std::iostream的接口提供它的服务。 下面的图表描述了控制所基于的模型:
它确保可以在持久性存储上执行的所有操作都可以由使用语义为fopen/fclose/fread/
Fwrite的操作。操作及其参数映射到文件访问控制列表的功能上。
为了在文件访问控制之上提供通用API,GenApi中定义了FileAccessAdapter。适配器为设备文件提供两个iostream接口:
• IDevFileStream 从设备中读取
• ODevFileStream 写入设备
文件协议适配器(fileaccess adapter)负责映射文件访问控制上的(I/O)数据流(DevFileStreamBuf)操作打开、关闭、下溢(UnderFlow)和溢出(Overflow)。
二, FileAccess初探
第一节适配器的作用主要是在读数据和写数据上,所以关于Fileaccess的使用也就不复杂了,主要是这两个部分,当写数据的时候,打开文件,从缓冲区读取数据,写入到内存flash 中,最后关闭文件;读数据的时候,打开文件,将数据从内存中取出来,存放在缓冲区,最后关闭文件。当然每次读取和写入的字节大小可以由程序员自己选择,作用的次数也就不一样了。
三, 节点解释
文件选择器(FileSelector):选择设备中用于操作的目标文件。此枚举的条目定义设备中可通过文件访问访问的所有文件的名称。
文件操作选择器(FileOperaSelector):指定要对文件执行的操作;
文件操作执行(FileOperationExecute):命令启动所选的操作执行;
文件打开模式(FileOpenMode):是Open操作的参数,并控制访问模式(读、写、读写),在其中打开文件
文件操作状态(FileOperationStatus):返回在文件上执行的最后一个操作的状态。如果操作按照请求执行,该特性必须返回Success。
文件操作结果(FileOperationResult):返回上一次读或写操作中成功读/写的字节数。
文件大小(FileSize):以字节为单位返回文件的大小;
文件偏移位置(FileAccessOffset):控制文件中访问的起始位置;
文件长度(FileAccessLength):控制在接下来的读或写操作期间要传输到或从FileAccessBuffer的字节数
总之,FileSelector、FileAccessOffset和FileAccessLength特性控制了设备文件存储和FileAccessBuffer之间的映射。