getProcessReference 函数 (shlwapi.h)

检索 SetProcessReference 提供的特定于进程的对象,并递增引用计数以使进程保持活动状态。

语法

LWSTDAPI GetProcessReference(
  [out] IUnknown **punk
);

参数

[out] punk

当此函数成功返回时,指针的地址指向 SetProcessReference 提供给进程的 对象。 应用程序负责在不再需要时释放此资源。

指向自由线程 IUnknown 的指针。 组件可以通过 SHGetInstanceExplorer) 使用此接口 (,以防止主机进程终止。 此值可以为 NULL,在这种情况下,进程引用不再可供组件使用。

返回值

备注

有许多组件(如 Shell 扩展处理程序)作为 DLL 实现,并在主机进程中运行,例如 Windows 资源管理器 (Explorer.exe) 或 Windows Internet Explorer (Iexplore.exe) 。 通常,当用户关闭主机进程时,组件也会立即关闭。 这种突然终止可能会给某些组件造成问题。 例如,如果组件使用后台线程下载数据或运行用户界面函数,则可能需要额外的时间来安全地关闭自身。

GetProcessReference 允许在主机进程中运行的组件在主机进程上保存引用。 GetProcessReference 递增主机的引用计数,并返回指向主机的 IUnknown 接口的指针。 通过保留该引用,组件可以防止主机进程过早关闭。 组件完成其必要的处理后,应调用 (*punk) -Release> 以释放主机的引用,并允许进程终止。

注意 如果 GetProcessReference 成功,则组件必须在不再需要主机的引用时释放该引用。 否则,与进程关联的所有资源都将保留在内存中。 *punk 指向的 IUnknown 接口只能用于释放此引用。 组件不能使用 (*punk) ->QueryInterface 来请求其他接口指针。
 
仅当从以前调用 SetProcessReference 的应用程序调用 GetProcessReference 以设置进程引用时,GetProcessReference 才会成功。

要求

要求
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
目标平台 Windows
标头 shlwapi.h
Library Shlwapi.lib
DLL Api-ms-win-shcore-thread-L1-1-0.dll

另请参阅

SHGetInstanceExplorer

SetProcessReference

Windows API 集