Condividi tramite


Funzione OleDoAutoConvert (ole2.h)

Converte automaticamente un oggetto in una nuova classe se la conversione automatica per tale classe oggetto è impostata nel Registro di sistema.

Sintassi

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

Parametri

[in] pStg

Puntatore all'interfaccia IStorage nell'oggetto di archiviazione da convertire.

[out] pClsidNew

Puntatore al nuovo CLSID per l'oggetto da convertire. Se non è stata eseguita alcuna conversione automatica, potrebbe essere uguale alla classe originale.

Valore restituito

Questa funzione può restituire i valori restituiti standard E_INVALIDARG, E_OUTOFMEMORY e E_UNEXPECTED, nonché i valori seguenti.

Codice restituito Descrizione
S_OK
Non è necessaria alcuna conversione o la conversione è stata completata correttamente.
REGDB_E_KEYMISSING
La funzione non può leggere una chiave dal Registro di sistema.
 

Questa funzione può anche restituire uno dei valori di errore restituiti dalla funzione OleGetAutoConvert . Quando si accede agli oggetti di archiviazione e flusso, vedere i metodi IStorage::OpenStorage e IStorage::OpenStream per individuare eventuali errori. Quando non è possibile determinare il CLSID esistente o quando non è possibile aggiornare l'oggetto di archiviazione con nuove informazioni, vedere l'interfaccia IStream per altri valori restituiti dagli errori.

Commenti

OleDoAutoConvert converte automaticamente un oggetto se la conversione automatica è stata specificata in precedenza nel Registro di sistema dalla funzione OleSetAutoConvert . La conversione dell'oggetto indica che l'oggetto è associato in modo permanente a un nuovo CLSID. La conversione automatica viene in genere specificata dal programma di installazione per una nuova versione di un'applicazione oggetto, in modo che gli oggetti creati dalle versioni precedenti possano essere aggiornati automaticamente.

L'oggetto di archiviazione deve trovarsi nello stato di scaricamento quando viene chiamato OleDoAutoConvert .

Un'applicazione contenitore che supporta la conversione di oggetti deve chiamare OleDoAutoConvert ogni volta che carica un oggetto. Se il contenitore usa la funzione helper OleLoad , non è necessario chiamare in modo esplicito OleDoAutoConvert perché OleLoad lo chiama internamente.

OleDoAutoConvert determina innanzitutto se è richiesta una conversione chiamando la funzione OleGetAutoConvert , che, se non è necessaria alcuna conversione, restituisce S_OK. Se l'oggetto richiede la conversione, OleDoAutoConvert modifica e converte l'oggetto di archiviazione attivando la nuova applicazione oggetto. La nuova applicazione oggetto legge il formato dati esistente, ma salva l'oggetto nel nuovo formato nativo per l'applicazione oggetto.

Se l'oggetto da convertire automaticamente è un oggetto OLE 1, la stringa ItemName viene archiviata in un flusso denominato "\1Ole10ItemName". Se il flusso non esiste, il nome dell'elemento dell'oggetto è NULL.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ole2.h
Libreria Ole32.lib
DLL Ole32.dll

Vedi anche

OleGetAutoConvert

OleSetAutoConvert