Condividi tramite


Funzione PSCreatePropertyChangeArray (propsys.h)

Crea un contenitore per un set di oggetti IPropertyChange . Questo contenitore può essere usato con IFileOperation per applicare un set di modifiche delle proprietà a un set di file.

Sintassi

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
);

Parametri

[in, optional] rgpropkey

Tipo: const PROPERTYKEY*

Puntatore a una matrice di strutture PROPERTYKEY che denominano le proprietà specifiche le cui modifiche vengono archiviate. Se questo valore è NULL, cChanges deve essere 0.

[in, optional] rgflags

Tipo: const PKA_FLAGS*

Puntatore a una matrice di valori PKA_FLAGS . Se questo valore è NULL, cChanges deve essere 0.

[in, optional] rgpropvar

Tipo: const PROPVARIANT*

Puntatore a una matrice di strutture PROPVARIANT . Se questo valore è NULL, cChanges deve essere 0.

[in] cChanges

Tipo: UINT

Numero di modifiche da applicare. Questo è il numero di elementi in ognuna delle matrici rgpropkey, rgflags e rgpropvar.

[in] riid

Tipo: REFIID

Riferimento all'ID dell'interfaccia richiesta.

[out] ppv

Tipo: void**

Quando questa funzione viene restituita, contiene il puntatore di interfaccia richiesto in riid. Si tratta in genere di IPropertyChangeArray.

Valore restituito

Tipo: HRESULT

Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Questa funzione crea un oggetto COM (Component Object Model) che implementa IPropertyChangeArray. Questo oggetto è un contenitore per un set di interfacce IPropertyChange e può essere usato con IFileOperation per applicare un set di modifiche di proprietà a un set di file.

È necessario inizializzare COM con CoInitialize o OleInitialize prima di chiamare PSCreatePropertyChangeArray. COM deve rimanere inizializzato per la durata di questo oggetto. La matrice di modifiche della proprietà viene eseguita in un apartment a thread singolo (STA).

È possibile inizializzare una matrice di modifiche delle proprietà specificando modifiche semplici usando i parametri oppure usando vari metodi IPropertyChangeArray per inserire o aggiungere modifiche aggiuntive.

I parametri vengono collegati tra loro in base al valore di indice. Ad esempio, per la proprietà rgpropkey[0], il nuovo valore rgpropvar[0] viene applicato come specificato da rgflags[0]. Il parametro cChanges indica quanti di questi set sono presenti. Di conseguenza, il numero di elementi in ogni matrice deve essere lo stesso: ARRAYSIZE(rgpropkey) = ARRAYSIZE(rgflags) = ARRAYSIZE(rgpropvar) = cChanges.

IFileOperation applica tutte le modifiche apportate alla matrice di modifiche della proprietà a un file contemporaneamente per evitare di aprire il file più volte.

Esempio

Nell'esempio seguente, da includere come parte di un programma più ampio, viene illustrato come utilizzare PSCreatePropertyChangeArray per impostare la proprietà Comment su "Fun" e Rating su 4 in uno o più file.

// 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));
}

Requisiti

Requisito Valore
Client minimo supportato Windows XP con SP2, Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2003 con SP1 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione propsys.h
Libreria Propsys.lib
DLL Propsys.dll (versione 6.0 o successiva)
Componente ridistribuibile Windows Desktop Search (WDS) 3.0

Vedi anche

PSCreateSimplePropertyChange