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

psps 指向的 USERIALIZESPROPSTORAGE 缓冲区的大小(以字节为单位)。

[in] pszName

类型: LPCWSTR

指向包含属性名称的以 null 结尾的 Unicode 字符串的指针。

[out] ppropvar

类型: PROPVARIANT*

当此函数返回时,包含请求的值。

返回值

类型: PSSTDAPI

如果成功,则返回 S_OK ,否则返回错误值。

注解

如果调用应用程序已具有序列化属性存储,并且从存储中不需要多个属性,则调用此函数。 如果需要检索许多属性,可以通过调用 PSCreateMemoryPropertyStore 创建内存属性存储、通过调用 IPersistSerializedPropStorage::SetPropertyStorage 初始化属性存储以及使用 INamedPropertyStoreIPropertyStore 检索属性来增强性能。

请注意, PSGetNamedPropertyFromPropertyStorage 仅适用于 IPersistSerializedPropStorage 的系统实现创建的序列化缓冲区。 必须先通过调用 PSCreateMemoryPropertyStore 获取内存属性存储;然后,该存储可以使用 IPersistSerializedPropStorage 接口创建序列化缓冲区。

尽管 SERIALIZEDPROPSTORAGE 是一种不透明的序列化数据结构,其格式将来可能会更改,但早期格式将在后续版本的 Windows 上受支持。 由于格式不透明,因此应用程序应使用支持的属性存储 API 访问和操作序列化缓冲区, (请参阅 IPersistSerializedPropStoragePSGetPropertyFromPropertyStorage) 。

示例

以下示例将作为更大程序的一部分包含,演示如何使用 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 SP2、Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 SP1 [仅限桌面应用]
目标平台 Windows
标头 propsys.h
Library Propsys.lib
DLL Propsys.dll (版本 6.0 或更高版本)
可再发行组件 Windows 桌面搜索 (WDS) 3.0

另请参阅

PSGetPropertyFromPropertyStorage