Partager via


Classe CPersistStream

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Hiérarchie de classes cpersiststream

CPersistStream est la classe de base pour les propriétés persistantes des filtres (c’est-à-dire les propriétés de filtre dans les graphiques enregistrés).

La façon la plus simple d’utiliser CPersistStream consiste à :

  1. Organisez votre filtre pour qu’il hérite de cette classe.

  2. Implémentez WriteToStream et ReadFromStream dans votre classe. Ceux-ci remplacent les fonctions ici, qui ne font rien, mais agissent comme des espaces réservés.

  3. Modifiez votre NonDelegatingQueryInterface pour gérer IPersistStream.

  4. Implémentez SizeMax pour retourner une limite supérieure sur le nombre d’octets de données que vous enregistrez.

    Si vous enregistrez des données Unicode™, n’oubliez pas qu’un WCHAR est de 2 octets.

  5. Lorsque vos données changent, appelez SetDirty.

Numéros de versions

À un moment donné, vous pouvez décider de modifier ou d’étendre le format de vos données. Vous souhaiterez alors avoir un numéro de version dans tous les anciens flux enregistrés afin de savoir, lorsque vous les lirez, s’ils représentent l’ancien ou le nouveau formulaire. Pour vous aider, cette classe écrit et lit un numéro de version. Lorsqu’il écrit, il appelle GetSoftwareVersion pour se renseigner sur la version du logiciel utilisé actuellement. (En fait, il s’agit d’un numéro de version de la disposition des données dans le fichier.) Il écrit ceci comme la première chose dans les données. Si vous souhaitez modifier la version, implémentez (remplacez) GetSoftwareVersion. Il lit le numéro de version du fichier dans mPS_dwFileVersion avant d’appeler ReadFromStream. Par conséquent, dans ReadFromStream, vous pouvez case activée mPS_dwFileVersion pour voir si vous lisez un fichier de version ancienne. En règle générale, vous devez accepter les fichiers dont la version n’est pas plus récente que la version logicielle qui les lit.

CPersistStream implémente IPersistStream. Pour plus d’informations sur l’implémentation, consultez la référence COM dans le Kit de développement logiciel (SDK) de plateforme Microsoft.

Membres de données protégés Description
mPS_dwFileVersion Numéro de version du fichier.
mPS_fDirty Les données de ce flux doivent être enregistrées.
Fonctions de membre Description
CPersistStream Construit un objet CPersistStream .
SetDirty Indique que l’objet doit être enregistré dans le flux.
Fonctions membres substituables Description
GetClassID Récupère l’identificateur de classe de ce flux.
GetSoftwareVersion Récupère le numéro de version pour ce format de fichier.
ReadFromStream Lit les données du filtre à partir du flux.
SizeMax Récupère le nombre d’octets nécessaires pour les données (sans le numéro de version).
WriteToStream Écrit les données du filtre dans le flux.
IPersistStream, méthodes Description
GetSizeMax Récupère le nombre d’octets nécessaires pour les données (y compris le numéro de version).
IsDirty Vérifie si l’objet doit être enregistré.
Charge Charge les données du flux dans la mémoire.
Enregistrer Enregistre les données de la mémoire dans le flux.