SHGetInstanceExplorer-Funktion (shlobj_core.h)

Ruft eine Schnittstelle ab, die es gehosteten Shell-Erweiterungen und anderen Komponenten ermöglicht, zu verhindern, dass ihr Hostprozess vorzeitig geschlossen wird. Der Hostprozess ist in der Regel Windows Explorer oder Windows Internet Explorer, aber diese Funktion kann auch von anderen Anwendungen verwendet werden.

Syntax

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

Parameter

[out] ppunk

Typ: IUnknown**

Wenn diese Funktion erfolgreich zurückgegeben wird, enthält die Adresse des IUnknown-Schnittstellenzeigers des Hostprozesses. Dies ist eine Freithreadschnittstelle, mit der verhindert wird, dass der Hostprozess beendet wird. Wenn der Funktionsaufruf fehlschlägt, wird dieser Wert auf NULL festgelegt.

Rückgabewert

Typ: HRESULT

Wenn diese Funktion erfolgreich ist, gibt sie S_OK zurück. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Es gibt eine Reihe von Komponenten, z. B. Shell-Erweiterungshandler, die als DLLs implementiert und in einem Hostprozess wie Windows Explorer (Explorer.exe) oder Internet Explorer (Iexplore.exe) ausgeführt werden. Wenn der Benutzer den Hostprozess schließt, wird die Komponente in der Regel auch sofort heruntergefahren. Eine solche abrupte Beendigung kann probleme für einige Komponenten verursachen. Wenn eine Komponente beispielsweise einen Hintergrundthread verwendet, um Daten herunterzuladen oder Benutzeroberflächenfunktionen auszuführen, benötigt sie möglicherweise zusätzliche Zeit, um sich selbst sicher herunterzufahren.

SHGetInstanceExplorer ermöglicht Es Komponenten, die in einem Hostprozess ausgeführt werden, einen Verweis auf den Hostprozess zu enthalten. SHGetInstanceExplorer erhöht die Verweisanzahl des Hosts und gibt einen Zeiger auf die IUnknown-Schnittstelle des Hosts zurück. Durch das Halten dieses Verweises kann eine Komponente verhindern, dass der Hostprozess vorzeitig geschlossen wird. Nachdem die Komponente die erforderliche Verarbeitung abgeschlossen hat, sollte sie (*ppunk)->Release aufrufen, um den Verweis des Hosts freizugeben und das Beenden des Prozesses zuzulassen.

Hinweis Wenn SHGetInstanceExplorer erfolgreich ist, muss die Komponente den Verweis des Hosts freigeben, wenn er nicht mehr benötigt wird. Andernfalls verbleiben alle dem Prozess zugeordneten Ressourcen im Arbeitsspeicher. Die IUnknown-Schnittstelle , auf die von *ppunk verwiesen wird, kann nur verwendet werden, um diese Referenz freizugeben. Komponenten können keine (*ppunk)->QueryInterface verwenden, um andere Schnittstellenzeiger anzufordern.
 
SHGetInstanceExplorer ist nur erfolgreich, wenn es von einer Anwendung aufgerufen wird, die zuvor SHSetInstanceExplorer aufgerufen hatte, um einen Prozessverweis festzulegen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shlobj_core.h (einschließlich Shlobj.h)
Bibliothek Shell32.lib
DLL Shell32.dll (Version 4.0 oder höher)