Freigeben über


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
S_OK
Die Methode wurde erfolgreich abgeschlossen.
STG_E_MEDIUMFULL
Das Objekt wurde aufgrund eines Mangels an Speicherplatz auf dem Datenträger nicht gespeichert.
E_FAIL
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:
  1. Rufen Sie die WriteClassStg-Funktion auf, um den Klassenbezeichner für das Objekt in den Speicher zu schreiben.
  2. Rufen Sie die IPersistStorage::Save-Methode auf.
  3. Rufen Sie bei Bedarf die IStorage::Commit-Methode für das Speicherobjekt auf.
Anschließend führt eine Containeranwendung alle weiteren Vorgänge aus, die zum Abschließen des Speicherns erforderlich sind, und ruft die SaveCompleted-Methode für jedes Objekt 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

Weitere Informationen

IPersistStorage

OleSave