Freigeben über


IMAPISupport::IStorageFromStream

Gilt für: Outlook 2013 | Outlook 2016

Implementiert ein Speicherobjekt für den Zugriff auf einen Stream.

HRESULT IStorageFromStream(
  LPUNKNOWN lpUnkIn,
  LPCIID lpInterface,
  ULONG ulFlags,
  LPSTORAGE FAR * lppStorageOut
);

Parameter

lpUnkIn

[in] Ein Zeiger auf ein Streamobjekt.

lpInterface

[in] Ein Zeiger auf den Schnittstellenbezeichner (Interface Identifier, IID), der die Schnittstelle darstellt, die für den Zugriff auf den Stream verwendet werden soll, auf den lpUnkIn zeigt. Jeder der folgenden Werte ist gültig: IID_IStream, IID_ILockBytes oder NULL, was angibt, dass die IStream-Schnittstelle für den Zugriff auf den Stream verwendet werden soll.

ulFlags

[in] Eine Bitmaske von Flags, die steuert, wie das Speicherobjekt relativ zum Streamobjekt erstellt werden soll. Standardmäßig wird der Speicher mit schreibgeschütztem Zugriff erstellt, und der Stream beginnt an position 0 im Speicher. Die folgenden Flags können festgelegt werden:

STGSTRM_CREATE

Für das Streamobjekt sollte ein neues Speicherobjekt erstellt werden.

STGSTRM_CURRENT

Das Speicherobjekt sollte an der aktuellen Position des Datenstroms beginnen.

STGSTRM_MODIFY

Der Aufrufer sollte über Lese-/Schreibberechtigungen für das zurückgegebene Speicherobjekt verfügen.

STGSTRM_RESET

Das Speicherobjekt sollte an Position 0 beginnen.

lppStorageOut

[out] Ein Zeiger auf einen Zeiger auf das Speicherobjekt.

Rückgabewert

S_OK

Das Speicherobjekt wurde erfolgreich erstellt.

Hinweise

Die IMAPISupport::IStorageFromStream-Methode wird für alle Dienstanbieterunterstützungsobjekte implementiert. Dienstanbieter rufen IStorageFromStream auf, um ein Speicherobjekt zu erstellen, das zum Öffnen bestimmter Eigenschaften verwendet werden soll. Dienstanbieter, die über eine eigene Implementierung der IStorage-Schnittstelle verfügen, müssen IStorageFromStream nicht aufrufen.

Das von IStorageFromStream erstellte Speicherobjekt ruft die IUnknown::AddRef-Methode des Streams auf, um die Verweisanzahl zu erhöhen, und verringert dann die Anzahl, wenn der Speicher freigegeben wird.

Hinweise für Aufrufer

Wenn die IMAPIProp::OpenProperty-Methode eines Ihrer Objekte aufgerufen wird, um eine Eigenschaft mit der IStorage-Schnittstelle zu öffnen, führen Sie die folgenden Aufgaben aus:

  1. Öffnen Sie ein Streamobjekt mit Lese-/Schreibberechtigung für die Eigenschaft.

  2. Markieren Sie den Eigenschaftenstream intern als Speicherobjekt.

  3. Rufen Sie IStorageFromStream auf, um ein Speicherobjekt zu generieren.

  4. Gibt einen Zeiger auf dieses Speicherobjekt zurück.

Wenn Sie zusätzliche Schnittstellen implementieren, die das Speicherobjekt verwenden, erstellen Sie ein Objekt, das das Speicherobjekt umschließt, und implementieren Sie eine IUnknown::QueryInterface-Methode auf höherer Ebene.

Lassen Sie nicht zu, dass eine Eigenschaft mit der IStream-Schnittstelle geöffnet wird, wenn sie mit IStorage erstellt wurde. Umgekehrt dürfen Sie nicht zulassen, dass eine Eigenschaft mit der IStorage-Schnittstelle geöffnet wird, wenn sie mit IStream erstellt wurde.

Mit einer Ausnahme ist es akzeptabel, die IStreamDocfile-Schnittstelle zum Streamen eines Speicherobjekts von einem Container an einen anderen zu verwenden, aber der IID_IStreamDocfile Schnittstellenbezeichner muss im lpInterface-Parameter der OpenProperty-Methode übergeben werden.

Siehe auch

IMAPIProp::OpenProperty

IMAPISupport: IUnknown