Función PropVariantToString (propvarutil.h)
Extrae un valor de cadena de una estructura PROPVARIANT .
Sintaxis
PSSTDAPI PropVariantToString(
[in] REFPROPVARIANT propvar,
[out] PWSTR psz,
[in] UINT cch
);
Parámetros
[in] propvar
Tipo: REFPROPVARIANT
Referencia a una estructura PROPVARIANT de origen.
[out] psz
Tipo: PWSTR
Apunta a un búfer de cadena. Cuando se devuelve esta función, el búfer se inicializa con un valor de cadena Unicode terminada en NULL .
[in] cch
Tipo: UINT
Tamaño del búfer al que apunta psz, en caracteres.
Valor devuelto
Tipo: HRESULT
Esta función puede devolver uno de estos valores.
Código devuelto | Descripción |
---|---|
|
El valor se extrajo y el búfer de resultados finalizó NULL . |
|
Error en la operación de copia debido a un espacio de búfer insuficiente. El búfer de destino contiene una versión truncada terminada en null del resultado previsto. En situaciones en las que el truncamiento es aceptable, es posible que esto no se vea necesariamente como una condición de error. |
|
Error en la extracción por algún otro motivo. |
Comentarios
Esta función auxiliar se usa en lugares donde la aplicación que realiza la llamada espera que un PROPVARIANT contenga un valor de cadena. Por ejemplo, una aplicación que obtiene valores de un almacén de propiedades puede usarlo para extraer de forma segura un valor de cadena para las propiedades de cadena.
Si el PROPVARIANT de origen tiene el tipo VT_LPWSTR o VT_BSTR, esta función extrae la cadena y la coloca en el búfer proporcionado. De lo contrario, intenta convertir el valor en la estructura PROPVARIANT en una cadena. Si no es posible una conversión, PropVariantToString devolverá un código de error y establecerá psz en "\0". Consulte PropVariantChangeType para obtener una lista de las posibles conversiones. Tenga en cuenta que VT_EMPTY se convierte correctamente en "".
Además del valor NULL de terminación, se escriben como máximo caracteres cch-1 en el búfer al que apunta psz. Si el valor del PROPVARIANT de origen es más largo de lo que cabe en el búfer, se escribe una copia terminada EN NULL truncada de la cadena en el búfer y esta función devuelve STRSAFE_E_INSUFFICIENT_BUFFER. La cadena resultante siempre estará terminada en NULL .
Además de las conversiones proporcionadas por PropVariantChangeType, los siguientes casos especiales se aplican a PropVariantToString.
- Las PROPIEDADES PROPVARIANTcon valores vectoriales se convierten en cadenas separando cada elemento con "; ". Por ejemplo, PropVariantToString convierte un vector de 3 enteros, {3, 1, 4}, en la cadena "3; 1; 4". El punto y coma es independiente de la configuración regional actual.
- VT_BLOB, VT_STREAM, VT_STREAMED_OBJECT y VT_UNKNOWN valores se convierten en cadenas mediante una codificación no admitida. No es posible descodificar cadenas creadas de esta manera y el formato puede cambiar en el futuro.
Ejemplos
En el ejemplo siguiente, para incluirse como parte de un programa mayor, se muestra cómo usar PropVariantToString para tener acceso a un valor de cadena en un PROPVARIANT.
// IPropertyStore *ppropstore;
// Assume 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.
// PropVariantToString will convert VT_EMPTY to "".
// The application decided that it only needs the first 127 characters of the title, so the buffer
// has size 128 to account for the terminating NULL.
WCHAR szTitle[128];
hr = PropVariantToString(propvar, szTitle, ARRAYSIZE(szTitle));
if (SUCCEEDED(hr) || hr == STRSAFE_E_INSUFFICIENT_BUFFER)
{
// szTitle is now valid and contains up to 127 characters from propvar and a terminating NULL
}
else
{
// the extraction failed
}
PropVariantClear(&propvar);
}
Requisitos
Cliente mínimo compatible | Windows XP con SP2, Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 con SP1 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | propvarutil.h |
Library | Propsys.lib |
Archivo DLL | Propsys.dll (versión 6.0 o posterior) |
Redistribuible | Búsqueda de escritorio de Windows (WDS) 3.0 |