PropVariantToDoubleVectorAlloc 函数 (propvarutil.h)
将数据从 PROPVARIANT 结构提取到新分配的双向量中。
语法
PSSTDAPI PropVariantToDoubleVectorAlloc(
[in] REFPROPVARIANT propvar,
[out] DOUBLE **pprgn,
[out] ULONG *pcElem
);
parameters
[in] propvar
类型: REFPROPVARIANT
对源 PROPVARIANT 结构的引用。
[out] pprgn
类型: DOUBLE**
此函数返回时,包含指向从源 PROPVARIANT 结构中提取的双值向量的指针。
[out] pcElem
类型: ULONG*
当此函数返回时,包含从源 PROPVARIANT 结构中提取的双元素计数。
返回值
类型: HRESULT
如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
此帮助程序函数用于调用应用程序要求 PROPVARIANT 保存双向量值的位置。
如果源 PROPVARIANT 的类型VT_VECTOR |VT_R8或VT_ARRAY |VT_R8,此函数将双精度值的向量提取到新分配的 DOUBLE 值向量中。 调用应用程序负责在不再需要时使用 CoTaskMemFree 释放 pprgn 指向的向量。
示例
以下示例将作为较大程序的一部分包含,演示如何使用 PropVariantToDoubleVector 访问 PROPVARIANT 中的双向量值。
// IPropertyStore *ppropstore;
// Assume variable ppropstore is initialized and valid
PROPVARIANT propvar = {0};
HRESULT hr = ppropstore->GetValue(PKEY_GPS_DestLongitude, &propvar);
if (SUCCEEDED(hr))
{
// PKEY_GPS_DestLongitude is expected to produce a VT_VECTOR | VT_R8 with three values, or VT_EMPTY
// PropVariantToDoubleVectorAlloc will return an error for VT_EMPTY
DOUBLE *rgLongitude;
ULONG cElem;
hr = PropVariantToDoubleVectorAlloc(propvar, &rgLongitude, &cElem);
if (SUCCEEDED(hr))
{
if (cElem == 3)
{
// rgLongitude contains 3 doubles representing the degrees, minutes, and seconds of longitude
}
CoTaskMemFree(rgLongitude);
}
else
{
// propvar either is VT_EMPTY, or contains something other than a vector of doubles
}
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 |