SHGetInstanceExplorer 函数 (shlobj_core.h)
检索允许托管 Shell 扩展和其他组件防止其主机进程过早关闭的接口。 主机进程通常是 Windows 资源管理器或 Windows Internet Explorer,但其他应用程序也可以使用此函数。
语法
SHSTDAPI SHGetInstanceExplorer(
[out] IUnknown **ppunk
);
参数
[out] ppunk
类型: IUnknown**
当此函数成功返回时,包含主机进程的 IUnknown 接口指针的地址。 这是一个自由线程接口,用于防止主机进程终止。 如果函数调用失败,此值将设置为 NULL。
返回值
类型: HRESULT
如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
有许多组件(如 Shell 扩展处理程序)作为 DLL 实现并在主机进程(如 Windows 资源管理器 (Explorer.exe) 或 Internet Explorer (Iexplore.exe) )中运行。 通常,当用户关闭主机进程时,组件也会立即关闭。 这种突然终止可能会给某些组件造成问题。 例如,如果组件使用后台线程来下载数据或运行用户界面函数,则它可能需要额外的时间来安全地自行关闭。
SHGetInstanceExplorer 允许在主机进程中运行的组件保存对主机进程的引用。 SHGetInstanceExplorer 递增主机的引用计数,并返回指向主机的 IUnknown 接口的指针。 通过持有该引用,组件可以防止主机进程过早关闭。 组件完成必要的处理后,应调用 (*ppunk) -Release> 以释放主机的引用并允许进程终止。
注意 如果 SHGetInstanceExplorer 成功,则组件必须在不再需要主机的引用时释放该引用。 否则,与进程关联的所有资源都将保留在内存中。 *ppunk 指向的 IUnknown 接口只能用于释放此引用。 组件无法使用 (*ppunk) ->QueryInterface 来请求其他接口指针。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | shlobj_core.h (包括 Shlobj.h) |
Library | Shell32.lib |
DLL | Shell32.dll (4.0 或更高版本) |