Función PSCreatePropertyChangeArray (propsys.h)
Crea un contenedor para un conjunto de objetos IPropertyChange . Este contenedor se puede usar con IFileOperation para aplicar un conjunto de cambios de propiedad a un conjunto de archivos.
Sintaxis
PSSTDAPI PSCreatePropertyChangeArray(
[in, optional] const PROPERTYKEY *rgpropkey,
[in, optional] const PKA_FLAGS *rgflags,
[in, optional] const PROPVARIANT *rgpropvar,
[in] UINT cChanges,
[in] REFIID riid,
[out] void **ppv
);
Parámetros
[in, optional] rgpropkey
Tipo: const PROPERTYKEY*
Puntero a una matriz de estructuras PROPERTYKEY que asignan un nombre a las propiedades específicas cuyos cambios se almacenan. Si este valor es NULL, cChanges debe ser 0.
[in, optional] rgflags
Tipo: const PKA_FLAGS*
Puntero a una matriz de valores de PKA_FLAGS . Si este valor es NULL, cChanges debe ser 0.
[in, optional] rgpropvar
Tipo: const PROPVARIANT*
Puntero a una matriz de estructuras PROPVARIANT . Si este valor es NULL, cChanges debe ser 0.
[in] cChanges
Tipo: UINT
Recuento de cambios que se van a aplicar. Este es el número de elementos de cada una de las matrices rgpropkey, rgflags y rgpropvar.
[in] riid
Tipo: REFIID
Referencia al identificador de la interfaz solicitada.
[out] ppv
Tipo: void**
Cuando se devuelve esta función, contiene el puntero de interfaz solicitado en riid. Esto suele ser IPropertyChangeArray.
Valor devuelto
Tipo: HRESULT
Si esta función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.
Comentarios
Esta función crea un objeto Component Object Model (COM) que implementa IPropertyChangeArray. Este objeto es un contenedor para un conjunto de interfaces IPropertyChange y se puede usar con IFileOperation para aplicar un conjunto de cambios de propiedad a un conjunto de archivos.
Debe inicializar COM con CoInitialize o OleInitialize antes de llamar a PSCreatePropertyChangeArray. COM debe permanecer inicializado durante la vigencia de este objeto. La matriz de cambios de propiedad se ejecuta en un apartamento uniproceso (STA).
Se puede inicializar una matriz de cambios de propiedad especificando cambios simples mediante los parámetros o mediante varios métodos IPropertyChangeArray para insertar o anexar cambios adicionales.
Los parámetros están vinculados por su valor de índice. Por ejemplo, para la propiedad rgpropkey[0], el nuevo valor rgpropvar[0] se aplica según lo especificado por rgflags[0]. El parámetro cChanges indica cuántos de estos conjuntos hay. Por lo tanto, el número de elementos de cada matriz debe ser el mismo: ARRAYSIZE(rgpropkey) = ARRAYSIZE(rgflags) = ARRAYSIZE(rgpropvar) = cChanges.
IFileOperation aplica todos los cambios de la matriz de cambios de propiedad a un archivo simultáneamente para evitar abrir el archivo varias veces.
Ejemplos
En el ejemplo siguiente, para incluirse como parte de un programa más grande, se muestra cómo usar PSCreatePropertyChangeArray para establecer la propiedad Comment en "Fun" y Rating en 4 en uno o varios archivos.
// IFileOperation *pfo;
// Assume variable pfo has been initialized by calling SetOperationFlags,
// ApplyPropertiesToItems, and SetProgressMessage as appropriate.
PROPVARIANT rgpropvar[2] = {0};
HRESULT hr = InitPropVariantFromString(L"Fun", &rgpropvar[0]);
if (SUCCEEDED(hr))
{
hr = InitPropVariantFromUInt32(RATING_FOUR_STARS_SET, &rgpropvar[1]);
if (SUCCEEDED(hr))
{
REFPROPERTYKEY rgkey[2] = {PKEY_Comment, PKEY_Rating};
PKA_FLAGS rgflags[2] = {PKA_SET, PKA_SET};
IPropertyChangeArray *pChangeArray;
hr = PSCreatePropertyChangeArray(rgkey, rgflags, rgpropvar, 2, IID_PPV_ARGS(&pChangeArray));
if (SUCCEEDED(hr))
{
hr = pfo->SetProperties(pChangeArray);
if (SUCCEEDED(hr))
{
hr = pfo->PerformOperations();
}
pChangeArray->Release();
}
}
ClearPropVariantArray(rgpropvar, ARRAYSIZE(rgpropvar));
}
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 |