Partager via


Fonction PSCreatePropertyChangeArray (propsys.h)

Crée un conteneur pour un ensemble d’objets IPropertyChange . Ce conteneur peut être utilisé avec IFileOperation pour appliquer un ensemble de modifications de propriété à un ensemble de fichiers.

Syntaxe

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

Paramètres

[in, optional] rgpropkey

Type : const PROPERTYKEY*

Pointeur vers un tableau de structures PROPERTYKEY qui nomment les propriétés spécifiques dont les modifications sont stockées. Si cette valeur est NULL, cChanges doit avoir la valeur 0.

[in, optional] rgflags

Type : const PKA_FLAGS*

Pointeur vers un tableau de valeurs PKA_FLAGS . Si cette valeur est NULL, cChanges doit avoir la valeur 0.

[in, optional] rgpropvar

Type : const PROPVARIANT*

Pointeur vers un tableau de structures PROPVARIANT . Si cette valeur est NULL, cChanges doit avoir la valeur 0.

[in] cChanges

Type : UINT

Nombre de modifications à appliquer. Il s’agit du nombre d’éléments dans chacun des tableaux rgpropkey, rgflags et rgpropvar.

[in] riid

Type : REFIID

Référence à l’ID de l’interface demandée.

[out] ppv

Type : void**

Lorsque cette fonction retourne, contient le pointeur d’interface demandé dans riid. Il s’agit généralement d’IPropertyChangeArray.

Valeur retournée

Type : HRESULT

Si cette fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Cette fonction crée un objet COM (Component Object Model) qui implémente IPropertyChangeArray. Cet objet est un conteneur pour un ensemble d’interfaces IPropertyChange et peut être utilisé avec IFileOperation pour appliquer un ensemble de modifications de propriété à un ensemble de fichiers.

Vous devez initialiser COM avec CoInitialize ou OleInitialize avant d’appeler PSCreatePropertyChangeArray. COM doit rester initialisé pendant la durée de vie de cet objet. Le tableau de modifications de propriété s’exécute dans un appartement à thread unique (STA).

Un tableau de modifications de propriétés peut être initialisé soit en spécifiant des modifications simples à l’aide des paramètres, soit en utilisant différentes méthodes IPropertyChangeArray pour insérer ou ajouter des modifications supplémentaires.

Les paramètres sont liés entre eux par leur valeur d’index. Pour instance, pour la propriété rgpropkey[0], la nouvelle valeur rgpropvar[0] est appliquée comme spécifié par rgflags[0]. Le paramètre cChanges indique le nombre de ces ensembles. Par conséquent, le nombre d’éléments dans chaque tableau doit être le même : ARRAYSIZE(rgpropkey) = ARRAYSIZE(rgflags) = ARRAYSIZE(rgpropvar) = cChanges.

IFileOperation applique toutes les modifications apportées au tableau de modifications de propriétés à un fichier simultanément pour éviter d’ouvrir le fichier plusieurs fois.

Exemples

L’exemple suivant, à inclure dans le cadre d’un programme plus grand, montre comment utiliser PSCreatePropertyChangeArray pour définir la propriété Comment sur « Fun » et rating sur 4 sur un ou plusieurs fichiers.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP avec SP2, Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 avec SP1 [applications de bureau uniquement]
Plateforme cible Windows
En-tête propsys.h
Bibliothèque Propsys.lib
DLL Propsys.dll (version 6.0 ou ultérieure)
Composant redistribuable Windows Desktop Search (WDS) 3.0

Voir aussi

PSCreateSimplePropertyChange