次の方法で共有


CPersistStream クラス

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

cpersiststream クラス階層

CPersistStream は、フィルターの永続的なプロパティ (つまり、保存されたグラフのフィルター プロパティ) の基本クラスです。

最も簡単な使用方法 CPersistStream は次のとおりです。

  1. このクラスを継承するようにフィルターを配置します。

  2. WriteToStreamReadFromStream をクラスに実装します。 これらはここでの関数をオーバーライドします。これはプレースホルダーとして機能する以外に何もしません。

  3. IPersistStream を処理するように NonDelegatingQueryInterface を変更します。

  4. SizeMax を実装して、保存するデータのバイト数の上限を返します。

    Unicode™ データを保存する場合は、WCHAR が 2 バイトであることを覚えておいてください。

  5. データが変更されたら、 SetDirty を呼び出します。

バージョン番号

ある時点で、データの形式を変更または拡張する場合があります。 その後、すべての古い保存されたストリームにバージョン番号が含まれている場合は、古いフォームと新しいフォームのどちらを表しているかを読み上げたときにわかります。 これを支援するために、このクラスはバージョン番号を書き込んで読み取ります。 書き込み時に GetSoftwareVersion を呼び出して、現時点で使用されているソフトウェアのバージョンを問い合わせる。 (実際には、これはファイル内のデータ レイアウトのバージョン番号です)。これは、データの最初のものとして書き込まれます。 バージョンを変更する場合は、 GetSoftwareVersion を実装 (オーバーライド) します。 ReadFromStream を呼び出す前に、ファイルからmPS_dwFileVersionにバージョン番号を読み取ります。そのため、ReadFromStream では、mPS_dwFileVersionをチェックして、古いバージョン ファイルを読み取っているかどうかを確認できます。 通常、バージョンが読み取り中のソフトウェア バージョンよりも新しいファイルを受け入れる必要があります。

CPersistStreamIPersistStream を実装します。 実装の詳細については、Microsoft Platform SDK の COM リファレンスを参照してください。

プロテクト データ メンバー 説明
mPS_dwFileVersion ファイルのバージョン番号。
mPS_fDirty このストリームのデータを保存する必要があります。
メンバー関数 説明
CPersistStream CPersistStream オブジェクトを構築します。
Setdirty オブジェクトをストリームに保存する必要があることを示します。
オーバーライド可能なメンバー関数 説明
GetClassID このストリームのクラス識別子を取得します。
GetSoftwareVersion このファイル形式のバージョン番号を取得します。
ReadFromStream ストリームからフィルターのデータを読み取ります。
SizeMax データに必要なバイト数を取得します (バージョン番号は含まれません)。
WriteToStream フィルターのデータをストリームに書き込みます。
IPersistStream メソッド 説明
GetSizeMax データに必要なバイト数 (バージョン番号を含む) を取得します。
IsDirty オブジェクトを保存する必要があるかどうかを確認します。
[読み込み] ストリームからメモリにデータを読み込みます。
保存 メモリからストリームにデータを保存します。