创建自定义属性
Windows Vista 和更高版本的属性系统中使用的属性在属性架构中声明。 这些属性架构在 XML 文件中定义,并描述属性的各个方面,包括其类型 (包括有关其基元类型的信息,以及它是否为多值) 、如何在 Windows UI 中显示它、 (用户友好的编辑字符串) 的标签类型以及如何在搜索存储中缓存以便更快地访问。 属性由其规范名称或其属性键 (PKEY) 标识。
规范名称是属性的读者友好名称,使用类似于 Microsoft .NET 中使用的命名空间约定。 对于系统定义的属性 (Windows) 中包含的属性,约定为 System.GroupName.PropertyName
。 请注意,在这些名称中使用 Pascal 大小写方案,它将每个单词开头的字母大写。 规范名称用于各种位置,包括属性缓存中的属性列表和列名称。 因此,它们用于结构化查询语言 (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
等) 。 不建议以这种方式创建新属性,因为多个无关列可能会影响系统性能。
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