Compartir a través de


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

Consulte también

PSCreateSimplePropertyChange