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