ITEMIDLIST 構造体 (shtypes.h)
アイテム識別子の一覧を格納します。
構文
typedef struct _ITEMIDLIST {
SHITEMID mkid;
} ITEMIDLIST;
メンバー
mkid
種類: SHITEMID
アイテム識別子の一覧。
注釈
この構造体へのポインターは、 PIDL と呼ばれ、シェル名前空間内のオブジェクトを識別するために使用されます。 項目識別子リスト (PIDL) と項目識別子へのポインターの詳細については、「 シェル名前空間の概要」を参照してください。
ITEMIDLIST 厳密な型
Windows Vista の時点では、データ型としていくつかの形式の ITEMIDLIST を使用できます。 3 つのメインの種類は次のとおりです。- IDLIST_ABSOLUTE: 名前空間のルートを基準とした完全修飾 ITEMIDLIST 。 複数レベルの場合があります。
- IDLIST_RELATIVE: 親フォルダーを基準とした ITEMIDLIST 。 複数レベルの場合があります。
- ITEMID_CHILD: 親フォルダーに対する単一レベル の ITEMIDLIST 。 それはちょうど1つの SITEMID構造を 含みます。
#define STRICT_TYPED_ITEMIDS // Better type safety for IDLists
#include <shlobj.h> // Typical Shell header file
これらの各型の意味は、次の修飾子の 1 つ以上で変更できます。
- P: 型はポインターです。
- C: 型は定数です。
- U: 型が整列されていません。 32 ビット アーキテクチャでは DWORD 境界、64 ビット アーキテクチャでは QWORD 境界に配置されます。
- PIDLIST_ABSOLUTE: ITEMIDLIST は絶対であり、非定数であることが示すように割り当てられています。 つまり、 ILFree は不要になったときに割り当てを解除する必要があります。 割り当てられたメモリへの直接ポインターであるため、配置されます。
- PCIDLIST_ABSOLUTE: ITEMIDLIST は絶対および定数です。 これは通常、絶対 ITEMIDLIST をパラメーターとして渡されたが、それを所有していない場合に使用されるため、変更することはできません。
- PCUIDLIST_ABSOLUTE: ITEMIDLIST は絶対、定数、整列されていません。 これはまれに使用されます。 絶対 ITEMIDLIST は、通常、32 ビット アーキテクチャの DWORD 境界と 64 ビット アーキテクチャの QWORD 境界にアラインされたメモリに割り当てられます。 絶対 ITEMIDLIST は、シリアル化形式などの他のデータと共にバイトパックされている場合にのみ、整列されません。
- PITEMID_CHILD: ITEMIDLIST は、親フォルダーに対して割り当てられた子 ITEMIDLIST ( IEnumIDList::Next の結果など) です。 それはちょうど1つの SITEMID構造を 含みます。
- PCUITEMID_CHILD: 子 ITEMIDLIST は相対、定数、および整列されていません。 これは、多くの場合、既存の PIDL の一部へのポインターを取得するときに発生します。 たとえば、絶対 PIDL があり、 ILFindLastID を呼び出すと、リスト内の最後の子 SHITEMID へのポインターが返されます。 バイト パック PIDL では、個々の SHITEMID 構造体がバイト境界に含まれないため、アラインされていません。 このような子 PIDL への参照は、メモリが絶対 PIDL によって所有されるため、常に一定です。
- PCITEMID_CHILD: 子 ITEMIDLIST は定数で配置されます。 これは、子 PIDL として通常、より大きな PIDL の一部であるため、バイト境界にアラインされないため、ほとんど使用されません。
- PUITEMID_CHILD: 子 ITEMIDLIST が整列されていません。 これは、この ITEMIDLIST のメモリが親 PIDL によって所有されているため、ほとんど使用されません。これは絶対です。 つまり、変更は親 PIDL に対してのみ行うことができるため、子 PIDL は定数である必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
Header | shtypes.h |