Метод 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 или более поздняя) |