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
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
:
Ordnen Sie an, dass Ihr Filter diese Klasse erbt.
Implementieren Sie WriteToStream und ReadFromStream in Ihrer Klasse. Diese überschreiben hier die Funktionen, die nur als Platzhalter fungieren.
Ändern Sie Ihr NonDelegatingQueryInterface , um IPersistStream zu behandeln.
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.
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. |