IPersistStorage::Save-Methode (objidl.h)
Speichert ein -Objekt und alle darin enthaltenen geschachtelten Objekte im angegebenen Speicherobjekt. Das Objekt wechselt in den NoScribble-Modus.
Syntax
HRESULT Save(
[in] IStorage *pStgSave,
[in] BOOL fSameAsLoad
);
Parameter
[in] pStgSave
Ein IStorage-Zeiger auf den Speicher, in dem das Objekt gespeichert werden soll.
[in] fSameAsLoad
Gibt an, ob es sich bei dem angegebenen Speicher um den aktuellen Speicher handelt, der durch einen der folgenden Aufrufe an das Objekt übergeben wurde: IPersistStorage::InitNew, IPersistStorage::Load oder IPersistStorage::SaveCompleted.
Dieser Parameter wird auf FALSE festgelegt, wenn sie einen Vorgang zum Speichern unter oder Zum Speichern eines Kopiervorgangs ausführen oder einen vollständigen Speichervorgang ausführen. Im letzteren Fall speichert diese Methode in einer temporären Datei, löscht die ursprüngliche Datei und benennt die temporäre Datei um.
Dieser Parameter wird auf TRUE festgelegt, um eine vollständige Speicherung in einer Situation mit geringem Arbeitsspeicher oder eine schnelle inkrementelle Speicherung durchzuführen, in der nur die modifiziert Komponenten gespeichert werden.
Rückgabewert
Diese Methode kann die folgenden Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Methode wurde erfolgreich abgeschlossen. |
|
Das Objekt wurde aufgrund eines Mangels an Speicherplatz auf dem Datenträger nicht gespeichert. |
|
Das Objekt konnte nicht gespeichert werden, da andere Fehler als der fehlende Speicherplatz vorhanden waren. |
Hinweise
Diese Methode speichert ein -Objekt und alle darin enthaltenen geschachtelten Objekte im angegebenen Speicher. Außerdem wird das Objekt in den NoScribble-Modus versetzt. Daher kann das Objekt nicht in seinen Speicher schreiben, bis ein nachfolgendes Aufrufen der IPersistStorage::SaveCompleted-Methode das Objekt in den Normalmodus zurückgibt.
Wenn das Speicherobjekt mit dem objekt identisch ist, aus dem es geladen oder erstellt wurde, kann der Speichervorgang möglicherweise inkrementelle Änderungen an das Speicherobjekt schreiben. Andernfalls muss eine vollständige Speicherung durchgeführt werden.
Diese Methode ruft rekursiv die IPersistStorage::Save-Methode , die OleSave-Funktion oder die IStorage::CopyTo-Methode auf, um ihre geschachtelten Objekte zu speichern.
Diese Methode ruft die IStorage::Commit-Methode nicht auf. Die CLSID wird auch nicht in das Speicherobjekt geschrieben. Beide Aufgaben sind die Aufgaben des Anrufers.
Hinweise für Anrufer
Anstatt IPersistStorage::Save direkt aufzurufen, rufen Sie in der Regel die OleSave-Hilfsfunktion auf, die die folgenden Schritte ausführt:- Rufen Sie die WriteClassStg-Funktion auf, um den Klassenbezeichner für das Objekt in den Speicher zu schreiben.
- Rufen Sie die IPersistStorage::Save-Methode auf.
- Rufen Sie bei Bedarf die IStorage::Commit-Methode für das Speicherobjekt auf.
Wenn ein eingebettetes Objekt die IPersistStorage::Save-Methode an seine geschachtelten Objekte übergibt, muss es einen Aufruf der IPersistStorage::SaveCompleted-Methode erhalten, bevor es diese Methode für ihre geschachtelten Objekte aufruft.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | objidl.h |