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


Функция 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

См. также раздел

PSGetNamedPropertyFromPropertyStorage