IShellFolder::BindToObject 方法 (shobjidl_core.h)

检索处理程序,通常是为特定项实现 IShellFolder 的 Shell 文件夹对象。 控制处理程序构造的可选参数在绑定上下文中传递。

语法

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::RegisterObjectParamIBindCtx::GetObjectParam 设置和发现其他参数。

[in] riid

类型: REFIID

要返回的接口的标识符。 这可以是 IID_IShellFolderIID_IStream或标识特定处理程序的任何其他接口。

[out] ppv

类型: void**

此方法返回时,包含指向所请求接口的指针的地址。 如果发生错误,则会在此地址返回 NULL 指针。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

应用程序使用 IShellFolder::BindToObject (...、IID_IShellFolder、...) 获取子项的 Shell 文件夹对象。 客户端应传递用于标识特定处理程序的规范接口 IID。 例如, IID_IShellFolder 标识文件夹处理程序, IID_IStream 标识流处理程序。 实现还可以支持使用派生接口(例如 IID_IShellFolder2)绑定到处理程序。 Shell 命名空间扩展可以通过为指定子项创建 Shell 文件夹对象,然后调用 QueryInterface 以通过其接口指针与对象通信来实现此函数。

BindToObject 的实现可以通过快速失败来优化对它的任何调用,因为它不支持的 IID 值。 例如,如果子项的 Shell 文件夹对象不支持 IRemoteComputer,则实现应立即返回 E_NOINTERFACE ,而不是不必要地为子项创建 Shell 文件夹对象,然后发现 IRemoteComputer 毕竟不受支持。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)
DLL Shell32.dll (版本 4.0 或更高版本)

另请参阅

IPersistFolder

IPersistFolder2

IShellFolder

IShellFolder2

SHGetDesktopFolder