Estrutura ITEMIDLIST (shtypes.h)
Contém uma lista de identificadores de item.
Sintaxe
typedef struct _ITEMIDLIST {
SHITEMID mkid;
} ITEMIDLIST;
Membros
mkid
Tipo: SHITEMID
Uma lista de identificadores de item.
Comentários
Um ponteiro para essa estrutura, chamado PIDL, é usado para identificar objetos no namespace shell. Para obter mais informações sobre ponteiros para PIDLs (listas de identificadores de item) e identificadores de item, consulte Introdução ao Namespace do Shell.
Tipos estritos ITEMIDLIST
A partir do Windows Vista, várias formas de ITEMIDLIST estão disponíveis como tipos de dados. Os três tipos de main são:- IDLIST_ABSOLUTE: ITEMIDLIST totalmente qualificado em relação à raiz do namespace. Pode ser de vários níveis.
- IDLIST_RELATIVE: ITEMIDLIST em relação a uma pasta pai. Pode ser de vários níveis.
- ITEMID_CHILD: ITEMIDLIST de nível único em relação a uma pasta pai. Ele contém exatamente uma estrutura SHITEMID .
#define STRICT_TYPED_ITEMIDS // Better type safety for IDLists
#include <shlobj.h> // Typical Shell header file
O significado de cada um desses tipos pode ser alterado com um ou mais dos seguintes modificadores:
- P: O tipo é um ponteiro.
- C: O tipo é constante.
- U: o tipo não está atribuído. Ele se alinha a um limite DWORD em arquiteturas de 32 bits e um limite QWORD em arquiteturas de 64 bits.
- PIDLIST_ABSOLUTE: O ITEMIDLIST é absoluto e foi alocado, conforme indicado por ser não constante. Isso significa que ele precisa ser desalocado com ILFree quando não for mais necessário. Como é um ponteiro direto para a memória alocada, ele é alinhado.
- PCIDLIST_ABSOLUTE: ITEMIDLIST é absoluto e constante. Normalmente, isso é usado quando você recebe um ITEMIDLIST absoluto como um parâmetro, mas não o possui e, portanto, não tem permissão para alterá-lo.
- PCUIDLIST_ABSOLUTE: ITEMIDLIST é absoluto, constante e desalinhado. Isso raramente é usado. O ITEMIDLIST absoluto normalmente é alocado na memória alinhado a um limite DWORD em arquiteturas de 32 bits e a um limite de QWORD em arquiteturas de 64 bits. Um ITEMIDLIST absoluto só seria desalinhado se tivesse sido empacotado por bytes junto com outros dados, como em um formato de serialização.
- PITEMID_CHILD: ITEMIDLIST é um ITEMIDLIST filho alocado em relação a uma pasta pai, como um resultado de IEnumIDList::Next. Ele contém exatamente uma estrutura SHITEMID .
- PCUITEMID_CHILD: o ITEMIDLIST filho é relativo, constante e desalinhado. Isso geralmente ocorre quando você obtém um ponteiro para parte de um PIDL existente. Por exemplo, se você tiver um PIDL absoluto e chamar ILFindLastID, ele retornará o ponteiro para o último SHITEMID filho na lista. Ele não é assinado porque o PIDL embalado por bytes não garante que suas estruturas SHITEMID individuais caiam nos limites de bytes. Referências a PIDLs filho como essas são sempre constantes porque a memória pertence ao PIDL absoluto.
- PCITEMID_CHILD: o ITEMIDLIST filho é constante e alinhado. Isso raramente é usado porque, como um PIDL filho, geralmente faz parte de um PIDL maior e, portanto, não está alinhado aos limites de bytes.
- PUITEMID_CHILD: o ITEMIDLIST filho não está atribuído. Isso raramente é usado porque a memória para esse ITEMIDLIST pertence ao PIDL pai, o que é absoluto. Isso significa que as modificações só podem ser feitas no PIDL pai e, portanto, o PIDL filho precisaria ser constante.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Cabeçalho | shtypes.h |