Condividi tramite


Metodo IPersistStorage::Load (objidl.h)

Carica un oggetto dalla relativa risorsa di archiviazione esistente.

Sintassi

HRESULT Load(
  [in] IStorage *pStg
);

Parametri

[in] pStg

Puntatore IStorage all'archiviazione esistente da cui caricare l'oggetto.

Valore restituito

Questo metodo può restituire i valori seguenti.

Codice restituito Descrizione
S_OK
Metodo completato correttamente.
CO_E_ALREADYINITIALIZED
L'oggetto è già stato inizializzato da una chiamata precedente al metodo IPersistStorage::Load o al metodo IPersistStorage::InitNew .
E_OUTOFMEMORY
L'oggetto non è stato caricato a causa della mancanza di memoria.
E_FAIL
L'oggetto non è stato caricato a causa di un motivo diverso da una mancanza di memoria.

Commenti

Questo metodo inizializza un oggetto da un archivio esistente. L'oggetto viene inserito nello stato caricato se questo metodo viene chiamato dall'applicazione contenitore. Se viene chiamato dal gestore predefinito, questo metodo inserisce l'oggetto nello stato in esecuzione.

Il gestore predefinito o l'oggetto stesso può contenere il puntatore IStorage mentre l'oggetto viene caricato o in esecuzione.

Note ai chiamanti

Anziché chiamare direttamente IPersistStorage::Load , si chiama in genere la funzione helper OleLoad che esegue le operazioni seguenti:
  1. Creare un'istanza non inizializzata della classe oggetto.
  2. Eseguire una query sulla nuova istanza per l'interfaccia IPersistStorage .
  3. Chiamare Load per inizializzare l'oggetto dall'archiviazione esistente.
Si chiama anche questo metodo indirettamente quando si chiama la funzione OleCreateFromData o la funzione OleCreateFromFile per inserire un oggetto in un file composto (come in un'operazione di trascinamento o incolla degli Appunti).

Il contenitore deve memorizzare nella cache il puntatore IPersistStorage da usare nelle operazioni successive sull'oggetto.

Note per gli implementatori

L'implementazione deve eseguire i passaggi seguenti per caricare un oggetto:
  1. Aprire i flussi dell'oggetto nell'oggetto di archiviazione e leggere i dati necessari nelle strutture di dati interne dell'oggetto.
  2. Deselezionare il flag sporco dell'oggetto.
  3. Chiamare il metodo AddRef e memorizzare nella cache il puntatore di archiviazione passato.
  4. Mantenere aperti e memorizzare nella cache i puntatori a qualsiasi flusso o archiviazione che l'oggetto dovrà salvare in questa risorsa di archiviazione.
  5. Eseguire qualsiasi altra inizializzazione predefinita necessaria per l'oggetto.
I passaggi 3 e 4 sono particolarmente importanti per garantire che l'oggetto possa salvarsi in situazioni di memoria ridotta. Tenere premuti i puntatori alle interfacce di archiviazione e flusso garantisce che un'operazione di salvataggio in questa risorsa di archiviazione non avrà esito negativo a causa di memoria insufficiente.

L'implementazione di questo metodo deve restituire il codice di errore CO_E_ALREADYINITIALIZED se riceve una chiamata al metodo IPersistStorage::InitNew o al metodo IPersistStorage::Load dopo l'inizializzazione.

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

Vedi anche

IPersistStorage

OleLoad