Freigeben über


Persistenzschnittstellen

Objekte, die über einen persistenten Zustand jeglicher Art verfügen, müssen mindestens eine IPersist*-Schnittstelle und vorzugsweise mehrere Schnittstellen implementieren, um dem Container die flexibelste Wahl zu bieten, wie der Zustand eines Steuerelements gespeichert werden soll.

Wenn ein Steuerelement über einen beliebigen persistenten Zustand verfügt, muss es mindestens IPersistStream oder IPersistStreamInit implementieren (beide schließen sich gegenseitig aus und sollten größtenteils nicht zusammen implementiert werden). Letzteres wird verwendet, wenn ein Steuerelement wissen möchte, wann es neu erstellt wird und nicht aus einem vorhandenen persistenten Zustand neu geladen wird (IPersistStream verfügt nicht über die erstellte neue Funktion). Das Vorhandensein einer schnittstelle gibt an, dass das Steuerelement seinen persistenten Zustand speichern und in einen Stream laden kann, d. h. eine instance von IStream.

Neben diesen beiden streambasierten Schnittstellen können die in der folgenden Tabelle aufgeführten IPersist*-Schnittstellen optional bereitgestellt werden, um die Persistenz an anderen Standorten als einem erweiterbaren IStream zu unterstützen.

Eine Reihe von Komponentenkategorien wird identifiziert, um die Unterstützung für Persistenzschnittstellen zu decken, siehe Komponentenkategorien.

Schnittstelle Verbrauch
IPersistMemory
Das Objekt kann seinen Zustand speichern und in ein sequenzielles Bytearray mit fester Länge (im Arbeitsspeicher) laden.
IPersistStorage
Das Objekt kann seinen Zustand speichern und in eine IStorage-instance laden. Steuerelemente, die als Einfügebar als andere zusammengesetzte Dokumentobjekte (zum Einfügen in nicht steuerungsfähige Container) gekennzeichnet werden möchten, müssen diese Schnittstelle unterstützen.
IPersistPropertyBag
Das Objekt kann seinen Zustand als einzelne Eigenschaften speichern und laden, die in IPropertyBag geschrieben wurden, die der Container implementiert. Dies wird für die Funktion "Als Text speichern" in einigen Containern verwendet.
IPersistMoniker
Das Objekt kann seinen Zustand speichern und an einen Ort laden, der durch einen Moniker benannt ist. Das Steuerelement ruft IMoniker::BindToStorage auf, um die benötigten Speicherschnittstellen abzurufen, z. B. IStorage, IStream, ILockBytes, IDataObject usw.

Obwohl die Unterstützung für IPersistPropertyBag optional ist, wird sie dringend als Optimierung für Container mit Features zum Speichern als Text empfohlen, z. B. Visual Basic.

Mit Ausnahme von IPersistStream::GetSizeMax, IPersistStreamInit::GetSizeMax und IPersistMemory::GetSizeMax müssen alle Methoden jeder Schnittstelle vollständig implementiert sein.

Steuerelemente