Compartilhar via


Função PropVariantToBSTR (propvarutil.h)

Extrai o valor da propriedade BSTR de uma estrutura PROPVARIANT .

Sintaxe

PSSTDAPI PropVariantToBSTR(
  [in]  REFPROPVARIANT propvar,
  [out] BSTR           *pbstrOut
);

Parâmetros

[in] propvar

Tipo: REFPROPVARIANT

Referência a uma estrutura PROPVARIANT de origem .

[out] pbstrOut

Tipo: BSTR*

Ponteiro para o valor da propriedade extraída, se houver; caso contrário, contém uma cadeia de caracteres vazia.

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 cadeia de caracteres.

Se o PROPVARIANT de origem tiver tipo VT_BSTR ou VT_LPWSTR, essa função extrairá a cadeia de caracteres como um valor BSTR . Caso contrário, ele tentará converter o valor na estrutura PROPVARIANT em uma cadeia de caracteres. Se uma conversão não for possível, PropVariantToBSTR retornará um código de falha e definirá pbstrOut como NULL. Consulte PropVariantChangeType para obter uma lista de conversões possíveis.

VT_EMPTY é convertido com êxito em um BSTR alocado contendo "".

O aplicativo de chamada é responsável por usar SysFreeString para liberar o BSTR apontado por pbstrOut quando ele não é mais necessário.

Além das conversões fornecidas por PropVariantChangeType, os casos especiais a seguir se aplicam a PropVariantToBSTR.

  • PROPVARIANTs com valor de vetor são convertidos em cadeias de caracteres separando cada elemento com "; ". Por exemplo, PropVariantToBSTR converte um vetor de 3 inteiros, {3, 1, 4}, na cadeia de caracteres "3; 1; 4". O ponto e vírgula é independente da localidade atual.
  • VT_BLOB, VT_STREAM, VT_STREAMED_OBJECT e valores VT_UNKNOWN são convertidos em cadeias de caracteres por meio de uma codificação sem suporte. Não é possível decodificar cadeias de caracteres criadas dessa maneira e o formato pode mudar no futuro.

Exemplos

O exemplo a seguir, a ser incluído como parte de um programa maior, demonstra como usar PropVariantToBSTR para acessar um valor de cadeia de caracteres em um PROPVARIANT.

// IPropertyStore *ppropstore;
// Assume the variable ppropstore is initialized and valid.
PROPVARIANT propvar = {0};

HRESULT hr = ppropstore->GetValue(PKEY_Title, &propvar);

if (SUCCEEDED(hr))
{
    // PKEY_Title is expected to produce a VT_LPWSTR or VT_EMPTY value.
    // PropVariantToBSTR will convert VT_EMPTY to "".
    BSTR bstrTitle;
    
    hr = PropVariantToBSTR(propvar, &bstrTitle);
    
    if (SUCCEEDED(hr))
    {
        // bstrTitle is now valid.
    }
    else
    {
        // bstrTitle is always NULL.
    }
    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

InitPropVariantFromString

PropVariantGetStringElem

PropVariantToString

PropVariantToStringWithDefault