IPersistStorage::Load-Methode (objidl.h)

Lädt ein Objekt aus dem vorhandenen Speicher.

Syntax

HRESULT Load(
  [in] IStorage *pStg
);

Parameter

[in] pStg

Ein IStorage-Zeiger auf den vorhandenen Speicher, aus dem das Objekt geladen werden soll.

Rückgabewert

Diese Methode kann die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich abgeschlossen.
CO_E_ALREADYINITIALIZED
Das Objekt wurde bereits durch einen vorherigen Aufruf der IPersistStorage::Load-Methode oder der IPersistStorage::InitNew-Methode initialisiert.
E_OUTOFMEMORY
Das Objekt wurde aufgrund fehlenden Arbeitsspeichers nicht geladen.
E_FAIL
Das Objekt wurde aus einem anderen Grund nicht geladen, aus einem anderen Grund als aus einem Mangel an Arbeitsspeicher.

Hinweise

Diese Methode initialisiert ein -Objekt aus einem vorhandenen Speicher. Das Objekt wird in den geladenen Zustand versetzt, wenn diese Methode von der Containeranwendung aufgerufen wird. Wenn sie vom Standardhandler aufgerufen wird, versetzt diese Methode das Objekt in den Status "Wird ausgeführt".

Entweder der Standardhandler oder das Objekt selbst kann den IStorage-Zeiger beibehalten, während das Objekt geladen oder ausgeführt wird.

Hinweise für Anrufer

Anstatt IPersistStorage::Load direkt aufzurufen, rufen Sie in der Regel die OleLoad-Hilfsfunktion auf, die Folgendes ausführt:
  1. Erstellen Sie eine nicht initialisierte instance der Objektklasse.
  2. Fragen Sie die neue instance für die IPersistStorage-Schnittstelle ab.
  3. Rufen Sie Load auf, um das Objekt aus dem vorhandenen Speicher zu initialisieren.
Sie rufen diese Methode auch indirekt auf, wenn Sie die OleCreateFromData-Funktion oder die OleCreateFromFile-Funktion aufrufen, um ein Objekt in eine Verbunddatei einzufügen (wie bei einem Drag-and-Drop- oder Zwischenablageeinfügevorgang).

Der Container sollte den IPersistStorage-Zeiger zur Verwendung in späteren Vorgängen für das Objekt zwischenspeichern.

Hinweise für Implementierer

Ihre Implementierung sollte die folgenden Schritte ausführen, um ein Objekt zu laden:
  1. Öffnen Sie die Datenströme des Objekts im Speicherobjekt, und lesen Sie die erforderlichen Daten in die internen Datenstrukturen des Objekts.
  2. Löschen Sie das modifiziert-Flag des Objekts.
  3. Rufen Sie die AddRef-Methode auf, und speichern Sie den übergebenen Speicherzeiger zwischen.
  4. Lassen Sie geöffnet, und speichern Sie die Zeiger auf alle Datenströme oder Speicher zwischen, die das Objekt benötigt, um sich selbst in diesem Speicher zu speichern.
  5. Führen Sie eine andere Standardinitialisierung aus, die für das Objekt erforderlich ist.
Die Schritte 3 und 4 sind besonders wichtig, um sicherzustellen, dass sich das Objekt in Situationen mit geringem Arbeitsspeicher selbst speichern kann. Durch das Halten von Zeigern auf die Speicher- und Streamschnittstellen wird sichergestellt, dass ein Speichervorgang für diesen Speicher nicht aufgrund von unzureichendem Arbeitsspeicher fehlschlägt.

Ihre Implementierung dieser Methode sollte den CO_E_ALREADYINITIALIZED Fehlercode zurückgeben, wenn sie einen Aufruf der IPersistStorage::InitNew-Methode oder der IPersistStorage::Load-Methode empfängt, nachdem sie bereits initialisiert wurde.

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

OleLoad