Bagikan melalui


Serialisasi Set Properti

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

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

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

    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 set properti. Kehadiran SafeArray ditunjukkan oleh gabungan bit VT_ARRAY, menggunakan operasi OR , dengan elemen array dalam anggota vt struktur PROPVARIANT . Misalnya, SafeArray bilangan bulat bertanda 4 byte memiliki jenis VT_ARRAY | VT_I4.

    Jenis elemen berikut ini valid untuk SafeArray dalam kumpulan properti serial:

           
    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 struktur PROPVARIANT . Jenis untuk elemen ini harus berasal dari daftar sebelumnya, kecuali tidak boleh berisi jenis VT_VARIANT berlapis.

    Perhatikan bahwa implementasi IPropertyStorage harus dapat pulih dengan baik 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 kumpulan properti versi 1, nama properti dapat peka huruf besar/kecil tergantung pada nilai properti Perilaku baru.

    Properti Perilaku adalah ID Properti 0x80000003 dengan jenis VT_UI4. Jika bit terendah dari nilai ini diatur, nama set properti peka huruf besar/kecil. Atur bendera PROPSETFLAG_CASE_SENSITIVE di parameter grfFlags dari metode IPropertySetStorage::Create 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 set properti di halaman kode Unicode. Jika tidak di halaman kode Unicode, kode tersebut 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 harus 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 set properti versi 1.