Metodo IPersistStorage::Save (objidl.h)
Salva un oggetto e tutti gli oggetti annidati contenuti nell'oggetto di archiviazione specificato. L'oggetto entra in modalità NoScribble.
Sintassi
HRESULT Save(
[in] IStorage *pStgSave,
[in] BOOL fSameAsLoad
);
Parametri
[in] pStgSave
Puntatore IStorage all'archiviazione in cui deve essere salvato l'oggetto.
[in] fSameAsLoad
Indica se l'archiviazione specificata è quella corrente, passata all'oggetto da una delle chiamate seguenti: IPersistStorage::InitNew, IPersistStorage::Load o IPersistStorage::SaveCompleted.
Questo parametro è impostato su FALSE quando si esegue un'operazione Salva con nome o Salva copia in o quando si esegue un salvataggio completo. In quest'ultimo caso, questo metodo salva in un file temporaneo, elimina il file originale e rinomina il file temporaneo.
Questo parametro è impostato su TRUE per eseguire un salvataggio completo in una situazione di memoria ridotta o per eseguire un salvataggio incrementale rapido in cui vengono salvati solo i componenti sporchi.
Valore restituito
Questo metodo può restituire i valori seguenti.
Codice restituito | Descrizione |
---|---|
|
Metodo completato correttamente. |
|
L'oggetto non è stato salvato a causa di una mancanza di spazio sul disco. |
|
Impossibile salvare l'oggetto a causa di errori diversi da una mancanza di spazio su disco. |
Commenti
Questo metodo salva un oggetto e tutti gli oggetti annidati che contiene, nell'archiviazione specificata. Inserisce anche l'oggetto in modalità NoScribble. Pertanto, l'oggetto non può scrivere nella relativa risorsa di archiviazione finché una chiamata successiva al metodo IPersistStorage::SaveCompleted restituisce l'oggetto in modalità Normal.
Se l'oggetto di archiviazione è uguale a quello da cui è stato caricato o creato, l'operazione di salvataggio può essere in grado di scrivere modifiche incrementali all'oggetto di archiviazione. In caso contrario, è necessario eseguire un salvataggio completo.
Questo metodo chiama in modo ricorsivo il metodo IPersistStorage::Save , la funzione OleSave o il metodo IStorage::CopyTo per salvare gli oggetti annidati.
Questo metodo non chiama il metodo IStorage::Commit . Né scrive CLSID nell'oggetto di archiviazione. Entrambe queste attività sono le responsabilità del chiamante.
Note ai chiamanti
Anziché chiamare IPersistStorage::Save direttamente, in genere si chiama la funzione helper OleSave che esegue la procedura seguente:- Chiamare la funzione WriteClassStg per scrivere l'identificatore di classe per l'oggetto nell'archivio.
- Chiamare il metodo IPersistStorage::Save .
- Se necessario, chiamare il metodo IStorage::Commit nell'oggetto di archiviazione.
Se un oggetto incorporato passa il metodo IPersistStorage::Save agli oggetti annidati, deve ricevere una chiamata al metodo IPersistStorage::SaveCompleted prima di chiamare questo metodo per gli oggetti annidati.
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 |