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


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

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

INamespaceWalk

INamespaceWalkCB