Bagikan melalui


Kelas CPersistStream

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

hierarki kelas cpersiststream

CPersistStream adalah kelas dasar untuk properti filter persisten (yaitu, properti filter dalam grafik yang disimpan).

Cara paling sederhana untuk digunakan CPersistStream adalah dengan:

  1. Atur agar filter Anda mewarisi kelas ini.

  2. Terapkan WriteToStream dan ReadFromStream di kelas Anda. Ini akan mengambil alih fungsi di sini, yang tidak melakukan apa-apa selain bertindak sebagai tempat penampung.

  3. Ubah NonDelegatingQueryInterface Anda untuk menangani IPersistStream.

  4. Terapkan SizeMax untuk mengembalikan batas atas pada jumlah byte data yang Anda simpan.

    Jika Anda menyimpan data Unicodeā„¢, ingatlah bahwa WCHAR adalah 2 byte.

  5. Saat data Anda berubah, panggil SetDirty.

Nomor Versi

Pada titik tertentu Anda mungkin memutuskan untuk mengubah atau memperluas format data Anda. Anda kemudian akan berharap Anda memiliki nomor versi di semua aliran lama yang disimpan sehingga Anda dapat mengetahui, ketika Anda membacanya, apakah mereka mewakili formulir lama atau baru. Untuk membantu Anda, kelas ini menulis dan membaca nomor versi. Ketika menulis, ia memanggil GetSoftwareVersion untuk menanyakan versi perangkat lunak yang digunakan saat ini. (Efeknya, ini adalah nomor versi tata letak data dalam file.) Ini menulis ini sebagai hal pertama dalam data. Jika Anda ingin mengubah versi, terapkan (ambil alih) GetSoftwareVersion. Ini membaca nomor versi dari file ke mPS_dwFileVersion sebelum memanggil ReadFromStream, jadi di ReadFromStream Anda dapat memeriksa mPS_dwFileVersion untuk melihat apakah Anda membaca file versi lama. Biasanya Anda harus menerima file yang versinya tidak lebih baru dari versi perangkat lunak yang membacanya.

CPersistStream mengimplementasikan IPersistStream. Untuk informasi implementasi selengkapnya, lihat Referensi COM di SDK Platform Microsoft.

Anggota Data terproteksi Deskripsi
mPS_dwFileVersion Nomor versi file.
mPS_fDirty Data untuk aliran ini harus disimpan.
Fungsi Anggota Deskripsi
CPersistStream Membuat objek CPersistStream .
SetDirty Menunjukkan bahwa objek harus disimpan ke aliran.
Fungsi Anggota yang Dapat Diganti Deskripsi
GetClassID Mengambil pengidentifikasi kelas aliran ini.
GetSoftwareVersion Mengambil nomor versi untuk format file ini.
ReadFromStream Membaca data filter dari aliran.
SizeMax Mengambil jumlah byte yang diperlukan untuk data (tidak termasuk nomor versi).
WriteToStream Menulis data filter ke aliran.
Metode IPersistStream Deskripsi
GetSizeMax Mengambil jumlah byte yang diperlukan untuk data (termasuk nomor versi).
IsDirty Memeriksa apakah objek harus disimpan.
Muat Memuat data dari aliran ke dalam memori.
Simpan Menyimpan data dari memori ke aliran.