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


Метод IShellFolder::BindToObject (shobjidl_core.h)

Извлекает обработчик, обычно объект папки оболочки, который реализует IShellFolder для определенного элемента. Необязательные параметры, управляющие построением обработчика, передаются в контексте привязки.

Синтаксис

HRESULT BindToObject(
  [in]  PCUIDLIST_RELATIVE pidl,
  [in]  IBindCtx           *pbc,
  [in]  REFIID             riid,
  [out] void               **ppv
);

Параметры

[in] pidl

Тип: PCUIDLIST_RELATIVE

Адрес структуры ITEMIDLIST (PIDL), которая идентифицирует вложенную папку. Это значение может ссылаться на элемент на любом уровне ниже родительской папки в иерархии пространства имен. Структура содержит одну или несколько структур SHITEMID , за которым следует завершающее значение NULL.

[in] pbc

Тип: IBindCtx*

Указатель на интерфейс IBindCtx в объекте контекста привязки, который можно использовать для передачи параметров в конструкцию обработчика. Если этот параметр не используется, присвойте ему значение NULL. Так как поддержка этого параметра необязательна для реализаций объектов папок, некоторые папки могут не поддерживать использование контекстов привязки.

Сведения, которые можно предоставить в контексте привязки, включают BIND_OPTS структуру, которая включает элемент grfMode , указывающий режим доступа при привязке к обработчику потока. Другие параметры можно задать и обнаружить с помощью IBindCtx::RegisterObjectParam и IBindCtx::GetObjectParam.

[in] riid

Тип: REFIID

Идентификатор возвращаемого интерфейса. Это может быть IID_IShellFolder, IID_IStream или любой другой интерфейс, который идентифицирует конкретный обработчик.

[out] ppv

Тип: void**

При возврате этим методом содержит адрес указателя на запрошенный интерфейс. При возникновении ошибки по этому адресу возвращается указатель NULL .

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

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Приложения используют IShellFolder::BindToObject(..., IID_IShellFolder, ...) для получения объекта папки оболочки для подэлемента. Клиенты должны передавать канонический интерфейс IID, который используется для идентификации определенного обработчика. Например, IID_IShellFolder определяет обработчик папок, а IID_IStream идентифицирует обработчик потока. Реализации могут поддерживать привязку к обработчикам с помощью производных интерфейсов, таких как IID_IShellFolder2. Расширение пространства имен оболочки может реализовать эту функцию, создав объект папки оболочки для указанного подэлемента, а затем вызвав QueryInterface для взаимодействия с объектом через указатель интерфейса.

Реализации BindToObject могут оптимизировать любой вызов к нему, быстро завершаясь сбоем для значений IID, которые он не поддерживает. Например, если объект папки Shell подэлемента не поддерживает IRemoteComputer, реализация должна немедленно вернуть E_NOINTERFACE вместо того, чтобы без необходимости создавать объект папки Оболочки для подэлемента, а затем обнаруживать, что IRemoteComputer не поддерживается в конце концов.

Требования

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

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

IPersistFolder

IPersistFolder2

IShellFolder

IShellFolder2

SHGetDesktopFolder