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 |