Bagikan melalui


Gambaran Umum Sistem Properti

Sistem Properti Windows adalah sistem baca/tulis definisi data yang dapat diperluas yang menyediakan cara yang seragam untuk mengekspresikan metadata tentang item Shell. Sistem Properti Windows di Windows Vista dan yang lebih baru memungkinkan Anda menyimpan dan mengambil metadata untuk item Shell. Item Shell adalah satu konten, seperti file, folder, email, atau kontak. Properti adalah bagian individual metadata yang terkait dengan item Shell. Nilai properti dinyatakan sebagai struktur PROPVARIANT .

Topik ini diatur sebagai berikut:

Pengantar

Properti secara unik diidentifikasi dengan nama kanonisnya (seperti System.Document.LastAuthor) dan kunci properti (seperti PKEY_Document_LastAuthor). Kunci properti (PKEY) adalah bagian nama dari pasangan nama-nilai yang terdiri dari PKEY/PROPVARIANT atau string/PROPVARIANT, di mana string adalah nama kanonis PKEY (seperti System.Document.LastAuthor). PKEY adalah definisi yang memberi tahu sistem properti semua yang perlu diketahui tentang properti , sedangkan nilainya adalah instans properti yang sebenarnya. PKEY secara internal berisi formatID dan propID.

Properti individu terdiri dari tiga bagian berikut:

  • Nama kanonis, seperti System.Music.Artist.
  • Deskripsi skema, yang ditentukan dalam format file XML .propdesc dan diekspresikan secara terprogram melalui IPropertyDescription.
  • Nilai, seperti nama penyanyi.

Deskripsi skema terdiri dari informasi tentang properti, seperti nama properti, jenis data, batasan, informasi tentang bagaimana properti berinteraksi dengan tampilan dan sistem pencarian, dan sebagainya. Nama dan deskripsi skema ditentukan secara global, dan sama untuk semua item dan jenis. Nilai khusus untuk item individual. Artinya, System.Music.Artist properti selalu didefinisikan sebagai string multinilai, tetapi mungkin memiliki nilai yang berbeda (atau tidak ada nilai sama sekali) untuk setiap item.

Handler properti menerjemahkan data yang disimpan dalam file ke dalam skema terstruktur yang dikenali oleh dan dapat diakses oleh Windows Explorer, Windows Search, dan aplikasi lainnya. Sistem ini kemudian dapat berinteraksi dengan handler properti untuk menulis dan membaca properti ke dan dari file. Data yang diterjemahkan diekspos secara terprogram dan ditampilkan kepada pengguna melalui Windows Explorer dalam berbagai konteks termasuk tampilan detail, infotip, panel detail, halaman properti, dan sebagainya. Setiap handler properti dikaitkan dengan jenis file tertentu, yang diidentifikasi oleh ekstensi nama file. Pengembang harus menerapkan handler properti yang menghasilkan dan menggunakan format asli jenis file mereka, seperti .jpg atau .png, atau menggunakan In-Memory Property Store, yang menghasilkan dan menggunakan format biner MS-PROPSTORE.

Sistem Properti Windows membuat model data abstrak yang menyediakan tingkat abstraksi dari format file individual. Model data abstrak yang disediakan oleh Sistem Properti Windows adalah metode untuk membaca dan menulis sekumpulan nilai bernama yang dapat diperluas yang terkait dengan item Shell. Ekspresi nilai fleksibel, mendukung banyak jenis data, dan dapat diperluas, memungkinkan data arbitrer (VT_BLOB) dan objek untuk dinyatakan sebagai nilai.

Karena abstraksi, Anda dapat mengkueri atribut atau metadata item apa pun. Contoh item yang dapat diabstraksi termasuk dokumen Microsoft Office, tag ID3, dan AutoCAD serta perangkat lunak kepemilikan pihak ketiga lainnya. Demikian pula, jika Anda memiliki file .jpeg, Anda dapat menggunakan codec .jpeg dan EXIF untuk membaca byte file untuk menemukan dimensi gambar. Jika Anda memiliki file .png sebagai gantinya, Anda memerlukan codec yang berbeda dan kode yang berbeda untuk melakukannya. Menggunakan Sistem Properti Windows menghindari masalah semacam ini. Jika Anda menerapkan jenis file baru, Anda memiliki opsi untuk menyambungkan ke abstraksi seragam yang ditawarkan oleh Sistem Properti Windows dan menentukan cara membuat metadata Anda dapat dikonsumsi. Untuk alasan ini, selalu lebih baik menggunakan platform umum yang disediakan oleh Sistem Properti Windows.

Skenario Pengembangan

