次の方法で共有


SHGetInstanceExplorer 関数 (shlobj_core.h)

ホストされたシェル拡張機能やその他のコンポーネントが、ホスト プロセスが途中で終了するのを防ぐインターフェイスを取得します。 ホスト プロセスは通常、Windows エクスプローラーまたは Windows インターネット エクスプローラーですが、この関数は他のアプリケーションでも使用できます。

構文

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

パラメーター

[out] ppunk

種類: IUnknown**

この関数が正常に返されると、ホスト プロセスの IUnknown インターフェイス ポインターのアドレスが格納されます。 これは、ホスト プロセスが終了するのを防ぐために使用されるフリースレッド インターフェイスです。 関数呼び出しが失敗した場合、この値は NULL に設定 されます

戻り値

型: HRESULT

この関数が成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。

注釈

DLL として実装され、Windows エクスプローラー (Explorer.exe) やインターネット エクスプローラー (Iexplore.exe) などのホスト プロセスで実行される、シェル拡張ハンドラーなどの多くのコンポーネントがあります。 通常、ユーザーがホスト プロセスを閉じると、コンポーネントもすぐにシャットダウンされます。 このような突然の終了により、一部のコンポーネントで問題が発生する可能性があります。 たとえば、コンポーネントがバックグラウンド スレッドを使用してデータをダウンロードしたり、ユーザー インターフェイス関数を実行したりする場合、それ自体を安全にシャットダウンするために追加の時間が必要になる場合があります。

SHGetInstanceExplorer を使用すると、ホスト プロセスで実行されるコンポーネントがホスト プロセスの参照を保持できます。 SHGetInstanceExplorer は、ホストの参照カウントをインクリメントし、ホストの IUnknown インターフェイスへのポインターを返します。 その参照を保持することで、コンポーネントはホスト プロセスが途中で終了するのを防ぐことができます。 コンポーネントが必要な処理を完了したら、 (*ppunk)->Release を呼び出してホストの参照を解放し、プロセスの終了を許可する必要があります。

メモSHGetInstanceExplorer が成功した場合、コンポーネントは不要になったときにホストの参照を解放する必要があります。 それ以外の場合、プロセスに関連付けられているすべてのリソースはメモリに残ります。 *ppunk が指す IUnknown インターフェイスは、この参照を解放するためにのみ使用できます。 コンポーネントで (*ppunk)->QueryInterface を使用して他のインターフェイス ポインターを要求することはできません。
 
SHGetInstanceExplorer は、プロセス参照を設定するために以前 に SHSetInstanceExplorer を呼び出したアプリケーションから呼び出された場合にのみ成功します。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shlobj_core.h (Shlobj.h を含む)
Library Shell32.lib
[DLL] Shell32.dll (バージョン 4.0 以降)