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
psp 指向的 USERIALIZESPROPSTORAGE 缓冲区的大小(以字节为单位)。
[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 SP2、Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 SP1 [仅限桌面应用] |
目标平台 | Windows |
标头 | propsys.h |
Library | Propsys.lib |
DLL | Propsys.dll (6.0 或更高版本) |
可再发行组件 | Windows 桌面搜索 (WDS) 3.0 |