Properti dinyatakan oleh produsen dan oleh konsumen. Dalam konteks ini, produsen adalah penemu properti dalam Sistem Properti Windows dan konsumen adalah aplikasi (dan pengembangnya) yang menggunakan informasi properti dari sistem ini. Penggunaan dan peserta dalam Sistem Properti Windows diidentifikasi dalam tabel berikut.

Penggunaan Sistem Properti Windows Peserta
Blok penyusun yang menyediakan registri deskripsi properti yang dapat diperluas, implementasi penyimpanan properti dalam memori, dan layanan untuk pengikatan ke penangan properti, mengonversi jenis, dan membuat serialisasi penyimpanan properti. Konsumen
Aplikasi yang ingin membaca dan menulis properti dengan cara abstrak. Konsumen
Penemu properti yang menentukan properti baru untuk sistem properti dengan mendefinisikan skema properti kustom dan mengembangkan handler properti mereka sendiri. Produser
Pemilik format file yang ingin mengaktifkan akses ke properti yang disimpan dalam format file kustom mereka. Produser

 

Konsumen mengonsumsi properti, skema, dan penangan properti yang ada. Properti yang tersedia untuk dikonsumsi termasuk properti baca/tulis dari penangan properti untuk jenis file yang didukung dan mungkin juga menyertakan beberapa properti kustom. Skema yang tersedia mencakup setidaknya skema sistem, dan terkadang yang lain juga. Konsumen dapat membuat aplikasi untuk menggunakan metadata dan membangun tampilan berdasarkan artis, terlepas dari folder tempat item disimpan. Hierarki folder file tidak relevan. Misalnya, Anda dapat menentukan semua item lagu oleh penyanyi tertentu tanpa khawatir tentang lokasi item tersebut. Skenario end-to-end yang kompleks ini tidak terbatas pada Sistem Properti Windows, tetapi melibatkan beberapa komponen yang berbeda, seperti folder pengindeksan dan pencarian.

Penemu properti, atau pengembang pihak ketiga, adalah produsen dalam Sistem Properti Windows. Saat bersiap menentukan properti baru, pertama-tama periksa sekumpulan properti yang ditentukan Windows. Jika Anda menemukan salah satu yang memenuhi kebutuhan Anda, dari jenis dan semantik yang cocok dengan penggunaan yang diperlukan, gunakan properti tersebut dan jangan menciptakan yang baru. Jika Anda menentukan properti kustom baru, cobalah untuk mendapatkan perjanjian dengan pengembang lain yang mungkin ingin menggunakannya dan menerbitkan hasil perjanjian tersebut sehingga mereka dapat bergabung dengan komunitas pengguna properti tersebut.

Produsen dapat memanfaatkan fungsionalitas Windows Explorer. Misalnya, jika Anda menulis format gambar baru, dan mengimplementasikan handler properti, format file baru Anda akan tersedia di Windows Explorer. Pengguna kemudian dapat menandai foto mereka dan mempivot koleksi foto mereka berdasarkan properti apa pun di Sistem Properti Windows. Bahkan, apa pun yang dilakukan Shell dengan properti, pengembang pihak ketiga dapat melakukan dalam aplikasi mereka sendiri. Ini termasuk pengelompokan, pengurutan, kueri, dan menampilkan properti lengkap. Pengalaman pengguna yang disediakan Windows Explorer sebagian besar dapat diimplementasikan oleh pihak ketiga dengan API yang tersedia untuk umum. Windows Explorer dapat diganti atau diperluas menggunakan API ini.

Dari sudut pandang aplikasi yang menggunakan model data Shell, ada berbagai macam skenario yang melibatkan penggunaan sistem properti Windows. Aplikasi manajemen media adalah contoh yang menonjol. Skenario sistem properti inti mencakup skenario seperti membaca properti kata kunci foto atau mengatur properti datetaken. Contoh skenario integrasi end-to-end yang diaktifkan Sistem Properti Windows, tetapi yang mengharuskan beberapa komponen lain berfungsi, termasuk menampilkan semua gambar, atau menemukan dokumen yang berisi kata kunci.

Properti melayani produsen dan konsumen ketika mereka berinteraksi dengan Windows Search dan pengindeksan. Windows Search memiliki cache nilai properti yang digunakan dalam implementasi Windows Search Service (WSS). Nilai properti ini dapat dikueri secara terprogram dengan menggunakan penyedia Windows Search OLE DB, atau melalui ISearchFolderItemFactory, yang mewakili item dalam hasil pencarian dan tampilan berbasis kueri. Windows Search kemudian mengumpulkan dan menyimpan properti yang dipancarkan oleh penangan filter atau penangan properti ketika item seperti dokumen Word diindeks. Penyimpanan ini dibuang dan dibangun kembali ketika indeks dibangun kembali.

Catatan

