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 函式 (...,&pstg) ,以建立根 IStorage 物件。
  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 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 ole2.h
程式庫 Ole32.lib
Dll Ole32.dll

另請參閱

CoIsOle1Class

DVTARGETDEVICE

OleConvertIStorageToOLESTREAM

OleConvertIStorageToOLESTREAMEx

OleConvertOLESTREAMToIStorageEx

STGMEDIUM

TYMED