创建自定义属性

Windows Vista 和更高版本的属性系统中使用的属性在属性架构中声明。 这些属性架构在 XML 文件中定义,并描述属性的各个方面,包括其类型 (包括有关其基元类型的信息,以及它是否为多值) 、如何在 Windows UI 中显示它、 (用户友好的编辑字符串) 的标签类型以及如何在搜索存储中缓存以便更快地访问。 属性由其规范名称或其属性键 (PKEY) 标识。

规范名称是属性的读者友好名称,使用类似于 Microsoft .NET 中使用的命名空间约定。 对于系统定义的属性 (Windows) 中包含的属性,约定为 System.GroupName.PropertyName。 请注意,在这些名称中使用 Pascal 大小写方案,它将每个单词开头的字母大写。 规范名称用于各种位置,包括属性缓存中的属性列表和列名称。 因此,它们用于结构化查询语言 (SQL) 查询来检索属性值。

PKEY 是一对由 GUID 和 DWORD 组成的值,分别称为 formatIDpropID 。 它由 PROPERTYKEY 结构表示。 大多数属性系统 API 都接受这些属性键。 Windows 软件开发工具包 (SDK) 包含头文件 Propkey.h,其中包含每个 System 属性键的宏定义,约定为 PKEY_GroupName_PropertyName。 例如, PKEY_Photo_DateTaken 是规范名称 System.Photo.DateTaken为 的属性的属性键。 属性值以 PROPVARIANT 结构的形式存储,这是 OLE VARIANT 类型的扩展。

本部分包含以下主题,这是创建自定义属性不可或缺的一部分:

注意

由于索引器在使用属性系统的架构时可能遇到潜在困难,因此在架构的第一个版本时,必须谨慎且有策略地定义属性。 注册架构后,对属性 (类型、列宽、可索引) 的任何更改都不会反映在数据库中。 在系统上注册一次架构后,要识别这些更改的唯一方法是重新生成索引,然后注册新架构,或者注册架构,然后为每个后续版本创建新属性;例如 PKEY_GroupName_PropertyNameV2PKEY_GroupName_PropertyNameV3等) 。 不建议以这种方式创建新属性,因为多个无关列可能会影响系统性能。

 

实现属性处理程序

属性说明架构