CPersistStream クラス
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
CPersistStream
は、フィルターの永続的なプロパティ (つまり、保存されたグラフのフィルター プロパティ) の基本クラスです。
最も簡単な使用方法 CPersistStream
は次のとおりです。
このクラスを継承するようにフィルターを配置します。
WriteToStream と ReadFromStream をクラスに実装します。 これらはここでの関数をオーバーライドします。これはプレースホルダーとして機能する以外に何もしません。
IPersistStream を処理するように NonDelegatingQueryInterface を変更します。
SizeMax を実装して、保存するデータのバイト数の上限を返します。
Unicode™ データを保存する場合は、WCHAR が 2 バイトであることを覚えておいてください。
データが変更されたら、 SetDirty を呼び出します。
バージョン番号
ある時点で、データの形式を変更または拡張する場合があります。 その後、すべての古い保存されたストリームにバージョン番号が含まれている場合は、古いフォームと新しいフォームのどちらを表しているかを読み上げたときにわかります。 これを支援するために、このクラスはバージョン番号を書き込んで読み取ります。 書き込み時に GetSoftwareVersion を呼び出して、現時点で使用されているソフトウェアのバージョンを問い合わせる。 (実際には、これはファイル内のデータ レイアウトのバージョン番号です)。これは、データの最初のものとして書き込まれます。 バージョンを変更する場合は、 GetSoftwareVersion を実装 (オーバーライド) します。 ReadFromStream を呼び出す前に、ファイルからmPS_dwFileVersionにバージョン番号を読み取ります。そのため、ReadFromStream では、mPS_dwFileVersionをチェックして、古いバージョン ファイルを読み取っているかどうかを確認できます。 通常、バージョンが読み取り中のソフトウェア バージョンよりも新しいファイルを受け入れる必要があります。
CPersistStream は IPersistStream を実装します。 実装の詳細については、Microsoft Platform SDK の COM リファレンスを参照してください。
プロテクト データ メンバー | 説明 |
---|---|
mPS_dwFileVersion | ファイルのバージョン番号。 |
mPS_fDirty | このストリームのデータを保存する必要があります。 |
メンバー関数 | 説明 |
CPersistStream | CPersistStream オブジェクトを構築します。 |
Setdirty | オブジェクトをストリームに保存する必要があることを示します。 |
オーバーライド可能なメンバー関数 | 説明 |
GetClassID | このストリームのクラス識別子を取得します。 |
GetSoftwareVersion | このファイル形式のバージョン番号を取得します。 |
ReadFromStream | ストリームからフィルターのデータを読み取ります。 |
SizeMax | データに必要なバイト数を取得します (バージョン番号は含まれません)。 |
WriteToStream | フィルターのデータをストリームに書き込みます。 |
IPersistStream メソッド | 説明 |
GetSizeMax | データに必要なバイト数 (バージョン番号を含む) を取得します。 |
IsDirty | オブジェクトを保存する必要があるかどうかを確認します。 |
[読み込み] | ストリームからメモリにデータを読み込みます。 |
保存 | メモリからストリームにデータを保存します。 |