OleConvertOLESTREAMToIStorage 函数 (ole2.h)

OleConvertOLESTREAMToIStorage 函数将指定的对象从 OLE 1 存储模型转换为 OLE 2 结构化存储对象,而无需指定表示数据。

注意 这是几个兼容性函数之一。
 

语法

HRESULT OleConvertOLESTREAMToIStorage(
  [in]  LPOLESTREAM          lpolestream,
  [out] LPSTORAGE            pstg,
  [in]  const DVTARGETDEVICE *ptd
);

参数

[in] lpolestream

指向流的指针,该流包含 OLE 1 存储格式中对象的持久表示形式。

[out] pstg

指向 OLE 2 结构化存储对象上的 IStorage 接口的指针。

[in] ptd

指向 DVTARGETDEVICE 结构的指针,该结构指定呈现 OLE 1 对象的目标设备。

返回值

此函数支持标准返回值 E_INVALIDARG,此外还支持以下内容:

注解

此函数将 OLE 1 对象转换为 OLE 2 结构化存储对象。 当对象应用程序的新版本支持 OLE 2 时,使用此函数将 OLE 1 对象更新为 OLE 2 对象。

输入时,应创建 lpolestm 参数并将其定位为 OleLoadFromStream 函数调用。 退出时, lpolestm 参数的位置与退出 OleLoadFromStream 函数时的位置相同, pstg 参数包含 OLE 2 存储对象的未提交的持久表示形式。

对于使用本机数据呈现的 OLE 1 对象, OleConvertOLESTREAMToIStorage 函数返回 CONVERT10_S_NO_PRESENTATION。 在收到此返回值时,调用方应调用 IOleObject::Update 以获取演示文稿数据,以便可以将其写入存储。

不使用 OLE 默认缓存资源,但使用转换资源的应用程序可以使用备用函数 OleConvertOLESTREAMToIStorageEx,它可以指定要转换的呈现数据。 在 OleConvertOLESTREAMToIStorageEx 函数中,从 OLESTREAM 结构读取的演示文稿数据将传出,并且新创建的 OLE 2 存储对象不包含演示流。

以下过程描述使用 OleConvertOLESTREAMToIStorage 的转换过程。

将 OLE 1 对象转换为 OLE 2 存储对象

  1. 通过调用 StgCreateDocfile 函数 (...创建根 IStorage 对象,&pstg) 。
  2. 使用 OpenFile 或其他 OLE 1 技术) 打开 OLE 1 文件 (。
  3. 使用 OLE 1 过程读取文件,直到找到 OLE 对象。
  4. 从步骤 1 中创建的根 IStorage 中分配 IStorage对象。
    pstg->lpVtbl->CreateStorage(...&pStgChild); 
    hRes = OleConvertIStorageToOLESTREAM(polestm, pStgChild); 
    hRes = OleLoad(pStgChild, &IID_IOleObject, pClientSite, ppvObj);
    
  5. 重复步骤 3,直到文件完全读取。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 ole2.h
Library Ole32.lib
DLL Ole32.dll

另请参阅

CoIsOle1Class

DVTARGETDEVICE

OleConvertIStorageToOLESTREAM

OleConvertIStorageToOLESTREAMEx

OleConvertOLESTREAMToIStorageEx

STGMEDIUM

TYMED