Struttura ITEMIDLIST (shtypes.h)
Contiene un elenco di identificatori di elemento.
Sintassi
typedef struct _ITEMIDLIST {
SHITEMID mkid;
} ITEMIDLIST;
Members
mkid
Tipo: SHITEMID
Elenco di identificatori di elemento.
Commenti
Un puntatore a questa struttura, denominato PIDL, viene usato per identificare gli oggetti nello spazio dei nomi shell. Per altre informazioni sui puntatori agli elenchi di identificatori di elemento (PIDLs) e agli identificatori di elemento, vedere Introduzione allo spazio dei nomi shell.
Tipi rigorosi ITEMIDLIST
A partire da Windows Vista, diverse forme di ITEMIDLIST sono disponibili come tipi di dati. I tre tipi principali sono:- IDLIST_ABSOLUTE: ITEMIDLIST completo rispetto alla radice dello spazio dei nomi. Può essere a più livelli.
- IDLIST_RELATIVE: ITEMIDLIST rispetto a una cartella padre. Può essere a più livelli.
- ITEMID_CHILD: ITEMIDLIST a livello singolo rispetto a una cartella padre. Contiene esattamente una struttura SHITEMID .
#define STRICT_TYPED_ITEMIDS // Better type safety for IDLists
#include <shlobj.h> // Typical Shell header file
Il significato di ognuno di questi tipi può essere modificato con uno o più modificatori seguenti:
- P: il tipo è un puntatore.
- C: il tipo è costante.
- U: il tipo non è idoneo. Si allinea a un limite DWORD in architetture a 32 bit e a un limite QWORD in architetture a 64 bit.
- PIDLIST_ABSOLUTE: ITEMIDLIST è assoluto ed è stato allocato, come indicato dal suo essere non costante. Ciò significa che deve essere deallocato con ILFree quando non è più necessario. Poiché è un puntatore diretto alla memoria allocata, è allineato.
- PCIDLIST_ABSOLUTE: ITEMIDLIST è assoluto e costante. Questo viene in genere usato quando si passa un elemento ITEMIDLIST assoluto come parametro, ma non è autorizzato a modificarlo.
- PCUIDLIST_ABSOLUTE: ITEMIDLIST è assoluto, costante e non idoneo. Questa operazione viene usata raramente. ITEMIDLIST assoluto vengono in genere allocati in memoria allineati a un limite DWORD in architetture a 32 bit e a un limite QWORD in architetture a 64 bit. Un elemento ITEMIDLIST assoluto non è idoneo solo se è stato compresso da byte insieme ad altri dati, ad esempio in un formato di serializzazione.
- PITEMID_CHILD: ITEMIDLIST è un ELEMENTO ITEMIDLIST allocato relativo a una cartella padre, ad esempio un risultato di IEnumIDList::Next. Contiene esattamente una struttura SHITEMID .
- PCUITEMID_CHILD: l'ELEMENTOIDLIST figlio è relativo, costante e non idoneo. Ciò si verifica spesso quando si ottiene un puntatore a parte di un PIDL esistente. Ad esempio, se si ha un PIDL assoluto e si chiama ILFindLastID, restituisce il puntatore all'ultimo SHITEMID figlio nell'elenco. Non è idoneo perché il piDL con byte non garantisce che le singole strutture SHITEMID rientrano nei limiti di byte. I riferimenti ai PID figlio, ad esempio questi sono sempre costanti perché la memoria è di proprietà del PIDL assoluto.
- PCITEMID_CHILD: l'ELEMENTOIDLIST figlio è costante e allineato. Questa operazione viene usata raramente perché come PIDL figlio, è in genere una parte di un PIDL più grande e quindi non allineata ai limiti di byte.
- PUITEMID_CHILD: l'elemento ITEMIDLIST figlio non è idoneo. Questa operazione viene usata raramente perché la memoria per questo ITEMIDLIST è di proprietà del PIDL padre, che è assoluto. Ciò significa che le modifiche possono essere apportate solo al PIDL padre e quindi il PIDL figlio deve essere costante.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Intestazione | shtypes.h |