IShellItemArray::GetPropertyStore 方法 (shobjidl_core.h)

获取属性存储。

语法

HRESULT GetPropertyStore(
  [in]  GETPROPERTYSTOREFLAGS flags,
  [in]  REFIID                riid,
  [out] void                  **ppv
);

参数

[in] flags

类型: GETPROPERTYSTOREFLAGS

GETPROPERTYSTOREFLAGS 常量之一。

[in] riid

类型: REFIID

要检索的对象类型的 IID。

[out] ppv

类型: void**

此方法返回时,包含 riid 中请求的接口指针。 这通常是 IPropertyStoreIPropertyStoreCapabilities

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

此方法用于获取只读属性存储,该存储聚合从 shell 项数组中的所有项收集的属性。

如果 shell 项数组中有多个项,则生成的属性存储将根据每个属性确定的一组规则聚合每个项的值。 从属性存储中读取的值将在聚合之前强制转换为规范形式,如 CoerceToCanonicalValue 中所述。 调用 IPropertyStore::GetValue 的输出计算如下:

  • 单个值属性遵循由属性说明架构中的 聚合类型 字符串指定的规则。
    • 如果聚合类型为“DateRange”,并且属性类型为 filetime,则返回VT_VECTOR |VT_FILETIME两个值,如果值相同,则为VT_FILETIME值。
    • 如果聚合类型为“First”,则返回第一个非空值。
    • 如果聚合类型为“Sum”,则返回总和。
    • 如果聚合类型为“Average”,则返回所有非空值的平均值。
    • 如果聚合类型为“Minimum”,则返回最小值。
    • 如果聚合类型为“Union”,并且属性类型为字符串,则返回VT_VECTOR |包含值并集的VT_LPWSTR。 值的顺序未指定。
    • 如果聚合类型未指定、不兼容或“Default”,则返回一个值(如果数组中的所有项都相同),或者返回一个用于指示某些项之间的值不同的特殊值。 特殊值是VT_VECTOR |包含两个字符串的VT_LPWSTR:“Multiple”和“Values”。 调用应用程序应通过检查VT_VECTOR来检查此特殊值 |VT_LPWSTR GetTypeFlags 是否指示 属性是单值属性。
  • 多值字符串属性返回其字符串的交集。 顺序未指定。
仅当所有项都具有实现 IPropertyStoreCapabilities 的属性处理程序,并且所有属性存储都表明它们不支持编写属性时,对 IsPropertyWritable 的调用才会返回S_FALSE。

调用应用程序可以通过直接访问单个 shell 项及其属性存储来实现其他聚合行为。 请参阅 IPropertyStore::GetCountIPropertyStore::GetAtGetPropertyStore

支持通过 IFileOperation API 写入 shell 项数组。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)