Freigeben über


SHCreateMemStream-Funktion (shlwapi.h)

Erstellt einen Speicherdatenstrom mit einem ähnlichen Prozess wie CreateStreamOnHGlobal.

Syntax

IStream * SHCreateMemStream(
  [in, optional] const BYTE *pInit,
  [in]           UINT       cbInit
);

Parameter

[in, optional] pInit

Typ: const BYTE*

Ein Zeiger auf einen Puffer der Größe cbInit. Der Inhalt dieses Puffers wird verwendet, um den anfänglichen Inhalt des Speicherdatenstroms festzulegen. Wenn dieser Parameter NULL ist, weist der zurückgegebene Speicherdatenstrom keinen anfänglichen Inhalt auf.

[in] cbInit

Typ: UINT

Die Anzahl der Bytes im Puffer, auf die pInit verweist. Wenn pInit auf NULL festgelegt ist, muss cbInit null sein.

Rückgabewert

Typ: IStream*

Gibt bei Erfolg einen Zeiger auf den erstellten Speicherdatenstrom zurück. Gibt NULL zurück, wenn das Streamobjekt nicht zugeordnet werden konnte.

Hinweise

Vor Windows Vista war diese Funktion weder in der öffentlichen Datei Shlwapi.h enthalten, noch wurde sie nach Namen aus Shlwapi.dll exportiert. Um sie auf früheren Systemen verwenden zu können, müssen Sie sie direkt aus der Shlwapi.dll-Datei als Ordnungszahl 12 aufrufen.

Diese Funktion erstellt einen Speicherdatenstrom. Dies ist eine Implementierung der IStream-Schnittstelle , die den Inhalt im Arbeitsspeicher speichert. SHCreateMemStream unterscheidet sich auf folgende Weise von CreateStreamOnHGlobal .

  • Threadsicherheit. Der von SHCreateMemStream erstellte Stream ist ab Windows 8 threadsicher. Auf früheren Systemen ist der Stream nicht threadsicher. Der von CreateStreamOnHGlobal erstellte Stream ist threadsicher.
  • Anfänglicher Inhalt. SHCreateMemStream akzeptiert den anfänglichen Inhalt in Form eines Puffers. CreateStreamOnHGlobal akzeptiert den anfänglichen Inhalt in Form eines HGLOBAL.
  • Zugriff auf Inhalte. SHCreateMemStream lässt keinen direkten Zugriff auf den Streaminhalt zu. CreateStreamOnHGlobal ermöglicht den Zugriff über GetHGlobalFromStream.
  • Fehlerinformationen. Wenn SHCreateMemStreamNULL zurückgibt, konnte der erforderliche Arbeitsspeicher nicht zugeordnet werden. Aufrufer sollten davon ausgehen, dass die Ursache E_OUTOFMEMORY ist.
  • Unterstützung für IStream::Clone. Vor Windows 8 unterstützt der von SHCreateMemStream erstellte Stream IStream::Clone nicht. Der von CreateStreamOnHGlobal erstellte Stream tut dies. Ab Windows 8 unterstützt der von SHCreateMemStream erstellte Stream IStream::Clone.
  • Der von SHCreateMemStream zurückgegebene Stream gibt S_FALSE aus IStream::Read zurück, wenn Sie versuchen, über das Ende des Puffers zu lesen. Der von CreateStreamOnHGlobal zurückgegebene Stream gibt S_OK zurück und legt *pcbRead auf 0 fest, wenn Sie versuchen, über das Ende des Puffers zu lesen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional, Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server, Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shlwapi.h
Bibliothek Shlwapi.lib
DLL Shlwapi.dll (Version 5.0 oder höher)