OleDoAutoConvert 函式 (ole2.h)
如果登錄中設定了該物件類別的自動轉換,則會自動將對象轉換成新的類別。
語法
HRESULT OleDoAutoConvert(
[in] LPSTORAGE pStg,
[out] LPCLSID pClsidNew
);
參數
[in] pStg
要轉換之記憶體物件上 IStorage 介面的指標。
[out] pClsidNew
要轉換之物件之新 CLSID 的指標。 如果沒有自動轉換,這可能與原始類別相同。
傳回值
此函式可以傳回標準傳回值E_INVALIDARG、E_OUTOFMEMORY和E_UNEXPECTED,以及下列值。
傳回碼 | 描述 |
---|---|
|
不需要轉換,或已成功完成轉換。 |
|
函式無法從登錄讀取機碼。 |
此函式也可以傳回 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 |