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


Функция PSGetNamedPropertyFromPropertyStorage (propsys.h)

Возвращает значение из сериализованного хранилища свойств по имени свойства.

Синтаксис

PSSTDAPI PSGetNamedPropertyFromPropertyStorage(
  [in]  PCUSERIALIZEDPROPSTORAGE psps,
  [in]  DWORD                    cb,
  [in]  LPCWSTR                  pszName,
  [out] PROPVARIANT              *ppropvar
);

Параметры

[in] psps

Тип: PCUSERIALIZEDPROPSTORAGE

Указатель на выделенный буфер, содержащий сериализованные свойства. Вызовите метод IPersistSerializedPropStorage::GetPropertyStorage , чтобы получить буфер.

[in] cb

Тип: DWORD

Размер (в байтах) буфера USERIALIZESPROPSTORAGE, на который указывает psps.

[in] pszName

Тип: LPCWSTR

Указатель на строку Юникода, завершающуюся null, которая содержит имя свойства.

[out] ppropvar

Тип: PROPVARIANT*

При возврате этой функции содержит запрошенное значение.

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

Тип: PSSTDAPI

Возвращает S_OK в случае успешного выполнения или значение ошибки в противном случае.

Комментарии

Эта функция предназначена для вызова, если вызывающее приложение уже имеет хранилище сериализованных свойств и требует не более нескольких свойств из хранилища. Если требуется извлечь много свойств, производительность можно повысить, создав хранилище свойств памяти путем вызова PSCreateMemoryPropertyStore, инициализации хранилища свойств путем вызова метода IPersistSerializedPropStorage::SetPropertyStorage и использования INamedPropertyStore или IPropertyStore для получения свойств.

Обратите внимание, что PSGetNamedPropertyFromPropertyStorage работает только с сериализованными буферами, созданными системной реализацией IPersistSerializedPropStorage. Сначала необходимо получить хранилище свойств памяти, вызвав PSCreateMemoryPropertyStore; это хранилище может затем создать сериализованный буфер с помощью интерфейса IPersistSerializedPropStorage .

Хотя SERIALIZEDPROPSTORAGE — это непрозрачная сериализованная структура данных, формат которой может измениться в будущем, более ранние форматы будут поддерживаться в последующих версиях Windows. Так как формат непрозрачный, приложения должны использовать поддерживаемые API хранилища свойств для доступа к сериализованному буферу и управления им (см. статьи IPersistSerializedPropStorage и PSGetPropertyFromPropertyStorage).

Примеры

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

// SERIALIZEDPROPSTORAGE *pStorage;
// DWORD cbStorage;
// Assume the variables pStorage and cbStorage are initialized and valid.  
PROPVARIANT propvar;

HRESULT hr = PSGetNamedPropertyFromPropertyStorage(pStorage, cb, L"MyProperty", &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

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

PSGetPropertyFromPropertyStorage