Поделиться через


Метод 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. Обычно это IPropertyStore или IPropertyStoreCapabilities.

Возвращаемое значение

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Этот метод используется для получения хранилища свойств только для чтения, которое агрегирует свойства, собранные из всех элементов в массиве элементов оболочки.

Если в массиве элементов оболочки несколько элементов, то результирующее хранилище свойств будет агрегировать значения из каждого элемента в соответствии с набором правил, определенных каждым свойством. Значения, прочитанные из хранилища свойств, будут приведены к канонической форме перед агрегированием, как описано в coerceToCanonicalValue. Выходные данные вызова IPropertyStore::GetValue вычисляются следующим образом:

  • Однозначные свойства следуют правилу, заданному строкой типа агрегирования в схеме описания свойства.
    • Если тип агрегирования — DateRange, а тип свойства — filetime, возвращает VT_VECTOR | VT_FILETIME двух значений или значение VT_FILETIME, если значения совпадают.
    • Если агрегатный тип имеет значение First, возвращает первое непустое значение.
    • Если тип агрегирования — Sum, возвращается сумма.
    • Если агрегирование имеет тип "Average", возвращает среднее значение всех непустых значений.
    • Если агрегирование имеет тип "Минимум", возвращает минимальное значение.
    • Если тип агрегирования — Union, а тип свойства — строка, возвращает VT_VECTOR | VT_LPWSTR, содержащий объединение значений. Порядок значений не указан.
    • Если тип агрегирования не указан, несовместим или "По умолчанию", возвращает одно значение, если оно идентично для всех элементов в массиве, или специальное значение, указывающее, что значения отличаются между некоторыми элементами. Специальным значением является VT_VECTOR | VT_LPWSTR, содержащая две строки: "Multiple" и "Values". Вызывающие приложения должны проверка для этого специального значения, проверив VT_VECTOR | VT_LPWSTR, если GetTypeFlags указывает, что свойство имеет однозначное значение.
  • Многозначные строковые свойства возвращают пересечение строк. Заказ не указан.
Вызовы IsPropertyWritable будут возвращать S_FALSE только в том случае, если все элементы имеют обработчики свойств, реализующие IPropertyStoreCapabilities , и все хранилища свойств указывают, что они не поддерживают запись свойства.

Вызов приложений может достичь других способов агрегирования, напрямую обращаюсь к отдельным элементам оболочки и их хранилищам свойств. См. статьи IPropertyStore::GetCount, IPropertyStore::GetAt и GetPropertyStore.

Запись в массив элементов оболочки поддерживается через API IFileOperation .

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header shobjidl_core.h (включая Shobjidl.h)