Ingat bahwa ketika Anda mendaftarkan ulang skema, perubahan yang dilakukan pada atribut properti yang ditentukan sebelumnya mungkin tidak dihormati oleh pengindeks. Solusinya adalah membangun kembali indeks, atau memperkenalkan properti baru yang mencerminkan perubahan alih-alih memperbarui yang lama (tidak disarankan). Untuk informasi selengkapnya, lihat Catatan untuk Pelaksana nanti dalam topik ini.

 

Misalnya, pengembang yang membuat aplikasi media ingin menunjukkan kepada pengguna semua musik yang tersedia oleh artis tertentu. Aplikasi ini akan memberi pengguna daftar artis yang tersedia, lalu menghasilkan daftar semua musik yang tersedia oleh artis yang dipilih pengguna. Atau pengguna akhir mungkin ingin melakukan kueri untuk ?artist:Beethoven?, dan diekspos ke daftar lengkap properti yang tersedia dalam proses pencarian mereka. Contoh ini melibatkan penggunaan namespace Shell, penangan properti, dan/atau mengkueri indeks melalui salah satu hal berikut ini:

  • Sumber data Shell.
  • Penyedia OLE DB.
  • File Pencarian Tersimpan (.search-ms) yang digunakan untuk memulai kueri dengan menavigasi ke file pencarian di Windows Explorer atau mengikat ke IShellFolder secara terprogram.

Catatan

System.Kind Meskipun properti tidak berpartisipasi dalam skenario aplikasi media ini, properti dapat digunakan untuk membuat kueri yang akan mengembalikan semua file .search-ms dalam cakupan tertentu.

 

Cara yang disukai untuk mengakses SEARCH API dan membuat aplikasi Windows Search adalah melalui sumber data Shell. ISearchFolderItemFactory adalah komponen yang dapat membuat instans sumber data folder Pencarian, yang merupakan semacam sumber data "virtual" yang disediakan oleh Shell yang dapat menjalankan kueri melalui sumber data lain di namespace layanan Shell dan menghitung hasil. Ini dapat melakukannya baik dengan menggunakan pengindeks, atau dengan menghitung dan memeriksa item secara manual dalam cakupan yang ditentukan.

Pengembang pihak ketiga dapat membuat aplikasi yang menggunakan data dalam indeks melalui kueri terprogram, dan dapat memperluas data dalam indeks untuk jenis file dan item kustom yang akan diindeks oleh Windows Search. Jika Anda ingin menampilkan hasil kueri di Windows Explorer, Anda harus menerapkan sumber data Shell sebelum Anda bisa membuat penangan protokol untuk memperluas indeks. Namun, jika semua kueri akan terprogram (melalui OLE DB misalnya) dan ditafsirkan oleh kode aplikasi, bukan Shell, maka namespace Shell masih lebih disukai tetapi tidak diperlukan. Penangan protokol diperlukan windows untuk mendapatkan informasi tentang isi file, seperti item dalam database atau tipe file kustom. Meskipun Windows Search dapat mengindeks nama dan properti file, Windows tidak memiliki informasi tentang isi file. Akibatnya, item tersebut tidak dapat diindeks atau diekspos di Windows Shell. Dengan menerapkan penangan protokol kustom, Anda dapat mengekspos item ini. Untuk daftar handler yang diidentifikasi oleh skenario pengembang yang ingin Anda capai, lihat "Gambaran Umum Handler" di Windows Search sebagai Platform Pengembangan.

Catatan

Sumber data Shell terkadang dikenal sebagai ekstensi namespace Shell. Handler terkadang dikenal sebagai ekstensi Shell atau handler ekstensi Shell.

 

Catatan untuk Pelaksana

Karena potensi kesulitan yang mungkin dimiliki pengindeks saat mengonsumsi skema sistem properti, sangat penting bagi Anda untuk menentukan atribut dengan hati-hati dan strategis untuk rilis pertama skema. Setiap perubahan pada atribut (jenis, lebar kolom, apakah dapat diindeks) tidak akan tercermin dalam database setelah skema didaftarkan. Satu-satunya cara untuk memiliki perubahan ini yang dikenali setelah skema didaftarkan sekali pada sistem adalah dengan membangun kembali indeks dan kemudian mendaftarkan skema baru, atau untuk mendaftarkan skema dan kemudian membuat properti baru untuk setiap rilis berikutnya; misalnya PKEY_GroupName_PropertyNameV2, PKEY_GroupName_PropertyNameV3, dan sebagainya. Kami tidak menyarankan untuk membuat properti baru dengan cara ini, karena beberapa kolom asing dapat memengaruhi performa sistem.

Dokumentasi Sistem Properti Windows

Sisa dokumentasi ini berisi bagian berikut:

Sumber Daya Tambahan

Panduan Pengembang Sistem Properti Windows

Referensi Sistem Properti

Sampel Kode Sistem Properti