Share via


SHGetInstanceExplorer 함수(shlobj_core.h)

호스트된 셸 확장 및 기타 구성 요소가 호스트 프로세스가 조기에 닫히지 않도록 하는 인터페이스를 검색합니다. 호스트 프로세스는 일반적으로 Windows Explorer 또는 Windows 인터넷 Explorer 다른 애플리케이션에서도 사용할 수 있습니다.

구문

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

매개 변수

[out] ppunk

형식: IUnknown**

이 함수가 성공적으로 반환되면 호스트 프로세스의 IUnknown 인터페이스 포인터의 주소가 포함됩니다. 호스트 프로세스가 종료되지 않도록 하는 데 사용되는 자유 스레드 인터페이스입니다. 함수 호출이 실패하면 이 값은 NULL로 설정됩니다.

반환 값

형식: HRESULT

이 함수가 성공하면 S_OK 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

DLL로 구현되고 Windows Explorer(Explorer.exe) 또는 인터넷 Explorer(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 포함)
라이브러리 Shell32.lib
DLL Shell32.dll(버전 4.0 이상)