Partager via


IPersistStorage ::Load, méthode (objidl.h)

Charge un objet à partir de son stockage existant.

Syntaxe

HRESULT Load(
  [in] IStorage *pStg
);

Paramètres

[in] pStg

Pointeur IStorage vers le stockage existant à partir duquel l’objet doit être chargé.

Valeur retournée

Cette méthode peut retourner les valeurs suivantes.

Code de retour Description
S_OK
La commande s'est correctement terminée.
CO_E_ALREADYINITIALIZED
L’objet a déjà été initialisé par un appel précédent à la méthode IPersistStorage ::Load ou À la méthode IPersistStorage ::InitNew .
E_OUTOFMEMORY
L’objet n’a pas été chargé en raison d’un manque de mémoire.
E_FAIL
L’objet n’a pas été chargé pour une raison autre qu’un manque de mémoire.

Remarques

Cette méthode initialise un objet à partir d’un stockage existant. L’objet est placé dans l’état chargé si cette méthode est appelée par l’application conteneur. Si elle est appelée par le gestionnaire par défaut, cette méthode place l’objet dans l’état en cours d’exécution.

Le gestionnaire par défaut ou l’objet lui-même peut conserver le pointeur IStorage pendant le chargement ou l’exécution de l’objet.

Remarques aux appelants

Au lieu d’appeler IPersistStorage ::Load directement, vous appelez généralement la fonction d’assistance OleLoad qui effectue les opérations suivantes :
  1. Créez une instance non initialisée de la classe d’objet.
  2. Interrogez la nouvelle instance pour l’interface IPersistStorage.
  3. Appelez Load pour initialiser l’objet à partir du stockage existant.
Vous appelez également cette méthode indirectement lorsque vous appelez la fonction OleCreateFromData ou la fonction OleCreateFromFile pour insérer un objet dans un fichier composé (comme dans une opération glisser-déplacer ou coller du Presse-papiers).

Le conteneur doit mettre en cache le pointeur IPersistStorage pour une utilisation dans des opérations ultérieures sur l’objet .

Remarques aux implémenteurs

Votre implémentation doit effectuer les étapes suivantes pour charger un objet :
  1. Ouvrez les flux de l’objet dans l’objet de stockage et lisez les données nécessaires dans les structures de données internes de l’objet.
  2. Effacez l’indicateur de sale de l’objet.
  3. Appelez la méthode AddRef et mettez en cache le pointeur de stockage passé.
  4. Restez ouvert et mettez en cache les pointeurs vers tous les flux ou stockages dont l’objet aura besoin pour s’enregistrer lui-même dans ce stockage.
  5. Effectuez toute autre initialisation par défaut requise pour l’objet .
Les étapes 3 et 4 sont particulièrement importantes pour s’assurer que l’objet peut s’enregistrer dans des situations de mémoire insuffisante. La conservation des pointeurs vers les interfaces de stockage et de flux garantit qu’une opération d’enregistrement dans ce stockage n’échouera pas en raison d’une mémoire insuffisante.

Votre implémentation de cette méthode doit retourner le code d’erreur CO_E_ALREADYINITIALIZED si elle reçoit un appel à la méthode IPersistStorage ::InitNew ou À la méthode IPersistStorage ::Load après son initialisation.

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 objidl.h

Voir aussi

IPersistStorage

OleLoad