Classe CPersistStream

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Gerarchia di classi cpersiststream

CPersistStream è la classe di base per le proprietà persistenti dei filtri, ovvero le proprietà del filtro nei grafici salvati.

Il modo più semplice da usare CPersistStream consiste nel:

  1. Organizzare il filtro per ereditare questa classe.

  2. Implementare WriteToStream e ReadFromStream nella classe. Queste sostituiranno le funzioni qui, che non fanno nulla, ma fungono da segnaposto.

  3. Modificare nonDelegatingQueryInterface per gestire IPersistStream.

  4. Implementare SizeMax per restituire un limite superiore al numero di byte di dati salvati.

    Se si salvano i dati Unicode™, tenere presente che un WCHAR è 2 byte.

  5. Quando i dati vengono modificati, chiamare SetDirty.

Numeri di versione

A un certo punto, è possibile decidere di modificare o estendere il formato dei dati. Si vuole quindi avere un numero di versione in tutti i flussi salvati precedenti in modo da poter dire, quando li si legge, se rappresentano il modulo precedente o nuovo. Per aiutare l'utente, questa classe scrive e legge un numero di versione. Quando scrive, chiama GetSoftwareVersion per indagare sulla versione del software in uso al momento. In effetti, si tratta di un numero di versione del layout dei dati nel file. Scrive questo come prima cosa nei dati. Se si vuole modificare la versione, implementare (override) GetSoftwareVersion. Legge il numero di versione dal file in mPS_dwFileVersion prima di chiamare ReadFromStream, quindi in ReadFromStream è possibile controllare mPS_dwFileVersion per verificare se si sta leggendo un file di versione precedente. In genere è consigliabile accettare i file la cui versione non è più recente della versione del software che le sta leggendo.

CPersistStream implementa IPersistStream. Per altre informazioni sull'implementazione, vedere Informazioni di riferimento COM in Microsoft Platform SDK.

Membri dati protetti Descrizione
mPS_dwFileVersion Numero di versione del file.
mPS_fDirty I dati per questo flusso devono essere salvati.
Funzioni di membro Descrizione
CPersistStream Costruisce un oggetto CPersistStream .
SetDirty Indica che l'oggetto deve essere salvato nel flusso.
Funzioni membro sostituibile Descrizione
GetClassID Recupera l'identificatore della classe di questo flusso.
GetSoftwareVersion Recupera il numero di versione per questo formato di file.
ReadFromStream Legge i dati del filtro dal flusso.
SizeMax Recupera il numero di byte necessari per i dati (non incluso il numero di versione).
WriteToStream Scrive i dati del filtro nel flusso.
Metodi IPersistStream Descrizione
GetSizeMax Recupera il numero di byte necessari per i dati (incluso il numero di versione).
IsDirty Verifica se l'oggetto deve essere salvato.
Load Carica i dati dal flusso in memoria.
Salva Salva i dati dalla memoria al flusso.