IStream-Schnittstelle (objidl.h)

Mit der IStream-Schnittstelle können Sie Daten in Streamobjekte lesen und schreiben. Stream -Objekte enthalten die Daten in einem strukturierten Speicherobjekt, wobei Speicher die Struktur bereitstellen. Einfache Daten können direkt in einen Stream geschrieben werden, aber in den meisten Fällen handelt es sich bei Streams um Elemente, die in einem Speicherobjekt geschachtelt sind. Sie ähneln Standarddateien.

Die IStream-Schnittstelle definiert Methoden ähnlich den MS-DOS FAT-Dateifunktionen. Beispielsweise verfügt jedes Streamobjekt über eigene Zugriffsrechte und einen Suchzeiger. Der Standard Unterschied zwischen einer DOS-Datei und einem Streamobjekt besteht darin, dass Streams im letzteren Fall mit einem IStream-Schnittstellenzeiger anstelle eines Dateihandles geöffnet werden.

Die Methoden in dieser Schnittstelle stellen die Daten Ihres Objekts als zusammenhängende Sequenz von Bytes dar, die Sie lesen oder schreiben können. Es gibt auch Methoden zum Committen und Wiederherstellen von Änderungen an Streams, die im transaktionsfähigen Modus geöffnet sind, und Methoden zum Einschränken des Zugriffs auf einen Bytebereich im Stream.

Streams können über einen längeren Zeitraum geöffnet bleiben, ohne dass Dateisystemressourcen verbraucht werden. Die IUnknown::Release-Methode ähnelt einer Close-Funktion für eine Datei. Nach der Freigabe ist das Streamobjekt nicht mehr gültig und kann nicht mehr verwendet werden.

Clients mit asynchronen Monikern können zwischen einem Datenpull- oder Datenpushmodell wählen, um einen asynchronen IMoniker::BindToStorage-Vorgang zu steuern und asynchrone Benachrichtigungen zu empfangen. Weitere Informationen finden Sie unter URL Monikers . In der folgenden Tabelle wird das Verhalten von asynchronen ISequentialStream::Read - und IStream::Seek-Aufrufen verglichen, die in IBindStatusCallback::OnDataAvailable in diesen beiden Downloadmodellen zurückgegeben werden:

IStream-Methodenaufruf Verhalten im Datenpullmodell Verhalten im Datenpushmodell
Read wird aufgerufen, um Teildaten zu lesen (d. a. nicht alle verfügbaren Daten). Gibt S_OK zurück. Der Client muss weiterhin alle verfügbaren Daten lesen, bevor er von IBindStatusCallback::OnDataAvailable zurückgibt, andernfalls wird der Bindungsvorgang blockiert. (das heißt, bis S_FALSE oder E_PENDING zurückgegeben wird) Gibt S_OK zurück. Auch wenn der Client an diesem Punkt von IBindStatusCallback::OnDataAvailable zurückgibt, wird der Bindungsvorgang fortgesetzt, und IBindStatusCallback::OnDataAvailable wird wiederholt aufgerufen, bis die Bindung abgeschlossen ist.
Lesen wird aufgerufen, um alle verfügbaren Daten zu lesen. Gibt E_PENDING zurück, wenn der Bindungsvorgang nicht abgeschlossen wurde, und IBindStatusCallback::OnDataAvailable wird erneut aufgerufen, wenn mehr Daten verfügbar sind. Identisch mit dem Daten pull-Modell.
Read wird aufgerufen, um alle verfügbaren Daten zu lesen, und der Bindungsvorgang ist abgelaufen (Dateiende). Gibt S_FALSE zurück. Anschließend wird IBindStatusCallback::OnDataAvailable aufgerufen, wobei das grfBSC-Flag auf BSCF_LASTDATANOTIFICATION festgelegt ist. Identisch mit dem Daten pull-Modell.
Seek wird aufgerufen. Seek funktioniert nicht im Daten pull-Modell Seek funktioniert nicht im Datenpushmodell.
 

Allgemeine Informationen zu diesem Thema finden Sie unter Asynchrone Moniker und Data-Pull-Model im Vergleich zu Datenpushmodell . Weitere Informationen zu COM-Regeln für die Speicherverwaltung finden Sie unter Verwalten der Speicherbelegung .

Vererbung

Die IStream-Schnittstelle erbt von der ISequentialStream-Schnittstelle . IStream verfügt auch über diese Arten von Membern:

Methoden

Die IStream-Schnittstelle verfügt über diese Methoden.

 
IStream::Clone

Die Clone-Methode erstellt ein neues Streamobjekt mit einem eigenen Suchzeiger, der auf die gleichen Bytes wie der ursprüngliche Datenstrom verweist.
IStream::Commit

Die Commit-Methode stellt sicher, dass alle Änderungen, die an einem im Transaktionsmodus geöffneten Streamobjekt vorgenommen werden, im übergeordneten Speicher widergespiegelt werden.
IStream::CopyTo

Kopiert eine angegebene Anzahl von Bytes vom aktuellen Suchzeiger im Datenstrom an den aktuellen Suchzeiger in einem anderen Datenstrom.
IStream::LockRegion

Die LockRegion-Methode schränkt den Zugriff auf einen angegebenen Bytebereich im Stream ein.
IStream::Revert

Die Revert-Methode verwirft alle Änderungen, die seit dem letzten IStream::Commit-Aufruf an einem transaktionierten Datenstrom vorgenommen wurden. Bei Streams, die im direkten Modus geöffnet werden, und Streams, die die COM-Verbunddateiimplementierung von IStream::Revert verwenden, hat diese Methode keine Auswirkungen.
IStream::Seek

Ändert den Suchzeiger auf einen neuen Speicherort. Der neue Speicherort ist entweder relativ zum Anfang des Datenstroms, zum Ende des Datenstroms oder zum aktuellen Suchzeiger.
IStream::SetSize

Ändert die Größe des Streamobjekts.
IStream::Stat

Die Stat-Methode ruft die STATSTG-Struktur für diesen Stream ab.
IStream::UnlockRegion

Die UnlockRegion-Methode entfernt die Zugriffsbeschränkung für einen Bytebereich, der zuvor mit IStream::LockRegion eingeschränkt wurde.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile objidl.h

Weitere Informationen

ISequentialStream

IStream – Implementierung von Zusammengesetzten Dateien