关于COM、OLE的永久存储的一个小疑点

关于COM、OLE的永久存储的一个小问题
具体来说应该是OLE的

我打算在用GetOpenFileName获得文件名之后,得到一个char数组的数据,但是现在我想在OLE加载的时候,先去判断当前的这个char数组是否有数据,如果没有就在用GetOpenFileName去打开获得文件名;反之,则去处理别的逻辑

有人知道这个怎么做的吗?

IPersistStorage有两个对应的函数Load和Save,这两个可以利用起来,但是我不知道如何利用,请各位大牛详细说说!


谢谢,一人得分,不打算平均
COM OLE IPersistStorage Load Save

------解决方案--------------------
IPersistStorage这样用貌似有些问题,如果是在用一个OLE下面,这样用会被覆盖掉的吧 再想想别的办法
------解决方案--------------------
不是有
IsPathExist  文件
PathIsDirectory  路径
的API么?

可以直接判断是否存在啊
------解决方案--------------------
IStream/IPropertyBag/IStorage是数据提供者使用的接口,相当于数据的主人

形如IPersistXxxx的接口表示数据使用者使用的接口,通常代表需要加载或保存数据的客户

假设你是主人,你必须能把实际保存的数据(可能来自硬盘、网络等任何地方)封装成IStream...等接口,并隐藏读取和保存的细节。现在来了一个客户,它需要你的数据,于是客户向主人提供了IPersistStream...之类的接口,这是门票。如果主人没有数据,它会调用IPersistXxxx::InitNew方法,告诉客户自己用默认数据初始化;或者如果有数据,就调用IPersistXxxx::Load,在参数中把代表数据的IStream...接口给它,客户会调用IStream::Read读取实际的数据。同理,如果需要保存数据,主人会调用IPersistXxxx::Save,并在参数中传递IStream...等接口,客户会调用IStream::Save执行实际的数据保存操作。

原理其实很简单,过程也不复杂,各司其职嘛。不知道解释清楚没有。