PropVariantToDoubleVectorAlloc 関数 (propvarutil.h)
PROPVARIANT 構造体から、新しく割り当てられた二重ベクトルにデータを抽出します。
構文
PSSTDAPI PropVariantToDoubleVectorAlloc(
[in] REFPROPVARIANT propvar,
[out] DOUBLE **pprgn,
[out] ULONG *pcElem
);
パラメーター
[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 値のベクトルを 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 |