Compartir a través de


Método IPersistStorage::Load (objidl.h)

Carga un objeto de su almacenamiento existente.

Sintaxis

HRESULT Load(
  [in] IStorage *pStg
);

Parámetros

[in] pStg

Puntero de IStorage al almacenamiento existente desde el que se va a cargar el objeto.

Valor devuelto

Este método puede devolver los siguientes valores.

Código devuelto Descripción
S_OK
El método se completó correctamente.
CO_E_ALREADYINITIALIZED
El objeto ya se ha inicializado mediante una llamada anterior al método IPersistStorage::Load o al método IPersistStorage::InitNew .
E_OUTOFMEMORY
El objeto no se cargó debido a la falta de memoria.
E_FAIL
El objeto no se cargó debido a algún motivo distinto de la falta de memoria.

Comentarios

Este método inicializa un objeto a partir de un almacenamiento existente. El objeto se coloca en el estado cargado si la aplicación contenedora llama a este método. Si lo llama el controlador predeterminado, este método coloca el objeto en estado de ejecución.

El controlador predeterminado o el propio objeto pueden contener el puntero IStorage mientras se carga o se ejecuta el objeto.

Notas a los autores de llamadas

En lugar de llamar directamente a IPersistStorage::Load , normalmente se llama a la función auxiliar OleLoad que hace lo siguiente:
  1. Cree una instancia sin inicializar de la clase de objeto.
  2. Consulte la nueva instancia para la interfaz IPersistStorage .
  3. Llame a Load para inicializar el objeto desde el almacenamiento existente.
También se llama a este método indirectamente cuando se llama a la función OleCreateFromData o a la función OleCreateFromFile para insertar un objeto en un archivo compuesto (como en una operación de pegado de arrastrar y colocar o portapapeles).

El contenedor debe almacenar en caché el puntero IPersistStorage para su uso en operaciones posteriores en el objeto .

Notas para los implementadores

La implementación debe realizar los pasos siguientes para cargar un objeto:
  1. Abra las secuencias del objeto en el objeto de almacenamiento y lea los datos necesarios en las estructuras de datos internas del objeto.
  2. Borre la marca de sucio del objeto.
  3. Llame al método AddRef y almacene en caché el puntero de almacenamiento pasado.
  4. Mantenga abiertos y almacenes en caché los punteros a los flujos o almacenamientos que el objeto tendrá que guardar en este almacenamiento.
  5. Realice cualquier otra inicialización predeterminada necesaria para el objeto .
Los pasos 3 y 4 son especialmente importantes para garantizar que el objeto pueda guardarse en situaciones de poca memoria. Mantener en punteros a las interfaces de almacenamiento y de flujo garantiza que no se producirá un error en una operación de guardado en este almacenamiento debido a una memoria insuficiente.

La implementación de este método debe devolver el código de error CO_E_ALREADYINITIALIZED si recibe una llamada al método IPersistStorage::InitNew o al método IPersistStorage::Load después de que ya se haya inicializado.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

IPersistStorage

OleLoad