Поделиться через


Структура CIDA (shlobj_core.h)

Используется с форматом буфера обмена CFSTR_SHELLIDLIST для передачи указателя на список идентификаторов элементов (PIDL) одного или нескольких объектов пространства имен оболочки.

Синтаксис

typedef struct _IDA {
  UINT cidl;
  UINT aoffset[1];
} CIDA, *LPIDA;

Члены

cidl

Тип: UINT

Количество передаваемых PIDL, не включая родительскую папку.

aoffset[1]

Тип: UINT[1]

Массив смещения относительно начала этой структуры. Массив содержит cidl+1 элементов. Первый элемент aoffset содержит смещение к полному идентификатору PIDL родительской папки. Если этот PIDL пуст, родительская папка — это рабочий стол. Каждый из оставшихся элементов массива содержит смещение к одному из передаваемых PIDLs. Все эти PIDL относятся к идентификатору PIDL родительской папки.

Комментарии

Чтобы использовать эту структуру для получения определенного PIDL, добавьте значение aoffset PIDL в адрес структуры. Следующие два макроса можно использовать для получения PIDL из структуры. Первый извлекает PIDL родительской папки. Второй извлекает PIDL, заданный индексом отсчитываемого от нуля.

#define HIDA_GetPIDLFolder(pida) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[0])
#define HIDA_GetPIDLItem(pida, i) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[i+1])

Значение, возвращаемое этими макросами, является указателем на структуру ITEMIDLIST . Так как эти структуры различаются по длине, необходимо определить конец структуры путем ее анализа. Дополнительные сведения о PIDLs и структуре ITEMIDLIST см. в разделе Пространство имен.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть shlobj_core.h (включая Shlobj.h)