STRUCTURE ITEMIDLIST (shtypes.h)
Contient une liste d’identificateurs d’élément.
Syntaxe
typedef struct _ITEMIDLIST {
SHITEMID mkid;
} ITEMIDLIST;
Membres
mkid
Type : SHITEMID
Liste des identificateurs d’élément.
Remarques
Un pointeur vers cette structure, appelé PIDL, est utilisé pour identifier les objets dans l’espace de noms Shell. Pour plus d’informations sur les pointeurs vers les listes d’identificateurs d’élément (PIDL) et les identificateurs d’élément, consultez Présentation de l’espace de noms Shell.
TYPES STRICTS ITEMIDLIST
À compter de Windows Vista, plusieurs formes d’ITEMIDLIST sont disponibles en tant que types de données. Les trois principaux types sont les suivants :- IDLIST_ABSOLUTE : ITEMIDLIST complet par rapport à la racine de l’espace de noms. Il peut s’agir de plusieurs niveaux.
- IDLIST_RELATIVE : ITEMIDLIST par rapport à un dossier parent. Il peut s’agir de plusieurs niveaux.
- ITEMID_CHILD : ITEMIDLIST de niveau unique par rapport à un dossier parent. Il contient exactement une structure SHITEMID .
#define STRICT_TYPED_ITEMIDS // Better type safety for IDLists
#include <shlobj.h> // Typical Shell header file
La signification de chacun de ces types peut être modifiée avec un ou plusieurs des modificateurs suivants :
- P : Le type est un pointeur.
- C : Le type est constant.
- U : Le type n’est pas aligné. Il s’aligne sur une limite DWORD dans des architectures 32 bits et une limite QWORD dans des architectures 64 bits.
- PIDLIST_ABSOLUTE : L’ITEMIDLIST est absolu et a été alloué, comme indiqué par son caractère non constant. Cela signifie qu’il doit être désalloué avec ILFree quand il n’est plus nécessaire. Étant donné qu’il s’agit d’un pointeur direct vers la mémoire allouée, il est aligné.
- PCIDLIST_ABSOLUTE : ITEMIDLIST est absolu et constant. Cela est généralement utilisé lorsque vous passez un ITEMIDLIST absolu en tant que paramètre, mais que vous ne le possédez pas, et ne sont donc pas autorisés à le modifier.
- PCUIDLIST_ABSOLUTE : ITEMIDLIST est absolu, constant et non aligné. Cela est rarement utilisé. ItemIDLIST absolu est généralement alloué en mémoire alignée sur une limite DWORD dans des architectures 32 bits et à une limite QWORD dans des architectures 64 bits. Un ITEMIDLIST absolu n’est pas aligné uniquement s’il a été compressé en octets, ainsi que d’autres données, comme dans un format de sérialisation.
- PITEMID_CHILD : ITEMIDLIST est un ITEMIDLIST enfant alloué par rapport à un dossier parent, tel qu’un résultat d’IEnumIDList::Next. Il contient exactement une structure SHITEMID .
- PCUITEMID_CHILD : l’itemIDLIST enfant est relatif, constant et non aligné. Cela se produit souvent lorsque vous obtenez un pointeur vers une partie d’un piDL existant. Par exemple, si vous avez un PIDL absolu et que vous appelez ILFindLastID, il retourne le pointeur vers le dernier SHITEMID enfant dans la liste. Il n’est pas aligné, car le PIDL d’octets ne garantit pas que ses structures SHITEMID individuelles tombent sur des limites d’octets. Les références aux fichiers PIDL enfants tels que celles-ci sont toujours constantes, car la mémoire appartient au piDL absolu.
- PCITEMID_CHILD : l’ITEMIDLIST enfant est constant et aligné. Cela est rarement utilisé car en tant que PIDL enfant, il fait généralement partie d’un piDL plus grand et n’est donc pas aligné sur les limites d’octets.
- PUITEMID_CHILD : l’élément ITEMIDLIST enfant n’est pas aligné. Cela est rarement utilisé, car la mémoire de cet ITEMIDLIST appartient au PIDL parent, qui est absolu. Cela signifie que les modifications ne peuvent être apportées qu’au PIDL parent et que le PIDL enfant doit donc être constant.
Configuration requise
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | shtypes.h |