Share via


OleDoAutoConvert 函式 (ole2.h)

如果登錄中設定了該物件類別的自動轉換,則會自動將對象轉換成新的類別。

語法

HRESULT OleDoAutoConvert(
  [in]  LPSTORAGE pStg,
  [out] LPCLSID   pClsidNew
);

參數

[in] pStg

要轉換之記憶體物件上 IStorage 介面的指標。

[out] pClsidNew

要轉換之物件之新 CLSID 的指標。 如果沒有自動轉換,這可能與原始類別相同。

傳回值

此函式可以傳回標準傳回值E_INVALIDARG、E_OUTOFMEMORY和E_UNEXPECTED,以及下列值。

傳回碼 描述
S_OK
不需要轉換,或已成功完成轉換。
REGDB_E_KEYMISSING
函式無法從登錄讀取機碼。
 

此函式也可以傳回 OleGetAutoConvert 函式所傳回的任何錯誤值。 存取記憶體和串流物件時,如需可能的錯誤,請參閱 IStorage::OpenStorage和 IStorage::OpenStream 方法。 當無法判斷現有的 CLSID,或無法使用新資訊更新記憶體物件時,請參閱 IStream 介面以取得其他錯誤傳回值。

備註

如果 OleSetAutoConvert 函式先前已在登錄中指定自動轉換,OleDoAutoConvert 會自動轉換物件。 物件轉換表示物件永久與新的 CLSID 相關聯。 自動轉換通常是由新版物件應用程式的安裝程式指定,讓舊版所建立的物件可以自動更新。

呼叫 OleDoAutoConvert 時,記憶體對象必須處於卸除狀態。

支援物件轉換的容器應用程式應該在每次載入物件時呼叫 OleDoAutoConvert 。 如果容器使用 OleLoad 協助程式函式,則不需要明確呼叫 OleDoAutoConvert ,因為 OleLoad 會在內部呼叫它。

OleDoAutoConvert 會先呼叫 OleGetAutoConvert 函式來判斷是否需要任何轉換,如果不需要轉換,則會傳回S_OK。 如果物件需要轉換, OleDoAutoConvert 會藉由啟動新的物件應用程式來修改並轉換儲存物件。 新的物件應用程式會讀取現有的數據格式,但會將物件儲存為物件應用程式的新原生格式。

如果要自動轉換的物件是 OLE 1 物件,ItemName 字串會儲存在名為 “\1Ole10ItemName” 的數據流中。如果此數據流不存在,則對象的專案名稱為 NULL

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 ole2.h
程式庫 Ole32.lib
Dll Ole32.dll

另請參閱

OleGetAutoConvert

OleSetAutoConvert