Метод INamespaceWalk::Walk (shobjidl_core.h)
Инициирует рекурсивный обход пространства имен от указанного корня до заданной глубины.
Синтаксис
HRESULT Walk(
[in] IUnknown *punkToWalk,
[in] DWORD dwFlags,
[in] int cDepth,
[in] INamespaceWalkCB *pnswcb
);
Параметры
[in] punkToWalk
Тип: IUnknown*
Корневой узел, с которого начинается обход. Он может быть представлен одним из следующих объектов.
Указание IShellFolder рабочего стола в качестве корневого каталога позволяет пройти все пространство имен Windows, если cDepth достаточно велик.[in] dwFlags
Тип: DWORD
Один или несколько следующих флагов, управляющих операцией обхода.
NSWF_DEFAULT (0x00000000)
Используйте это значение, если вы не хотите устанавливать другие флаги.
NSWF_NONE_IMPLIES_ALL (0x00000001)
Соберите все элементы в папке, если выполняются оба этих условия:
- punkToWalk — это папка (IShellFolder или IShellView).
- В настоящее время ни один из элементов в папке не выбран.
NSWF_ONE_IMPLIES_ALL (0x00000002)
Соберите все элементы в папке, если выполняются оба этих условия:
- punkToWalk — это папка (IShellFolder или IShellView).
- В данный момент выбран один из элементов в папке.
NSWF_DONT_TRAVERSE_LINKS (0x00000004)
Не переходить по ссылкам (.lnk, URL-адресам и ярлыкам папок) в рекурсии; Вместо этого возвращайте их как обычные элементы.
NSWF_DONT_ACCUMULATE_RESULT (0x00000008)
Не собирайте PIDLs узлов во время обхода пространства имен.
NSWF_TRAVERSE_STREAM_JUNCTIONS (0x00000010)
Включите содержимое точек соединения потоков в ход. Например, перейдите к содержимому файла .cab.
NSWF_FILESYSTEM_ONLY (0x00000020)
Обход только узлов файловой системы.
NSWF_SHOW_PROGRESS (0x00000040)
Отображение диалогового окна с индикатором выполнения при проходе по пространству имен.
NSWF_FLAG_VIEWORDER (0x00000080)
Возвращает элементы в порядке представления. Это применимо, только если punkToWalk является объектом IShellView .
NSWF_IGNORE_AUTOPLAY_HIDA (0x00000100)
Не используйте автозапуск HIDA в объекте данных. Это применимо, только если punkToWalk является объектом IDataObject .
NSWF_ASYNC (0x00000200)
Выполните асинхронную процедуру, запустив ее в фоновом потоке.
NSWF_DONT_RESOLVE_LINKS (0x00000400)
Просматривайте ссылки для возврата целевых объектов (для .lnk, URL-адреса и ярлыков папок), но не проверяйте, существуют ли эти целевые объекты (разрешить). Это оптимизация и не влияет на результаты, за исключением случаев, когда отсутствует или перемещенный целевой объект может быть найден и возвращен.
NSWF_ACCUMULATE_FOLDERS (0x00000800)
NSWF_DONT_SORT (0x00001000)
Не поддерживайте порядок сортировки элементов, которые вы проходите.
NSWF_USE_TRANSFER_MEDIUM (0x00002000)
NSWF_DONT_TRAVERSE_STREAM_JUNCTIONS (0x00004000)
NSWF_ANY_IMPLIES_ALL (0x00008000)
Представлено в Windows 8.
[in] cDepth
Тип: int
Максимальная глубина, убываемая по иерархии пространства имен. Эта глубина отсчитывается от нуля. Задайте значение 0, чтобы идти только по папке, определенной punkToWalk , но ни по ее вложенным папкам.
[in] pnswcb
Тип: INamespaceWalkCB*
Функция обратного вызова INamespaceWalkCB, используемая INamespaceWalk. Этот параметр может принимать значение NULL. При необходимости объект может реализовать интерфейсы INamespaceWalkCB2 и IActionProgress . См. примечания ниже.
Возвращаемое значение
Тип: HRESULT
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Если флаг NSWF_SHOW_PROGRESS не передается, а объект, на который указывает параметр pnswcb , реализует IActionProgress, то метод INamespaceWalk::Walk периодически вызывает метод IActionProgress::QueryCancel , чтобы определить, следует ли отменить операцию.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | shobjidl_core.h (включая Shobjidl.h) |
Библиотека | Shell32.lib |
DLL | Shell32.dll (версия 6.0 или более поздняя) |