ITEMIDLIST-Struktur (shtypes.h)

Enthält eine Liste von Elementbezeichnern.

Syntax

typedef struct _ITEMIDLIST {
  SHITEMID mkid;
} ITEMIDLIST;

Member

mkid

Typ: SHITEMID

Eine Liste von Elementbezeichnern.

Hinweise

Ein Zeiger auf diese Struktur, der als PIDL bezeichnet wird, wird verwendet, um Objekte im Shellnamespace zu identifizieren. Weitere Informationen zu Zeigern auf Elementbezeichnerlisten (PIDLs) und Elementbezeichner finden Sie unter Einführung in den Shellnamespace.

ITEMIDLIST Strict Types

Ab Windows Vista sind mehrere Arten von ITEMIDLIST als Datentypen verfügbar. Die drei Standard Typen sind:
  • IDLIST_ABSOLUTE: Vollqualifizierte ITEMIDLIST relativ zum Stamm des Namespace. Es kann sich um mehrere Ebenen sein.
  • IDLIST_RELATIVE: ITEMIDLIST relativ zu einem übergeordneten Ordner. Es kann sich um mehrere Ebenen sein.
  • ITEMID_CHILD: ITEMIDLIST auf einer Ebene relativ zu einem übergeordneten Ordner. Sie enthält genau eine SHITEMID-Struktur .
Diese Typen werden verwendet, wenn Sie Ihren Code mit dem Symbol kompilieren, das STRICT_TYPED_ITEMIDS bevor Sie die Shell-Headerdateien einschließen, wie im folgenden Beispielcode gezeigt.

#define STRICT_TYPED_ITEMIDS    // Better type safety for IDLists

#include <shlobj.h>             // Typical Shell header file

Die Bedeutung jedes dieser Typen kann mit einem oder mehreren der folgenden Modifizierer geändert werden:

  • P: Der Typ ist ein Zeiger.
  • C: Der Typ ist konstant.
  • U: Der Typ ist nicht ausgerichtet. Es richtet sich an einer DWORD-Grenze in 32-Bit-Architekturen und einer QWORD-Grenze in 64-Bit-Architekturen aus.
Einige Beispiele für diese geänderten Typen sind:
  • PIDLIST_ABSOLUTE: Die ITEMIDLIST ist absolut und wurde zugeordnet, wie durch ihre Nichtkonstante angegeben. Dies bedeutet, dass es mit ILFree behandelt werden muss, wenn es nicht mehr benötigt wird. Da es sich um einen direkten Zeiger auf den zugeordneten Arbeitsspeicher handelt, wird er ausgerichtet.
  • PCIDLIST_ABSOLUTE: Die ITEMIDLIST ist absolut und konstant. Dies wird in der Regel verwendet, wenn Sie eine absolute ITEMIDLIST als Parameter übergeben, ihn aber nicht besitzen, und daher nicht berechtigt sind, ihn zu ändern.
  • PCUIDLIST_ABSOLUTE: Die ITEMIDLIST ist absolut, konstant und nicht ausgerichtet. Dies wird selten verwendet. Absolute ITEMIDLIST wird in der Regel im Arbeitsspeicher zugeordnet, der an einer DWORD-Grenze in 32-Bit-Architekturen und einer QWORD-Grenze in 64-Bit-Architekturen ausgerichtet ist. Eine absolute ITEMIDLIST wird nur dann nicht ausgerichtet, wenn sie zusammen mit anderen Daten bytegepackt wurde, z. B. in einem Serialisierungsformat.
  • PITEMID_CHILD: Die ITEMIDLIST ist eine zugeordnete untergeordnete ITEMIDLIST relativ zu einem übergeordneten Ordner, z. B. ein Ergebnis von IEnumIDList::Next. Sie enthält genau eine SHITEMID-Struktur .
  • PCUITEMID_CHILD: Die untergeordnete ITEMIDLIST ist relativ, konstant und nicht ausgerichtet. Dies tritt häufig auf, wenn Sie einen Zeiger auf einen Teil einer vorhandenen PIDL erhalten. Wenn Sie beispielsweise über eine absolute PIDL verfügen und ILFindLastID aufrufen, wird der Zeiger auf die letzte untergeordnete SHITEMID in der Liste zurückgegeben. Es ist nicht ausgerichtet, da die bytegepackte PIDL nicht sicherstellt, dass ihre einzelnen SHITEMID-Strukturen auf Bytegrenzen fallen. Verweise auf untergeordnete PIDLs wie diese sind immer konstant, da der Arbeitsspeicher im Besitz der absoluten PIDL ist.
  • PCITEMID_CHILD: Die untergeordnete ITEMIDLIST ist konstant und ausgerichtet. Dies wird selten verwendet, da sie als untergeordnete PIDL normalerweise Teil einer größeren PIDL ist und daher nicht an Bytegrenzen ausgerichtet ist.
  • PUITEMID_CHILD: Die untergeordnete ITEMIDLIST ist nicht ausgerichtet. Dies wird selten verwendet, da der Arbeitsspeicher für diese ITEMIDLIST der übergeordneten PIDL gehört, was absolut ist. Dies bedeutet, dass Änderungen nur an der übergeordneten PIDL vorgenommen werden können, sodass die untergeordnete PIDL konstant sein muss.
Diese Liste ist nicht vollständig. Es können auch andere Typen vorhanden sein.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile shtypes.h