复合文件函数

  关于com如何,我不说废话,个人观点,com思想值得深入。

  复合文件的方案是砸在com头上的苹果,但是个人观点,IStorage、IStream都是com接口,实际使用意义更大。宛如操作非结构化文件的时候只在使用若干api不用太了解底层的东西一样。所以简单列出几个常用方法,实际用的话去msdn吧。

WIN API 函数

功能说明

StgCreateDocfile()建立一个复合文件,得到根存储对象
StgOpenStorage()打开一个复合文件,得到根存储对象
StgIsStorageFile()判断一个文件是否是复合文件

 

IStorage 函数

功能说明

CreateStorage()在当前存储中建立新存储,得到子存储对象
CreateStream()在当前存储中建立新流,得到流对象
OpenStorage()打开子存储,得到子存储对象
OpenStream()打开流,得到流对象
CopyTo()复制存储下的所有对象到目标存储中,该函数可以实现“整理文件,释放碎片空间”的功能
MoveElementTo()移动对象到目标存储中
DestoryElement()删除对象
RenameElement()重命名对象
EnumElements()枚举当前存储中所有的对象
SetElementTimes()修改对象的时间
SetClass()在当前存储中建立一个特殊的流对象,用来保存CLSID(注5)
Stat()取得当前存储中的系统信息
Release()关闭存储对象
 

IStream 函数

功能说明

Read()从流中读取数据
Write()向流中写入数据
Seek()定位读写位置
SetSize()设置流尺寸。如果预先知道大小,那么先调用这个函数,可以提高性能
CopyTo()复制流数据到另一个流对象中
Stat()取得当前流中的系统信息
Clone()克隆一个流对象,方便程序中的不同模块操作同一个流对象
Release()关闭流对象
 
WIN API 补充函数功能说明
WriteClassStg()写CLSID到存储中,同IStorage::SetClass()
ReadClassStg()读出WriteClassStg()写入的CLSID,相当于简化调用IStorage::Stat()
WriteClassStm()写CLSID到流的开始位置
ReadClassStm()读出WriteClassStm()写入的CLSID
WriteFmtUserTypeStg()写入用户指定的剪贴板格式和名称到存储中
ReadFmtUserTypeStg()读出WriteFmtUserTypeStg()写入的信息。方便应用程序快速判断是否是它需要的格式数据。
CreateStreamOnHGlobal()内存句柄 HGLOBAL 转换为流对象
GetHGlobalFromStream()取得CreateStreamOnHGlobal()调用中使用的内存句柄

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值