SHGetInstanceExplorer 函式 (shlobj_core.h)

擷取介面,允許裝載的殼層延伸模組和其他元件防止其主機進程提前關閉。 主機進程通常是 Windows 檔案總管或 Windows Internet Explorer,但其他應用程式也可以使用此函式。

語法

SHSTDAPI SHGetInstanceExplorer(
  [out] IUnknown **ppunk
);

參數

[out] ppunk

類型: IUnknown**

當此函式成功傳回時,會包含主機進程的 IUnknown 介面指標位址。 這是一個自由線程介面,用來防止主機進程終止。 如果函數調用失敗,這個值會設定為 NULL

傳回值

類型: HRESULT

如果此函式成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

有數個元件,例如 Shell 擴充處理程式,這些元件會實作為 DLL,並在 Windows Explorer (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)
程式庫 Shell32.lib
Dll Shell32.dll (4.0 版或更新版本)