建立自訂屬性
Windows Vista 和更新版本屬性系統中所使用的屬性會在屬性架構中宣告。 這些屬性架構是在 XML 檔案中定義,並描述屬性的各種層面,包括其類型(包括其基本類型的相關信息,以及它是否為多重值)、如何在 Windows UI 中顯示、要使用哪種標籤(使用者易記的編輯字串),以及如何在搜尋存放區中快取,以便更快速存取。 屬性是由其標準名稱或其屬性索引鍵 (PKEY) 來識別。
標準名稱是屬性的讀取器易記名稱,並使用類似於 Microsoft .NET 中使用的命名空間慣例。 針對系統定義的屬性(Windows 隨附的屬性),慣例為 System.GroupName.PropertyName
。 請注意,在每一個字開頭大寫字母的Pascal大小寫配置會用於這些名稱中。 標準名稱用於各種位置,包括屬性快取中的屬性清單和數據行名稱。 因此,它們會用於 結構化查詢語言 (SQL) (SQL) 查詢來擷取屬性值。
PKEY 是一組值,由 GUID 和 DWORD 組成,分別稱為 formatID 和 propID。 它是由 PROPERTYKEY 結構表示。 大部分的屬性系統 API 都接受這些屬性索引鍵。 Windows 軟體開發工具套件 (SDK) 包含標頭檔 Propkey.h,其中包含每個 System
屬性索引鍵的巨集定義,並具有 慣例 PKEY_GroupName_PropertyName
。 例如, PKEY_Photo_DateTaken
是具有標準名稱 System.Photo.DateTaken
之屬性的屬性索引鍵。 屬性值會以 PROPVARIANT 結構的形式儲存,這是 OLE VARIANT 類型的延伸。
本節包含下列主題,這是建立自定義屬性不可或缺的主題:
注意
由於索引器在取用屬性系統架構時可能會有的潛在困難,因此請務必謹慎且策略地為架構的第一個版本定義屬性。 屬性的任何變更(類型、數據行寬度、是否可編製索引)都不會在登錄架構之後反映在資料庫中。 在系統上註冊一次架構之後,才能辨識這些變更的唯一方法是重建索引,然後註冊新的架構,或註冊架構,然後為每個後續版本建立新的屬性:例如 PKEY_GroupName_PropertyNameV2
、 PKEY_GroupName_PropertyNameV3
等等。 我們不建議以此方式建立新的屬性,因為多個多餘的數據行可能會影響系統效能。
相關主題