Класс CPersistStream
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
CPersistStream
— это базовый класс для постоянных свойств фильтров (то есть свойств фильтра в сохраненных графах).
Простейшим способом использования CPersistStream
является:
Упорядочите фильтр для наследования этого класса.
Реализуйте WriteToStream и ReadFromStream в классе. Они переопределяют функции, которые не выполняют никаких действий, кроме как заполнители.
Измените nonDelegatingQueryInterface для обработки IPersistStream.
Реализуйте SizeMax , чтобы вернуть верхнюю границу количества байтов сохраненных данных.
Если вы сохраняете данные Юникода™, помните, что WCHAR составляет 2 байта.
При изменении данных вызовите SetDirty.
Номера версий
В какой-то момент вы можете изменить или расширить формат данных. Затем вам потребуется номер версии во всех старых сохраненных потоках, чтобы вы могли определить, когда вы читаете их, представляют ли они старую или новую форму. Чтобы помочь вам, этот класс записывает и считывает номер версии. При записи он вызывает GetSoftwareVersion , чтобы узнать о версии используемого в данный момент программного обеспечения. (Фактически это номер версии макета данных в файле.) Он записывает это как первое, что происходит в данных. Если вы хотите изменить версию, реализуйте (переопределите) GetSoftwareVersion. Он считывает номер версии из файла в mPS_dwFileVersion перед вызовом ReadFromStream, поэтому в ReadFromStream можно проверка mPS_dwFileVersion, чтобы узнать, читаете ли вы старый файл версии. Обычно следует принимать файлы, версия которых не является более новой, чем версия программного обеспечения, считывающая их.
CPersistStream реализует IPersistStream. Дополнительные сведения о реализации см. в справочнике по COM в пакете SDK для платформы Майкрософт.
Защищенные члены данных | Описание |
---|---|
mPS_dwFileVersion | Номер версии файла. |
mPS_fDirty | Данные для этого потока должны быть сохранены. |
Функции элементов | Описание |
CPersistStream | Создает объект CPersistStream . |
SetDirty | Указывает, что объект должен быть сохранен в потоке. |
Переопределимые функции-члены | Описание |
GetClassID | Извлекает идентификатор класса этого потока. |
GetSoftwareVersion | Извлекает номер версии для этого формата файла. |
ReadFromStream | Считывает данные фильтра из потока. |
SizeMax | Извлекает количество байтов, необходимых для данных (не включая номер версии). |
WriteToStream | Записывает данные фильтра в поток. |
Методы IPersistStream | Описание |
GetSizeMax | Извлекает количество байтов, необходимое для данных (включая номер версии). |
IsDirty | Проверяет, нужно ли сохранить объект. |
Загрузить | Загружает данные из потока в память. |
Сохранить | Сохраняет данные из памяти в поток. |