Функция PSGetPropertyFromPropertyStorage (propsys.h)
Возвращает значение свойства, хранящегося в сериализованном хранилище свойств.
Синтаксис
PSSTDAPI PSGetPropertyFromPropertyStorage(
[in] PCUSERIALIZEDPROPSTORAGE psps,
[in] DWORD cb,
[in] REFPROPERTYKEY rpkey,
[out] PROPVARIANT *ppropvar
);
Параметры
[in] psps
Тип: PCUSERIALIZEDPROPSTORAGE
Указатель на выделенный буфер, содержащий сериализованные свойства. Этот буфер получается путем вызова метода IPersistSerializedPropStorage::GetPropertyStorage.
[in] cb
Тип: DWORD
Размер (в байтах) буфера USERIALIZESPROPSTORAGE , на который указывает psps.
[in] rpkey
Тип: REFPROPERTYKEY
Ссылка на PROPERTYKEY , идентифицирующая свойство, для которого требуется получить значение.
[out] ppropvar
Тип: PROPVARIANT**
При возврате этой функцией содержит запрошенное значение.
Возвращаемое значение
Тип: PSSTDAPI
Возвращает S_OK в случае успешного выполнения или значение ошибки в противном случае.
Комментарии
Эта функция предназначена для вызова, если вызывающее приложение уже имеет сериализованное хранилище свойств и требует не более нескольких свойств из хранилища. Если требуется получить много свойств, производительность можно повысить, создав хранилище свойств памяти с помощью PSCreateMemoryPropertyStore, инициализировав хранилище свойств путем вызова метода IPersistSerializedPropStorage::SetPropertyStorage и используя IPropertyStore для получения свойств.
Обратите внимание, что PSGetPropertyFromPropertyStorage работает только с сериализованными буферами, созданными системной реализацией IPersistSerializedPropStorage. Сначала необходимо получить хранилище свойств памяти, вызвав PSCreateMemoryPropertyStore. Затем это хранилище может создать сериализованный буфер с помощью интерфейса IPersistSerializedPropStorage .
Хотя SERIALIZEDPROPSTORAGE — это непрозрачная сериализованная структура данных, формат которой может измениться в будущем, более ранние форматы будут поддерживаться в последующих версиях Windows. Так как формат непрозрачный, приложения должны использовать поддерживаемые API хранилища свойств для доступа к сериализованному буферу и управления им (см. раздел IPersistSerializedPropStorage).
Примеры
В следующем примере, который будет включен в более крупную программу, показано, как использовать PSGetPropertyFromPropertyStorage для чтения значения из сериализованного хранилища свойств.
// SERIALIZEDPROPSTORAGE *pStorage;
// DWORD cbStorage;
// Assume the variables pStorage and cbStorage are initialized and valid.
PROPVARIANT propvar;
HRESULT hr = PSGetPropertyFromPropertyStorage(pStorage, cb, PKEY_Rating, &propvar);
if (SUCCEEDED(hr))
{
// propvar is now valid.
PropVariantClear(&propvar);
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP с пакетом обновления 2 (SP2), Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 с пакетом обновления 1 (SP1) [только классические приложения] |
Целевая платформа | Windows |
Header | propsys.h |
Библиотека | Propsys.lib |
DLL | Propsys.dll (версия 6.0 или более поздняя) |
Распространяемые компоненты | Windows Desktop Search (WDS) 3.0 |