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::RegisterObjectParam 和 IBindCtx::GetObjectParam 设置和发现其他参数。
[in] riid
类型: REFIID
要返回的接口的标识符。 这可以是 IID_IShellFolder、 IID_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 或更高版本) |