Struktur ITEMIDLIST (shtypes.h)

Berisi daftar pengidentifikasi item.

Sintaks

typedef struct _ITEMIDLIST {
  SHITEMID mkid;
} ITEMIDLIST;

Anggota

mkid

Jenis: SHITEMID

Daftar pengidentifikasi item.

Keterangan

Penunjuk ke struktur ini, yang disebut PIDL, digunakan untuk mengidentifikasi objek di namespace Shell. Untuk informasi selengkapnya tentang penunjuk ke daftar pengidentifikasi item (PIDL) dan pengidentifikasi item, lihat Pengantar Namespace Shell.

Tipe Ketat ITEMIDLIST

Pada Windows Vista, beberapa bentuk ITEMIDLIST tersedia sebagai jenis data. Tiga jenis utamanya adalah:
  • IDLIST_ABSOLUTE: ITEMIDLIST yang sepenuhnya memenuhi syarat relatif terhadap akar namespace. Mungkin multi-level.
  • IDLIST_RELATIVE: ITEMIDLIST relatif terhadap folder induk. Mungkin multi-level.
  • ITEMID_CHILD: ITEMIDLIST tingkat tunggal relatif terhadap folder induk. Ini berisi tepat satu struktur SHITEMID .
Jenis ini digunakan jika Anda mengkompilasi kode Anda dengan simbol STRICT_TYPED_ITEMIDS sebelum Anda menyertakan file header Shell, seperti yang ditunjukkan dalam contoh kode berikut.

#define STRICT_TYPED_ITEMIDS    // Better type safety for IDLists

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

Arti masing-masing jenis ini dapat diubah dengan satu atau beberapa pengubah berikut:

  • P: Jenisnya adalah penunjuk.
  • C: Jenisnya konstan.
  • U: Jenis tidak ditandatangani. Ini selaras dengan batas DWORD dalam arsitektur 32-bit dan batas QWORD dalam arsitektur 64-bit.
Beberapa contoh jenis yang dimodifikasi ini adalah:
  • PIDLIST_ABSOLUTE: ITEMIDLIST bersifat absolut dan telah dialokasikan, seperti yang ditunjukkan oleh yang tidak konstan. Ini berarti bahwa ia perlu ditangani dengan ILFree ketika tidak lagi diperlukan. Karena merupakan penunjuk langsung untuk mengalokasikan memori, itu selaras.
  • PCIDLIST_ABSOLUTE: ITEMIDLIST bersifat absolut dan konstan. Ini biasanya digunakan ketika Anda melewati ITEMIDLIST absolut sebagai parameter tetapi tidak memilikinya, sehingga tidak diizinkan untuk mengubahnya.
  • PCUIDLIST_ABSOLUTE: ITEMIDLIST absolut, konstanta, dan tidak sejajar. Ini jarang digunakan. ITEMIDLIST absolut biasanya dialokasikan dalam memori yang selaras dengan batas DWORD dalam arsitektur 32-bit dan ke batas QWORD dalam arsitektur 64-bit. ITEMIDLIST absolut akan tidak sejajar hanya jika telah dikemas byte bersama dengan data lain, seperti dalam format serialisasi.
  • PITEMID_CHILD: ITEMIDLIST adalah ITEMIDLIST anak yang dialokasikan relatif terhadap folder induk, seperti hasil dari IEnumIDList::Next. Ini berisi tepat satu struktur SHITEMID .
  • PCUITEMID_CHILD: ITEMIDLIST anak relatif, konstanta, dan tidak sejajar. Ini sering terjadi ketika Anda mendapatkan pointer ke bagian dari PIDL yang ada. Misalnya, jika Anda memiliki PIDL absolut dan memanggil ILFindLastID, ia mengembalikan pointer ke SHITEMID anak terakhir dalam daftar. Ini tidak sejajar karena PIDL yang dikemas byte tidak memastikan bahwa struktur SHITEMID individunya jatuh pada batas byte. Referensi ke PIDL anak seperti ini selalu konstan karena memori dimiliki oleh PIDL absolut.
  • PCITEMID_CHILD: ITEMIDLIST anak konstan dan selaras. Ini jarang digunakan karena sebagai PIDL anak, biasanya merupakan bagian dari PIDL yang lebih besar, dan karenanya tidak selaras pada batas byte.
  • PUITEMID_CHILD: ITEMIDLIST anak tidak ditandatangani. Ini jarang digunakan karena memori untuk ITEMIDLIST ini dimiliki oleh PIDL induk, yang absolut. Ini berarti bahwa modifikasi hanya dapat dilakukan pada PIDL induk, sehingga PIDL anak harus konstan.
Daftar ini tidak lengkap. Jenis lain juga dapat ada.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header shtypes.h