PropVariantToBuffer 函数 (propvarutil.h)
从类型为 VT_VECTOR 的 PROPVARIANT 结构中提取缓冲区值 |VT_UI1或VT_ARRRAY |VT_UI1。
语法
PSSTDAPI PropVariantToBuffer(
[in] REFPROPVARIANT propvar,
[out] void *pv,
[in] UINT cb
);
参数
[in] propvar
类型: REFPROPVARIANT
源 PROPVARIANT 结构。
[out] pv
类型: VOID*
指向长度 为 cb 字节的缓冲区的指针。 当此函数返回时,包含提取的缓冲区值的第一 个 cb 字节。
[in] cb
类型: UINT
缓冲区长度(以字节为单位)。
返回值
类型: HRESULT
此函数可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
如果成功,则为 ;否则为错误值。 |
|
PROPVARIANT 的类型不正确。 |
|
PROPVARIANT 值的字节少于 cb 字节。 |
注解
此函数用于调用应用程序要求PROPVARIANT 保存缓冲区值的位置。 调用应用程序应在调用此函数之前检查该值具有预期的长度。
如果源 PROPVARIANT 具有类型VT_VECTOR |VT_UI1或VT_ARRAY |VT_UI1,此函数从 值中提取第 一个 cb 字节,并将其放置在 pv 指向的缓冲区中。 如果该值的字节少于 cb 字节,则 PropVariantToBuffer 将失败,并且不会修改缓冲区。 如果值超过 cb 字节,则 PropVariantToBuffer 成功并截断该值。
示例
以下示例将作为更大的程序的一部分包含,演示如何使用 PropVariantToBuffer 访问已存储在 PROPVARIANT 中的结构。
// IPropertyStore *ppropstore;
// Assume variable ppropstore is initialized and valid
PROPVARIANT propvar = {0};
HRESULT hr = ppropstore->GetValue(PKEY_FindData, &propvar);
if (SUCCEEDED(hr))
{
// PKEY_FindData is expected to produce a VT_VECTOR | VT_UI1 with sizeof(WIN32_FIND_DATAW) bytes
// We need to verify that the value length is acceptable before calling PropVariantToBuffer
hr = E_UNEXPECTED;
if (PropVariantGetElementCount(propvar) == sizeof(WIN32_FIND_DATAW))
{
WIN32_FIND_DATAW wfd;
hr = PropVariantToBuffer(propvar, &wfd, sizeof(wfd));
if (SUCCEEDED(hr))
{
// wfd is now initialized
}
}
PropVariantClear(&propvar);
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP SP2、Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 SP1 [仅限桌面应用] |
目标平台 | Windows |
标头 | propvarutil.h |
Library | Propsys.lib |
DLL | Propsys.dll (6.0 或更高版本) |
可再发行组件 | Windows 桌面搜索 (WDS) 3.0 |