Partager via


Méthode IShellItemArray ::GetAttributes (shobjidl_core.h)

Obtient les attributs du jeu d’éléments contenus dans un IShellItemArray. Si le tableau contient plusieurs éléments, les attributs récupérés par cette méthode ne sont pas les attributs d’éléments uniques, mais une combinaison logique de tous les attributs demandés de tous les éléments.

Syntaxe

HRESULT GetAttributes(
  [in]  SIATTRIBFLAGS AttribFlags,
  [in]  SFGAOF        sfgaoMask,
  [out] SFGAOF        *psfgaoAttribs
);

Paramètres

[in] AttribFlags

Type : SIATTRIBFLAGS

Si le tableau contient un élément unique, cette méthode fournit les mêmes résultats que GetAttributes. Toutefois, si le tableau contient plusieurs éléments, les jeux d’attributs de tous les éléments sont combinés en un ensemble d’attributs unique et retournés dans la valeur pointée par psfgaoAttribs. Ce paramètre prend l’une des valeurs suivantes pour définir la façon dont ce jeu d’attributs final est déterminé :

SIATTRIBFLAGS_AND (0x00000001)

0x00000001. S’il existe plusieurs éléments dans le tableau, utilisez un and au niveau du bit pour combiner les attributs entre les éléments. Par instance, si le tableau contient deux éléments où un élément peut être déplacé (SFGAO_CANMOVE) et un deuxième élément ne peut pas, la méthode retourne (1 & 0) ou 0 pour ce bit d’attribut.

SIATTRIBFLAGS_OR (0x00000002)

0x00000002. S’il existe plusieurs éléments dans le tableau, utilisez un or au niveau du bit pour combiner les attributs entre les éléments. Par instance, si le tableau contient deux éléments où un élément peut être déplacé (SFGAO_CANMOVE) et un deuxième élément ne peut pas, la méthode retourne (1 | 0) ou 1 pour ce bit d’attribut.

SIATTRIBFLAGS_APPCOMPAT (0x00000003)

0x00000003. Récupérez les attributs directement à partir de la source de données Shell. Pour utiliser cette valeur, le tableau d’éléments Shell doit avoir été initialisé en tant qu’IShellFolder avec son contenu spécifié en tant que tableau de LISTES PIDL enfants.

SIATTRIBFLAGS_MASK (0x00000003)

0x00000003. Masque pour SIATTRIBFLAGS_AND, SIATTRIBFLAGS_OR et SIATTRIBFLAGS_APPCOMPAT. Les appelants n’utilisent normalement pas cette valeur.

SIATTRIBFLAGS_ALLITEMS (0x00004000)

0x00004000. Windows 7 et versions ultérieures. Examinez tous les éléments du tableau pour calculer les attributs. Notez que cela peut entraîner des performances médiocres sur de grands tableaux et qu’il ne doit donc être utilisé que si nécessaire. Les cas dans lesquels vous passez cet indicateur doivent être extrêmement rares. Pour plus d’informations, consultez Remarques.

[in] sfgaoMask

Type : SFGAOF

Masque qui spécifie les attributs particuliers qui sont demandés. OR au niveau du bit d’une ou de plusieurs valeurs SFGAO .

[out] psfgaoAttribs

Type : SFGAOF*

Bitmap qui, lorsque cette méthode retourne correctement, contient les valeurs des attributs demandés.

Valeur retournée

Type : HRESULT

Retourne S_OK si les attributs retournés correspondent exactement à ceux demandés dans sfgaoMask, S_FALSE si les attributs ne correspondent pas exactement, ou une valeur d’erreur COM standard dans le cas contraire.

Remarques

Le tableau d’éléments Shell met en cache les attributs individuels une fois qu’ils ont été déterminés.

Lorsque cette méthode passe par le tableau qui collecte des informations d’attribut, elle cesse normalement d’examiner un attribut particulier une fois que cette valeur est irrévocablement définie. Par instance, si l’indicateur SIATTRIBFLAGS_AND est défini, une fois qu’un attribut n’est pas défini sur un élément (valeur 0), il n’est pas nécessaire de continuer à examiner cette valeur d’attribut sur d’autres éléments, car le résultat de l’opération AND sera toujours 0. Par conséquent, l’ensemble final d’attributs est généralement calculé en examinant uniquement les premiers éléments du tableau, ce qui est tout ce qui est nécessaire pour obtenir la valeur finale. Si vous avez besoin d’examiner tous les éléments du tableau, définissez l’indicateur SIATTRIBFLAGS_ALLITEMS. Toutefois, sachez que cela peut ralentir considérablement le retour de la méthode, donc ne le faites pas sans cause.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête shobjidl_core.h (inclure Shobjidl.h)