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 来请求其他接口指针。
 
仅当从以前调用 SHSetInstanceExplorer 以设置进程引用的应用程序调用 SHGetInstanceExplorer 时,SHGetInstanceExplorer 才会成功。

要求

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