Share via


OleDoAutoConvert, fonction (ole2.h)

Convertit automatiquement un objet en nouvelle classe si la conversion automatique de cette classe d’objet est définie dans le Registre.

Syntaxe

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

Paramètres

[in] pStg

Pointeur vers l’interface IStorage sur l’objet de stockage à convertir.

[out] pClsidNew

Pointeur vers le nouveau CLSID pour l’objet en cours de conversion. S’il n’y a pas eu de conversion automatique, cela peut être identique à la classe d’origine.

Valeur retournée

Cette fonction peut retourner les valeurs de retour standard E_INVALIDARG, E_OUTOFMEMORY et E_UNEXPECTED, ainsi que les valeurs suivantes.

Code de retour Description
S_OK
Aucune conversion n’est nécessaire ou une conversion a été effectuée avec succès.
REGDB_E_KEYMISSING
La fonction ne peut pas lire une clé à partir du Registre.
 

Cette fonction peut également retourner l’une des valeurs d’erreur retournées par la fonction OleGetAutoConvert . Lorsque vous accédez aux objets de stockage et de flux, consultez les méthodes IStorage ::OpenStorage et IStorage ::OpenStream pour connaître les erreurs possibles. Lorsqu’il n’est pas possible de déterminer le CLSID existant ou s’il n’est pas possible de mettre à jour l’objet de stockage avec de nouvelles informations, consultez l’interface IStream pour obtenir d’autres valeurs de retour d’erreur.

Remarques

OleDoAutoConvert convertit automatiquement un objet si la conversion automatique a déjà été spécifiée dans le Registre par la fonction OleSetAutoConvert . La conversion d’objet signifie que l’objet est associé de façon permanente à un nouveau CLSID. La conversion automatique est généralement spécifiée par le programme d’installation d’une nouvelle version d’une application objet, afin que les objets créés par ses anciennes versions puissent être automatiquement mis à jour.

L’objet de stockage doit être à l’état déchargé lorsque OleDoAutoConvert est appelé.

Une application conteneur qui prend en charge la conversion d’objets doit appeler OleDoAutoConvert chaque fois qu’elle charge un objet. Si le conteneur utilise la fonction d’assistance OleLoad , il n’a pas besoin d’appeler OleDoAutoConvert explicitement, car OleLoad l’appelle en interne.

OleDoAutoConvert détermine d’abord si une conversion est requise en appelant la fonction OleGetAutoConvert , qui, si aucune conversion n’est requise, retourne S_OK. Si l’objet nécessite une conversion, OleDoAutoConvert modifie et convertit l’objet de stockage en activant la nouvelle application d’objet. La nouvelle application d’objet lit le format de données existant, mais enregistre l’objet dans le nouveau format natif de l’application objet.

Si l’objet à convertir automatiquement est un objet OLE 1, la chaîne ItemName est stockée dans un flux appelé « \1Ole10ItemName ». Si ce flux n’existe pas, le nom de l’élément de l’objet est NULL.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête ole2.h
Bibliothèque Ole32.lib
DLL Ole32.dll

Voir aussi

OleGetAutoConvert

OleSetAutoConvert