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


Метод IEnumIDList::Next (shobjidl_core.h)

Извлекает указанное число идентификаторов элементов в последовательности перечисления и перемещает текущую позицию на количество извлеченных элементов.

Синтаксис

HRESULT Next(
  [in]  ULONG         celt,
  [out] PITEMID_CHILD *rgelt,
  [out] ULONG         *pceltFetched
);

Параметры

[in] celt

Тип: ULONG

Количество элементов в массиве, на которые ссылается параметр rgelt .

[out] rgelt

Тип: LPITEMIDLIST*

Адрес указателя на массив указателей ITEMIDLIST , получающих идентификаторы элементов. Реализация должна выделить эти идентификаторы элементов с помощью CoTaskMemAlloc. Вызывающее приложение отвечает за освобождение идентификаторов элементов с помощью CoTaskMemFree.

Структуры ITEMIDLIST, возвращаемые в массиве, относятся к перечислению IShellFolder .

[out] pceltFetched

Тип: ULONG*

Указатель на значение, которое получает количество идентификаторов элементов, фактически возвращенных в rgelt. Число может быть меньше значения, указанного в параметре celt . Этот параметр может иметь значение NULL для записи, только если celt = 1, так как в этом случае метод может получить только один (S_OK) или ноль (S_FALSE) элементов.

Возвращаемое значение

Тип: HRESULT

Возвращает S_OK, если метод успешно извлек запрошенные элементы celt . Этот метод возвращает S_OK только в том случае, если полное количество запрошенных элементов успешно получено.

S_FALSE указывает, что было запрошено больше элементов, чем осталось в перечислении. Значение, на которое указывает параметр pceltFetched , указывает фактическое количество извлеченных элементов. Обратите внимание, что значение будет равно 0, если больше нет элементов для извлечения.

В противном случае возвращает определенное COM-значение ошибки.

Комментарии

Если этот метод возвращает код ошибки COM (как определено макросом FAILED ), то никакие записи в массиве rgelt не будут допустимы при выходе. Если этот метод возвращает код успешного выполнения (например, S_OK или S_FALSE), то ULONG , на который указывает параметр pceltFetched , определяет, сколько записей в массиве rgelt допустимо при выходе.

Различие важно в случае, когда celt> 1. Например, если передать celt=10 и осталось всего 3 элемента, *pceltFetched будет равно 3, а метод вернет S_FALSE то есть вы достигли конца файла. Три извлекаемых элемента будут сохранены в rgelt и являются допустимыми.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header shobjidl_core.h (включая Shobjidl.h)
DLL Shell32.dll (версия 4.0 или более поздняя)

См. также раздел

IEnumIDList