Bagikan melalui


Serialisasi Set Properti

Ada dua versi format serialisasi kumpulan properti. Spesifikasi asli menjelaskan format versi 0. Lihat Format Versi untuk informasi selengkapnya. Versi 1 memperluas versi asli. Semua set properti versi 0 valid sebagai set properti versi 1. Bidang Format Versi di header kumpulan properti berseri menunjukkan versi .

Item berikut mengidentifikasi perbedaan antara format serialisasi kumpulan properti versi 0 dan versi 1.

  • Dukungan untuk nilai VARTYPE baru. Untuk informasi selengkapnya tentang nilai VARTYPE dan cara menggunakannya, lihat topik Tipe dan Struktur Data IDispatch dan strukturPROPVARIANT.

    Nilai VARTYPE berikut ini tidak didukung dalam set properti versi 0, tetapi didukung di versi 1:

    VT_I1

    VT_VECTOR | VT_I1

    VT_INT

    VT_UINT

    VT_DECIMAL

    Selain itu, SafeArrays dapat diserialisasikan dalam kumpulan properti. Kehadiran SafeArray ditunjukkan oleh bit VT_ARRAY yang dikombinasikan, menggunakan operasi ATAU, dengan elemen array dalam vt anggota PROPVARIANT struktur. Misalnya, SafeArray bilangan bulat bertanda tangan 4-byte memiliki jenis VT_ARRAY | VT_I4.

    Jenis elemen berikut valid untuk SafeArray dalam kumpulan properti berseri:

           
    VT_I1 VT_UI1 VT_I2 VT_UI2
    VT_I4 VT_UI4 VT_INT VT_UINT
    VT_R4 VT_R8 VT_CY VT_DATE
    VT_BSTR VT_BOOL VT_DECIMAL VT_ERROR
    VT_VARIANT      
         

    Ketika jenis data VT_VARIANT ditentukan, itu menunjukkan bahwa SafeArray itu sendiri memegang strukturPROPVARIANT. Jenis untuk elemen-elemen ini harus berasal dari daftar sebelumnya, kecuali tidak boleh berisi jenis VT_VARIANT berlapis.

    Perhatikan bahwa implementasiIPropertyStorageharus dapat pulih dengan lancar dengan mengembalikan kesalahan ketika jenis baru ditemui; misalnya, jenis VARENUM.

  • Nama properti peka huruf besar/kecil. Nama properti, misalnya yang ditentukan dalam metode IPropertyStorage::WritePropertyNames, tidak peka huruf besar/kecil dalam set properti versi 0. Dalam set properti versi 1, nama properti dapat peka huruf besar/kecil tergantung pada nilai properti Perilaku baru.

    Properti Perilaku ID Properti 0x80000003 dengan jenis VT_UI4. Jika bit terendah dari nilai ini diatur, nama kumpulan properti peka huruf besar/kecil. Atur bendera PROPSETFLAG_CASE_SENSITIVE di parameter grfFlags dari IPropertySetStorage::Buat metode untuk menentukan kumpulan properti peka huruf besar/kecil.

  • Nama properti panjang. Nama properti untuk set properti versi 0 harus kurang dari atau sama dengan 256 karakter, termasuk terminator string, untuk kumpulan properti di halaman kode Unicode. Jika tidak di halaman kode Unicode, mereka harus kurang dari 256 byte. Set properti versi 1, di sisi lain, dapat memiliki nama properti dengan panjang tidak terbatas, meskipun masih dibatasi oleh batas ukuran properti keseluruhan yang ditetapkan sebesar 256 kilobyte (KB).

Disarankan agar implementasi IPropertyStorage membuat dan memelihara set properti versi 0 secara default. Jika penelepon kemudian meminta fitur khusus untuk format versi 1, hanya dengan begitu versi set properti akan diperbarui. Misalnya, jika properti jenis VT_ARRAY ditulis atau jika nama properti panjang ditulis, maka implementasi harus memperbarui format set properti ke versi 1. Satu pengecualian untuk pedoman ini terjadi jika nilai enumerasi PROPSETFLAG_CASE_SENSITIVE ditentukan dalam panggilan ke IPropertySetStorage::Create. Dalam hal ini, kumpulan properti harus dibuat sebagai kumpulan properti versi 1.