Mengelola Properti

Setiap properti terdiri dari pengidentifikasi properti (unik dalam kumpulan propertinya), tag jenis varian (VT atau VarType) yang mewakili jenis nilai, dan nilai itu sendiri. Tag jenis varian menjelaskan representasi data dalam nilai . Selain itu, properti juga dapat diberi nama string yang dapat digunakan untuk mengidentifikasi properti, daripada menggunakan pengidentifikasi properti numerik (ID) yang diperlukan. Untuk membuat dan mengelola properti, COM menentukan antarmuka IPropertyStorage .

Antarmuka IPropertyStorage mencakup metode untuk membaca dan menulis array dari properti atau nama properti. Antarmuka mencakup metode Commit dan Revert yang mirip dengan metode IStorage dengan nama yang sama. Ada metode utilitas yang memungkinkan Anda mengatur pengidentifikasi kelas (CLSID) dari kumpulan properti, mengatur waktu yang terkait dengan set, dan mendapatkan statistik tentang kumpulan properti. Akhirnya, metode Enum membuat enumerator dan mengembalikan pointer ke antarmuka IEnumSTATPROPSTG-nya . Anda dapat memanggil metode antarmuka ini untuk menghitung struktur STATPROPSTG pada objek Anda, yang akan memberikan informasi tentang semua properti dalam kumpulan properti saat ini.

Berikut ini adalah contoh bagaimana properti diwakili. Jika properti tertentu dalam set properti menyimpan nama ilmiah hewan, nama tersebut dapat disimpan sebagai string yang dihentikan nol. Disimpan bersama dengan nama akan menjadi indikator jenis untuk menunjukkan bahwa nilainya adalah string yang dihentikan nol. Properti ini mungkin memiliki karakteristik berikut:

ID Properti Pengidentifikasi string Indikator tipe Nilai yang diwakili
02 PID_ANIMALNAME VT_LPWSTR Untai (karakter) Unicode yang dihentikan nol
03 PID_LEGCOUNT VT_I2 WORD

 

Aplikasi apa pun yang mengenali format set properti—mengidentifikasinya melalui pengidentifikasi formatnya (FMTID)—dapat melihat properti dengan pengidentifikasi PID_ANIMALNAME, menentukan bahwa itu adalah string yang dihentikan nol, serta membaca dan menulis nilainya. Meskipun aplikasi dapat memanggil IPropertyStorage::ReadMultiple untuk membaca salah satu atau semua set properti (setelah pertama kali mendapatkan pointer), aplikasi harus tahu cara menginterpretasikan kumpulan properti.

Nilai properti diteruskan melalui antarmuka properti sebagai instans jenis PROPVARIANT.

Penting untuk membedakan antara properti yang disimpan (persisten) ini, dan properti run-time. Konstanta nilai jenis varian memiliki nama yang dimulai dengan VT_. Namun, kumpulan PROPVARIANTs yang valid tidak sepenuhnya setara dengan set VARIAN yang digunakan dalam kontrol Automation dan ActiveX.

Satu-satunya perbedaan antara kedua struktur adalah set tag VT_ (Jenis Varian/ VarType) yang diizinkan di masing-masing. Jika jenis properti tertentu dapat digunakan dalam VARIAN dan PROPVARIANT, tag jenis (nilai VT_) selalu memiliki nilai yang identik. Selanjutnya, untuk nilai VT_ tertentu, representasi dalam memori yang digunakan dalam VARIAN dan PROPVARIANTs identik. Diambil semua bersama-sama, pendekatan ini memungkinkan sistem jenis untuk menangkap tag jenis yang tidak diizinkan, sementara pada saat yang sama memungkinkan klien berpengetahuan luas untuk mengimplementasikan transmisi pointer jika sesuai.

Untuk informasi selengkapnya, lihat bagian berikut, Pertimbangan Penyimpanan Properti.