Özellik Sistemine Genel Bakış
Windows Özellik Sistemi, Kabuk öğeleri hakkında meta verileri tekdüzen bir şekilde ifade etmenin tekdüzen bir yolunu sağlayan genişletilebilir bir veri tanımları okuma/yazma sistemidir. Windows Vista ve sonraki sürümlerde Windows Özellik sistemi, Kabuk öğeleri için meta verileri depolamanıza ve almanıza olanak tanır. Kabuk öğesi, dosya, klasör, e-posta veya kişi gibi tek bir içerik parçasıdır. Özellik, bir Shell öğesiyle ilişkilendirilmiş tek bir meta veri parçasıdır. Özellik değerleri PROPVARIANT yapısı olarak ifade edilir.
Bu konu aşağıdaki gibi düzenlenmiştir:
- Giriş
- Geliştirme Senaryoları
- Özellikleri ve Windows Search
- Uygulayıcılara Notu
- Windows Özellik Sistemi Belgeleri
- Ek Kaynaklar
- İlgili konular
Giriş
Özellikler kurallı adlarıyla (System.Document.LastAuthor
gibi) ve özellik anahtarıyla (PKEY_Document_LastAuthor
gibi) benzersiz olarak tanımlanır. Özellik anahtarı (PKEY), ad-değer çiftinin PKEY/PROPVARIANT veya dize/PROPVARIANT içeren ad bölümüdür; burada dize PKEY'nin kurallı adıdır (örneğin, System.Document.LastAuthor
). PKEY, özellik sistemine özellik hakkında bilmesi gereken her şeyi bildiren bir tanımdır; değer ise özelliğin gerçek bir örneğidir. PKEY dahili olarak bir formatID ve propID içerir.
Tek bir özellik aşağıdaki üç parçadan oluşur:
-
System.Music.Artist
gibi kurallı bir ad. - .propdesc XML dosya biçiminde belirtilen ve IPropertyDescriptionaracılığıyla program aracılığıyla ifade edilen şema açıklaması.
- Bir şarkıcının adı gibi bir değer.
Şema açıklaması özellik hakkında özellik adı, veri türü, kısıtlamalar, özelliğin görünümlerle ve arama sistemiyle nasıl etkileşime geçtiğini gösteren bilgiler gibi bilgilerden oluşur. Ad ve şema açıklaması genel olarak tanımlanır ve tüm öğeler ve türler için aynıdır. Değer tek bir öğeye özgüdür. Yani, System.Music.Artist
özelliği her zaman çok değerli bir dize olarak tanımlanır, ancak her öğe için farklı bir değere (veya hiç değere sahip olmayabilir) sahip olabilir.
Özellik işleyicisi, bir dosyada depolanan verileri Tarafından tanınan ve Windows Gezgini, Windows Search ve diğer uygulamalar tarafından erişilebilen yapılandırılmış bir şemaya çevirir. Bu sistemler daha sonra dosyaya ve dosyadan özellik yazmak ve okumak için özellik işleyicisi ile etkileşim kurabilir. Çevrilen veriler program aracılığıyla kullanıma sunulur ve ayrıntılar görünümü, bilgi ipuçları, ayrıntılar bölmesi, özellik sayfaları vb. gibi çeşitli bağlamlarda Windows Gezgini aracılığıyla kullanıcıya gösterilir. Her özellik işleyicisi, dosya adı uzantısı tarafından tanımlanan belirli bir dosya türüyle ilişkilendirilir. Geliştiriciler, .jpg veya .pnggibi dosya türlerinin yerel biçimini üreten ve kullanan bir özellik işleyicisi uygulamalı ya da MS-PROPSTORE ikili biçimini üreten ve kullanan In-Memory Özellik Deposu'nı kullanmalıdır.
Windows Özellik Sistemi, tek tek dosya biçimlerinden soyutlama düzeyi sağlayan bir soyut veri modeli oluşturur. Windows Özellik Sistemi tarafından sağlanan soyut veri modeli, kabuk öğesiyle ilişkili genişletilebilir bir adlandırılmış değer kümesini okumak ve yazmak için bir yöntemdir. Değer ifadesi esnektir, birçok veri türünü destekler ve rastgele veriler (VT_BLOB) ve nesnelerin bir değer olarak ifade edilmesini sağlayarak genişletilebilir.
Soyutlama nedeniyle, herhangi bir öğenin özniteliklerini veya meta verilerini sorgulayabilirsiniz. Özetlenebilen öğelere örnek olarak Microsoft Office belgeleri, ID3 etiketleri, AutoCAD ve diğer üçüncü taraf özel yazılımları verilebilir. Benzer şekilde, .jpeg bir dosyanız varsa, görüntünün boyutlarını keşfetmek için dosyanın baytlarını okumak için .jpeg ve EXIF codec'lerini kullanabilirsiniz. Bunun yerine bir .png dosyanız varsa, bunu yapmak için farklı bir codec bileşenine ve farklı bir koda ihtiyacınız vardır. Windows Özellik Sistemi'nin kullanılması bu tür bir sorunu önler. Yeni bir dosya türü uygularsanız, Windows Özellik Sistemi tarafından sunulan tekdüzen soyutlama özelliğini takıp meta verilerinizin nasıl kullanılabilir hale getirileceğini belirtme seçeneğiniz vardır. Bu nedenlerden dolayı, Windows Özellik Sistemi tarafından sağlanan ortak platformun kullanılması her zaman tercih edilir.
Geliştirme Senaryoları
Özellikler üreticiler ve tüketiciler tarafından ifade edilir. Bu bağlamda, üreticiler Windows Özellik Sistemi'ndeki özelliklerin mucididir ve tüketiciler bu sistemden özellik bilgilerini kullanan uygulamalardır (ve geliştiricileri). Windows Özellik Sistemi'ndeki kullanımlar ve katılımcılar aşağıdaki tabloda tanımlanmıştır.
Windows Özellik Sistemi'nin kullanımı | Katılımcı |
---|---|
Özellik açıklamalarının genişletilebilir bir kayıt defteri, bellek içi özellik deposu uygulaması ve özellik işleyicilerine bağlama, türleri dönüştürme ve özellik depolarını serileştirmeye yönelik hizmetler sağlayan yapı taşı. | Tüketici |
Özellikleri soyut bir şekilde okumak ve yazmak isteyen uygulamalar. | Tüketici |
Özel özellik şemaları tanımlayarak ve kendi özellik işleyicilerini geliştirerek özellik sistemi için yeni özellikler tanımlayan özellik envanterleri. | Yapımcı |
Özel dosya biçimlerinde depolanan özelliklere erişimi etkinleştirmek isteyen dosya biçimi sahipleri. | Yapımcı |
Tüketiciler mevcut özellikleri, şemaları ve özellik işleyicilerini tüketir. Tüketim için kullanılabilen özellikler, desteklenen dosya türleri için özellik işleyicilerinden okuma/yazma özelliklerini içerir ve bazı özel özellikler de içerebilir. Kullanılabilir şemalar en azından sistem şemasını ve bazen de diğerlerini içerir. Tüketici, öğelerin hangi klasörlerde depolandığına bakılmaksızın meta verileri kullanmak ve sanatçıyı temel alan bir görünüm oluşturmak için bir uygulama oluşturabilir. Dosya klasörü hiyerarşisi ilgisizdir. Örneğin, belirli bir şarkıcının tüm şarkı öğelerini, bu öğelerin konumuyla ilgilenmeden belirtebilirsiniz. Bu karmaşık, uçtan uca senaryo Windows Özellik Sistemi ile sınırlı değildir, ancak dizin oluşturma ve arama klasörleri gibi birkaç farklı bileşeni içerir.
Özellik mucitleri veya üçüncü taraf geliştiriciler, Windows Özellik Sistemi'ndeki üreticilerdir. Yeni bir özellik tanımlamaya hazırlanırken, önce Windows'un tanımladığı özellik kümesini inceleyin. Gereksinimlerinizi, gerekli kullanımınızla eşleşen tür ve semantiği karşılayan bir tane bulursanız, bu özelliği kullanın ve yeni bir tane icat etmeyin. Yeni bir özel özellik tanımlıyorsanız, bu özelliği kullanmak isteyebilecek diğer geliştiricilerle anlaşma elde etmeyi ve bu özelliğin kullanıcı topluluğuna katılabilmeleri için bu sözleşmenin sonucunu yayımlamayı deneyin.
Üreticiler Windows Gezgini işlevselliğinden yararlanabilir. Örneğin, yeni bir görüntü biçimi yazıyorsanız ve özellik işleyicisi uyguluyorsanız, yeni dosya biçiminiz Windows Gezgini'nde kullanılabilir hale gelir. Kullanıcılar daha sonra fotoğraflarını etiketleyebilir ve fotoğraf koleksiyonlarını Windows Özellik Sistemi'ndeki herhangi bir özelliğe göre özetleyebilir. Aslında, Shell'in özelliklerle yaptığı her şey, üçüncü taraf geliştiriciler kendi uygulamalarında yapabilir. Bu gruplandırma, sıralama, sorgulama ve tam özellikleri görüntülemeyi içerir. Windows Gezgini'nin sağladığı kullanıcı deneyimi, genel kullanıma açık API'lere sahip üçüncü taraflar tarafından büyük ölçüde uygulanabilir. Windows Gezgini bu API'ler kullanılarak değiştirilebilir veya genişletilebilir.
Shell veri modelini kullanan bir uygulamanın bakış açısından, Windows özellik sisteminin kullanımını içeren çok çeşitli senaryolar vardır. Medya yönetimi uygulamaları öne çıkan bir örnek. Çekirdek özellik sistemi senaryoları, bir fotoğrafın anahtar sözcük özelliğini okuma veya datetaken özelliğini ayarlama gibi senaryoları içerir. Windows Özellik Sistemi'nin sağladığı ancak çalışması için diğer birçok bileşenin gerekliliği olan uçtan uca tümleştirme senaryolarına, tüm resimleri gösterme veya bir anahtar kelime içeren belge bulma gibi örnekler verilebilir.
Özellikler ve Windows Search
Özellikler, Windows Search ve dizin oluşturma ile etkileşim kurarken hem üreticilere hem de tüketicilere hizmet eder. Windows Search, Windows Search Hizmeti'nin (WSS) uygulanmasında kullanılan özellik değerlerinin önbelleğine sahiptir. Bu özellik değerleri, Windows Search OLE DB sağlayıcısı kullanılarak veya arama sonuçları ve sorgu tabanlı görünümlerdeki öğeleri temsil eden ISearchFolderItemFactoryaracılığıyla program aracılığıyla sorgulanabilir. Ardından Windows Search, Word belgesi gibi bir öğe dizine eklendiğinde filtre işleyicileri veya özellik işleyicileri tarafından yayılan özellikleri toplar ve depolar. Dizin yeniden oluşturulduğunda bu saklama alanı kaldırılır ve yeniden oluşturulur.
Not
Bir şemayı yeniden kaydettiğinizde, önceden tanımlanmış özelliklerin özniteliklerinde yapılan değişiklikler dizin oluşturucu tarafından dikkate alınamayabilir. Çözüm, dizini yeniden oluşturmak veya eskilerini güncelleştirmek yerine değişiklikleri yansıtan yeni özellikler eklemektir (önerilmez). Daha fazla bilgi için bu konunun devamında yer alan Uygulayıcılar Not bölümüne bakın.
Örneğin, bir medya uygulaması oluşturan bir geliştirici, uygulamanın kullanıcılarına belirli bir sanatçının tüm kullanılabilir müziklerini göstermek ister. Uygulama kullanıcıya kullanılabilir sanatçıların listesini sağlar ve ardından kullanıcının seçtiği sanatçının tüm kullanılabilir müziklerinin listesini oluşturur. Ya da son kullanıcı ?artist:Beethoven? için bir sorgu yapmak ve arama sırasında kullanılabilir özelliklerin tam listesine maruz kalmak isteyebilir. Bu örnek, Kabuk ad alanı, özellik işleyicileri ve/veya aşağıdakilerden biri aracılığıyla dizini sorgulamayı içerir:
- Bir Shell veri kaynağı.
- Ole DB sağlayıcısı.
- Windows Gezgini'nde arama dosyasına giderek veya IShellFolder program aracılığıyla bağlayarak sorgu başlatmak için kullanılan Kayıtlı Arama dosyası (.search-ms).
Not
System.Kind
özelliği bu medya uygulaması senaryosuna katılmasa da, belirli bir kapsamdaki tüm .search-ms dosyalarını döndürecek bir sorgu oluşturmak için kullanılabilir.
Arama API'lerine erişmek ve Windows Search uygulamaları oluşturmak için tercih edilen yol bir Shell veri kaynağıdır. ISearchFolderItemFactory, Kabuk ad alanında diğer veri kaynakları üzerinde sorgu yürütebilen ve sonuçları numaralandırabilen, Kabuk tarafından sağlanan bir tür "sanal" veri kaynağı olan Search klasörü veri kaynağının örneklerini oluşturabilen bir bileşendir. Dizin oluşturucu kullanarak veya belirtilen kapsamlardaki öğeleri el ile numaralandırıp inceleyerek bunu yapabilir.
Üçüncü taraf geliştiriciler programlı sorgular aracılığıyla dizindeki verileri kullanan uygulamalar oluşturabilir ve özel dosya ve öğe türlerinin Windows Search tarafından dizine alınması için dizindeki verileri genişletebilir. Windows Gezgini'nde sorgu sonuçlarını göstermek istiyorsanız, önce dizini genişletmek için bir protokol işleyicisi oluşturmadan önce bir Shell veri kaynağı uygulamanız gerekir. Ancak, tüm sorgular program aracılığıyla (örneğin OLE DB aracılığıyla) ve Shell yerine uygulamanın kodu tarafından yorumlanacaksa, kabuk ad alanı yine de tercih edilir ancak gerekli değildir. Windows'un, veritabanlarındaki öğeler veya özel dosya türleri gibi dosya içeriği hakkında bilgi edinmesi için bir protokol işleyicisi gereklidir. Windows Search dosyanın adını ve özelliklerini dizine alabilir ancak Windows'un dosyanın içeriği hakkında hiçbir bilgisi yoktur. Sonuç olarak, bu tür öğeler Windows Kabuğu'nda dizine alınamaz veya kullanıma sunulmaz. Özel bir protokol işleyicisi uygulayarak bu öğeleri ortaya çıkarabilirsiniz. Başarmaya çalıştığınız geliştirici senaryosu tarafından tanımlanan işleyicilerin listesi için, geliştirme platformu olarak Windows Search 'de "İşleyicilere Genel Bakış" bölümüne bakın.
Not
Shell veri kaynağı bazen Shell ad alanı uzantısı olarak bilinir. Bir işleyici bazen Kabuk uzantısı veya Kabuk uzantısı işleyicisi olarak bilinir.
Uygulayıcılara Not
Özellik sisteminin şemasını kullanırken dizin oluşturucunun karşılaşabileceği olası zorluklar nedeniyle, şemanın ilk sürümü için öznitelikleri dikkatli ve stratejik bir şekilde tanımlamanız kritik önem taşır. Özniteliklerde yapılan değişiklikler (tür, sütun genişliği, dizinlenebilir olup olmadığı) bir şema kaydedildikten sonra veritabanına yansıtılmaz. Şema bir kez sisteme kaydedildikten sonra bu değişikliklerin tanınmasını sağlamanın tek yolu, dizini yeniden oluşturup yeni şemayı kaydetmek ya da şemayı kaydedip sonraki her sürüm için yeni bir özellik oluşturmaktır; örneğin, PKEY_GroupName_PropertyNameV2
, PKEY_GroupName_PropertyNameV3
vb. Birden çok fazla fazla sütun sistem performansını etkileyebileceğinden, bu şekilde yeni özellikler oluşturmanızı önermeyiz.
Windows Özellik Sistemi Belgeleri
Bu belgelerin geri kalanı aşağıdaki bölümleri içerir:
Windows Özellik Sistemi Geliştirici Kılavuzu
Windows Özellik Sistemi kullanılarak ana geliştirme senaryolarının nasıl uygulandığı ayrıntılı olarak açıklanır.
-
Windows Özellikleri, Özellik Açıklaması Şeması, Arabirimleri, İşlevler, Yapılarıve Sabitleri, Numaralandırmaları ve Bayraklar belgeleri.
-
Windows Özellik Sistemi'nin nasıl kullanılacağını gösteren örnekleri açıklar.
Ek Kaynaklar
- In-Memory Özellik Deposu'nu yeniden kullanma hakkında bilgi için bkz. Özellik İşleyicilerini Başlatma ve PSCreateMemoryPropertyStore.
- Microsoft Özellik Deposu İkili Dosya Biçimi belirtimi için bkz. [MS_PROPSTORE].
- Windows Search ile dizin oluşturma arasındaki ilişki ve dizini genişletme, Windows Search'teki aşağıdaki konularda açıklanmıştır:
- Windows Search için Filtre İşleyicileri Geliştirme
- Windows Search için Protokol İşleyicileri Geliştirme
- Windows Search için Özellik İşleyicileri Geliştirme
- Windows 7 veya güncelleştirilmiş Windows Vista SDK'sı indirmesi için bkz. Windows SDK.
İlgili konular