Estructura ITEMIDLIST (shtypes.h)
Contiene una lista de identificadores de elemento.
Sintaxis
typedef struct _ITEMIDLIST {
SHITEMID mkid;
} ITEMIDLIST;
Miembros
mkid
Tipo: SHITEMID
Lista de identificadores de elemento.
Comentarios
Un puntero a esta estructura, denominado PIDL, se usa para identificar objetos en el espacio de nombres de Shell. Para obtener más información sobre los punteros a las listas de identificadores de elementos (PIDL) y a los identificadores de elementos, vea Introducción al espacio de nombres de Shell.
Tipos estrictos ITEMIDLIST
A partir de Windows Vista, hay varias formas de ITEMIDLIST disponibles como tipos de datos. Los tres tipos principales son:- IDLIST_ABSOLUTE: ITEMIDLIST completo en relación con la raíz del espacio de nombres. Puede ser de varios niveles.
- IDLIST_RELATIVE: ITEMIDLIST relativo a una carpeta primaria. Puede ser de varios niveles.
- ITEMID_CHILD: ITEMIDLIST de nivel único relativo a una carpeta primaria. Contiene exactamente una estructura SHITEMID .
#define STRICT_TYPED_ITEMIDS // Better type safety for IDLists
#include <shlobj.h> // Typical Shell header file
El significado de cada uno de estos tipos se puede modificar con uno o varios de los modificadores siguientes:
- P: El tipo es un puntero.
- C: el tipo es constante.
- U: El tipo no está asignado. Se alinea con un límite DWORD en arquitecturas de 32 bits y un límite de QWORD en arquitecturas de 64 bits.
- PIDLIST_ABSOLUTE: ITEMIDLIST es absoluto y se ha asignado, como se indica en su no constante. Esto significa que debe desasignarse con ILFree cuando ya no sea necesario. Dado que es un puntero directo a la memoria asignada, está alineado.
- PCIDLIST_ABSOLUTE: ITEMIDLIST es absoluta y constante. Esto se usa normalmente cuando se pasa un ITEMIDLIST absoluto como parámetro, pero no es propietario de él, por lo que no se permite cambiarlo.
- PCUIDLIST_ABSOLUTE: ITEMIDLIST es absoluto, constante y no asignado. Esto rara vez se usa. ItemIDLIST absoluto se asigna normalmente en memoria alineada a un límite DWORD en arquitecturas de 32 bits y a un límite de QWORD en arquitecturas de 64 bits. Un ITEMIDLIST absoluto solo se anularía si se ha empaquetado por bytes junto con otros datos, como en un formato de serialización.
- PITEMID_CHILD: ITEMIDLIST es un elemento secundario asignado ITEMIDLIST relativo a una carpeta primaria, como el resultado de IEnumIDList::Next. Contiene exactamente una estructura SHITEMID .
- PCUITEMID_CHILD: ITEMIDLIST secundario es relativo, constante y no asignado. Esto suele ocurrir cuando se obtiene un puntero a parte de un PIDL existente. Por ejemplo, si tiene un PIDL absoluto y llama a ILFindLastID, devuelve el puntero al último SHITEMID secundario de la lista. No está asignado porque el PIDL empaquetado por bytes no garantiza que sus estructuras SHITEMID individuales se encuentran en los límites de bytes. Las referencias a LOS PIN secundarios, como estas, siempre son constantes porque la memoria es propiedad del PIDL absoluto.
- PCITEMID_CHILD: ITEMIDLIST secundario es constante y alineado. Esto rara vez se usa porque como PIDL secundario, normalmente forma parte de un PIDL mayor y, por lo tanto, no se alinea en los límites de bytes.
- PUITEMID_CHILD: el ITEMIDLIST secundario no está asignado. Esto rara vez se usa porque la memoria de este ITEMIDLIST es propiedad del PIDL primario, que es absoluta. Esto significa que las modificaciones solo se pueden realizar en el PIDL primario, por lo que el PIDL secundario tendría que ser constante.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado | shtypes.h |