Compartilhar via


Função PropVariantToDoubleVector (propvarutil.h)

Extrai um vetor de duplos de uma estrutura PROPVARIANT .

Sintaxe

PSSTDAPI PropVariantToDoubleVector(
  [in]  REFPROPVARIANT propvar,
  [out] DOUBLE         *prgn,
  [in]  ULONG          crgn,
  [out] ULONG          *pcElem
);

Parâmetros

[in] propvar

Tipo: REFPROPVARIANT

Referência a uma estrutura PROPVARIANT de origem .

[out] prgn

Tipo: DOUBLE*

Aponta para um buffer que contém valores DOUBLE crgn . Quando essa função retorna, o buffer foi inicializado com elementos duplos pcElem extraídos da estrutura PROPVARIANT de origem.

[in] crgn

Tipo: ULONG

Tamanho em elementos do buffer apontado por prgn.

[out] pcElem

Tipo: ULONG*

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

Retornar valor

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 onde o aplicativo de chamada espera que um PROPVARIANT mantenha um valor de vetor duplo com um número fixo de elementos.

Se o PROPVARIANT de origem tiver o tipo VT_VECTOR | VT_R8 ou VT_ARRAY | VT_R8, essa função auxiliar extrai até valores duplos crgn e os coloca no buffer apontado por prgn. Se o PROPVARIANT contiver mais elementos do que caberá no buffer prgn , essa função retornará um erro e definirá pcElem como 0.

Exemplos

// 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
         // PropVariantToDoubleVector will return an error for VT_EMPTY
         DOUBLE rgLongitude[3];
         ULONG cElem;
         hr = PropVariantToDoubleVector(propvar, &rgLongitude, ARRAYSIZE(rgLongitude), &cElem);
         if (SUCCEEDED(hr))
         {
                 if (cElem == ARRAYSIZE(rgLongitude))
                 {
                          // rgLongitude contains 3 doubles representing the degrees, minutes, and seconds of longitude
                 }
                 else
                 {
                          // The first cElem doubles from propvar are stored in the first 3 elements of rgLongitude
         }
         else
         {
                 // propvar either is VT_EMPTY, or contains something other than a vector of 3 doubles
         }
         PropVariantClear(&propvar);
}

Requisitos

Requisito Valor
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

PropVariantToDoubleVectorAlloc

VariantToDoubleArray