Función PSGetPropertyFromPropertyStorage (propsys.h)
Obtiene el valor de una propiedad tal como se almacena en el almacenamiento de propiedades serializado.
Sintaxis
PSSTDAPI PSGetPropertyFromPropertyStorage(
[in] PCUSERIALIZEDPROPSTORAGE psps,
[in] DWORD cb,
[in] REFPROPERTYKEY rpkey,
[out] PROPVARIANT *ppropvar
);
Parámetros
[in] psps
Tipo: PCUSERIALIZEDPROPSTORAGE
Puntero a un búfer asignado que contiene las propiedades serializadas. Este búfer se obtiene mediante una llamada a IPersistSerializedPropStorage::GetPropertyStorage.
[in] cb
Tipo: DWORD
Tamaño, en bytes, del búfer USERIALIZESPROPSTORAGE al que apunta psps.
[in] rpkey
Tipo: REFPROPERTYKEY
Referencia a propertykey que identifica la propiedad para la que se va a obtener el valor.
[out] ppropvar
Tipo: PROPVARIANT**
Cuando se devuelve esta función, contiene el valor solicitado.
Valor devuelto
Tipo: PSSTDAPI
Devuelve S_OK si se ejecuta correctamente o un valor de error de lo contrario.
Comentarios
Esta función está pensada para llamarse si la aplicación que realiza la llamada ya tiene un almacenamiento de propiedades serializado y no necesita más de unas pocas propiedades del almacenamiento. Si es necesario recuperar muchas propiedades, el rendimiento se puede mejorar mediante la creación de un almacén de propiedades de memoria a través de PSCreateMemoryPropertyStore, inicializando el almacén de propiedades mediante una llamada a IPersistSerializedPropStorage::SetPropertyStorage y mediante IPropertyStore para recuperar las propiedades.
Tenga en cuenta que PSGetPropertyFromPropertyStorage solo funciona en búferes serializados creados por la implementación del sistema de IPersistSerializedPropStorage. Primero debe obtener un almacén de propiedades de memoria llamando a PSCreateMemoryPropertyStore. Después, ese almacén puede crear un búfer serializado mediante la interfaz IPersistSerializedPropStorage .
Aunque SERIALIZEDPROPSTORAGE es una estructura de datos serializada opaca cuyo formato puede cambiar en el futuro, se admitirán formatos anteriores en versiones posteriores de Windows. Dado que el formato es opaco, las aplicaciones deben usar las API de almacenamiento de propiedades compatibles para acceder y manipular el búfer serializado (consulte IPersistSerializedPropStorage).
Ejemplos
En el ejemplo siguiente, para incluirse como parte de un programa mayor, se muestra cómo usar PSGetPropertyFromPropertyStorage para leer un valor del almacenamiento de propiedades serializado.
// SERIALIZEDPROPSTORAGE *pStorage;
// DWORD cbStorage;
// Assume the variables pStorage and cbStorage are initialized and valid.
PROPVARIANT propvar;
HRESULT hr = PSGetPropertyFromPropertyStorage(pStorage, cb, PKEY_Rating, &propvar);
if (SUCCEEDED(hr))
{
// propvar is now valid.
PropVariantClear(&propvar);
}
Requisitos
Requisito | Value |
---|---|
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 | propsys.h |
Library | Propsys.lib |
Archivo DLL | Propsys.dll (versión 6.0 o posterior) |
Redistribuible | Windows Desktop Search (WDS) 3.0 |