Compartilhar via


Função PropVariantToDoubleVectorAlloc (propvarutil.h)

Extrai dados de uma estrutura PROPVARIANT em um vetor duplo recém-alocado.

Sintaxe

PSSTDAPI PropVariantToDoubleVectorAlloc(
  [in]  REFPROPVARIANT propvar,
  [out] DOUBLE         **pprgn,
  [out] ULONG          *pcElem
);

Parâmetros

[in] propvar

Tipo: REFPROPVARIANT

Referência a uma estrutura PROPVARIANT de origem .

[out] pprgn

Tipo: DOUBLE**

Quando essa função retorna, contém um ponteiro para um vetor de valores duplos extraídos da estrutura PROPVARIANT de origem.

[out] pcElem

Tipo: ULONG*

Quando essa função retorna, contém a contagem de elementos duplos extraídos da estrutura PROPVARIANT de origem.

Valor retornado

Tipo: HRESULT

Se essa função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

Comentários

Essa função auxiliar é usada em locais em que o aplicativo de chamada espera que um PROPVARIANT mantenha um valor de vetor duplo.

Se o PROPVARIANT de origem tiver o tipo VT_VECTOR | VT_R8 ou VT_ARRAY | VT_R8, essa função extrai um vetor de valores duplos em um vetor recém-alocado de valores DOUBLE. O aplicativo de chamada é responsável por usar CoTaskMemFree para liberar o vetor apontado por pprgn quando ele não é mais necessário.

Exemplos

O exemplo a seguir, a ser incluído como parte de um programa maior, demonstra como usar PropVariantToDoubleVector para acessar um valor de vetor duplo em um 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);
}

Requisitos

   
Cliente mínimo com suporte Windows XP com SP2, Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 com SP1 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho propvarutil.h
Biblioteca Propsys.lib
DLL Propsys.dll (versão 6.0 ou posterior)
Redistribuível Pesquisa da Área de Trabalho do Windows (WDS) 3.0

Confira também

InitPropVariantFromDoubleVector

PropVariantGetDoubleElem

PropVariantToDouble

PropVariantToDoubleVector

VariantToDoubleArray