CPersistStream-Klasse

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

cpersiststream-Klassenhierarchie

CPersistStream ist die Basisklasse für persistente Eigenschaften von Filtern (d.a. Filtereigenschaften in gespeicherten Diagrammen).

Die einfachste Möglichkeit zur Verwendung besteht darin, Folgendes zu verwenden CPersistStream :

  1. Ordnen Sie an, dass Ihr Filter diese Klasse erbt.

  2. Implementieren Sie WriteToStream und ReadFromStream in Ihrer Klasse. Diese überschreiben hier die Funktionen, die nur als Platzhalter fungieren.

  3. Ändern Sie Ihr NonDelegatingQueryInterface , um IPersistStream zu behandeln.

  4. Implementieren Sie SizeMax , um eine Obergrenze für die Anzahl der gespeicherten Datenbytes zurückzugeben.

    Wenn Sie Unicode-Daten™ speichern, denken Sie daran, dass ein WCHAR 2 Bytes ist.

  5. Wenn sich Ihre Daten ändern, rufen Sie SetDirty auf.

Versionsnummern

Irgendwann können Sie sich entscheiden, das Format Ihrer Daten zu ändern oder zu erweitern. Sie wünschen sich dann, dass Sie in allen alten gespeicherten Streams eine Versionsnummer hätten, damit Sie beim Lesen feststellen können, ob sie die alte oder neue Form darstellen. Um Sie zu unterstützen, schreibt und liest diese Klasse eine Versionsnummer. Wenn es schreibt, ruft es GetSoftwareVersion auf, um sich nach der Version der derzeit verwendeten Software zu erkundigen. (Im Ergebnis ist dies eine Versionsnummer des Datenlayouts in der Datei.) Dies wird als erstes in die Daten geschrieben. Wenn Sie die Version ändern möchten, implementieren (überschreiben) Sie GetSoftwareVersion. Es liest die Versionsnummer aus der Datei in mPS_dwFileVersion , bevor ReadFromStream aufgerufen wird. Daher können Sie in ReadFromStreammPS_dwFileVersion überprüfen, ob Sie eine Alte Version lesen. Normalerweise sollten Sie Dateien akzeptieren, deren Version nicht neuer ist als die Softwareversion, die sie liest.

CPersistStream implementiert IPersistStream. Weitere Implementierungsinformationen finden Sie in der COM-Referenz im Microsoft Platform SDK.

Geschützte Datenmember BESCHREIBUNG
mPS_dwFileVersion Versionsnummer der Datei.
mPS_fDirty Daten für diesen Stream müssen gespeichert werden.
Elementfunktionen BESCHREIBUNG
CPersistStream Erstellt ein CPersistStream-Objekt .
Setdirty Gibt an, dass das Objekt im Stream gespeichert werden muss.
Überschreibbare Memberfunktionen BESCHREIBUNG
Getclassid Ruft den Klassenbezeichner dieses Datenstroms ab.
GetSoftwareVersion Ruft die Versionsnummer für dieses Dateiformat ab.
ReadFromStream Liest die Daten des Filters aus dem Stream.
SizeMax Ruft die Anzahl der für Daten benötigten Bytes ab (ohne Versionsnummer).
WriteToStream Schreibt die Daten des Filters in den Stream.
IPersistStream-Methoden BESCHREIBUNG
GetSizeMax Ruft die Anzahl der für Daten benötigten Bytes ab (einschließlich Versionsnummer).
IsDirty Überprüft, ob das Objekt gespeichert werden muss.
Laden Lädt die Daten aus dem Stream in den Arbeitsspeicher.
Speichern Speichert die Daten aus dem Arbeitsspeicher im Stream.