다음을 통해 공유


IMoniker::IsRunning 메서드(objidl.h)

이 모니커로 식별된 개체가 현재 로드되고 실행 중인지 여부를 확인합니다.

구문

HRESULT IsRunning(
  [in] IBindCtx *pbc,
  [in] IMoniker *pmkToLeft,
  [in] IMoniker *pmkNewlyRunning
);

매개 변수

[in] pbc

이 바인딩 작업에 사용할 바인딩 컨텍스트의 IBindCtx 인터페이스에 대한 포인터입니다. 바인딩 컨텍스트는 바인딩 프로세스 중에 바인딩된 개체를 캐시하고, 바인딩 컨텍스트를 사용하여 모든 작업에 적용되는 매개 변수를 포함하며, 모니커 구현이 해당 환경에 대한 정보를 검색해야 하는 수단을 제공합니다.

[in] pmkToLeft

이 모니커가 복합의 일부인 경우 이 모니커의 왼쪽에 있는 모니커의 IMoniker 인터페이스에 대한 포인터입니다. 이 매개 변수는 주로 모니커 구현자가 복합 모니커의 다양한 구성 요소 간의 협력을 가능하게 하는 데 사용됩니다. 모니커 클라이언트는 일반적으로 NULL을 전달할 수 있습니다.

[in] pmkNewlyRunning

가장 최근에 ROT(실행 중인 개체 테이블)에 추가된 모니커의 IMoniker 인터페이스에 대한 포인터입니다. NULL일 수 있습니다. NULL이 아닌 경우 구현은 pmkNewlyRunning 매개 변수에서 IMoniker::IsEqual을 호출하여 현재 모니커를 전달하는 결과를 반환할 수 있습니다. 이 매개 변수는 ROT를 검색하는 것보다 더 효율적인 IsRunning 구현을 사용하도록 설정하기 위한 것이지만 구현은 해를 끼치지 않고 pmkNewlyRunning을 무시하도록 선택할 수 있습니다.

반환 값

이 메서드는 E_UNEXPECTED 표준 반환 값과 다음 값을 반환할 수 있습니다.

반환 코드 Description
S_OK
모니커가 실행 중입니다.
S_FALSE
모니커가 실행되고 있지 않습니다.

설명

발신자에 대한 참고 사항

모니커로 식별된 개체에서 서비스를 요청할 때 속도가 중요한 경우 개체가 이미 실행 중인 경우에만 이러한 서비스를 원할 수 있습니다(개체를 실행 상태로 로드하는 데 시간이 오래 걸릴 수 있기 때문). 이러한 상황에서 는 IsRunning을 호출하여 개체가 실행 중인지 여부를 확인해야 합니다.

연결된 개체 내에 저장된 모니커의 경우 IsRunning 은 주로 IOleLink::BindIfRunning의 기본 처리기 구현에 의해 호출됩니다.

구현자에 대한 참고 사항

ROT에 대한 포인터를 얻으려면 구현에서 pbc 매개 변수에서 IBindCtx::GetRunningObjectTable을 호출해야 합니다. 그런 다음 구현에서 IRunningObjectTable::IsRunning을 호출하여 모니커로 식별된 개체가 실행 중인지 여부를 확인할 수 있습니다. 모니커로 식별된 개체는 처음 실행되기 시작했을 때 ROT에 등록되어 있어야 합니다.

구현별 참고 사항

구현 참고
안티 모니커 이 메서드는 ROT를 확인하여 개체가 실행 중인지 확인합니다.
클래스 모니커 이 메서드는 E_NOTIMPL 반환합니다.
파일 모니커 pmkNewlyRunningNULL이 아닌 경우 이 모니커가 이 모니커와 같으면 이 메서드는 TRUE를 반환합니다. 그렇지 않으면 메서드는 ROT에 이 모니커가 실행 중인지 묻습니다. 메서드는 pmkToLeft를 무시합니다.
제네릭 복합 모니커 pmkToLeftNULL이 아닌 경우 이 메서드는 pmkToLeft를 이 모니커로 구성하고 결과에서 IsRunning을 호출합니다.

pmkToLeftNULL이면 pmkNewlyRunning이 NULL이 아니고 이 모니커와 같으면 이 메서드는 TRUE를 반환합니다.

pmkToLeftpmkNewlyRunning이 모두 NULL인 경우 이 메서드는 ROT를 확인하여 모니커가 실행 중인지 확인합니다. 이 경우 메서드는 S_OK 반환합니다. 그렇지 않으면 복합의 가장 오른쪽 구성 요소에서 IsRunning을 재귀적으로 호출하고 나머지 복합을 해당 호출에 대한 pmkToLeft 매개 변수로 전달합니다. 이는 모니커가 실행 중으로 등록되지 않은 의사 개체를 식별하는 경우를 처리합니다. 자세한 내용은 항목 모니커 구현을 참조하세요.

항목 모니커 pmkToLeft가 NULL이면 pmkNewlyRunningNULL이 아니고 이 모니커와 같으면 이 메서드는 TRUE를 반환합니다. 그렇지 않으면 메서드는 ROT를 확인하여 이 모니커가 실행 중인지 확인합니다.

pmkToLeft가 NULL이 아닌 경우 메서드는 pmkToLeft 매개 변수에서 IMoniker::BindToObject를 호출하고 IOleItemContainer 인터페이스 포인터를 요청합니다. 그런 다음 메서드는 IOleItemContainer::IsRunning을 호출하여 이 모니커에 포함된 문자열을 전달합니다.

OBJREF 모니커 OBJREF 모니커가 실행 중인 개체 instance 나타내므로 이 메서드는 최근 호출이 실패하여 개체가 더 이상 실행되고 있지 않은 경우 TRUE를 반환합니다. 메서드는 pmkToLeft를 무시합니다.
포인터 모니커 포인터 모니커로 식별되는 개체는 항상 실행 중이어야 하므로 이 메서드는 항상 S_OK 반환합니다.
URL 모니커 이 모니커가 현재 실행 중인 경우 S_OK 반환합니다. 그렇지 않으면 S_FALSE를 반환합니다. URL 모니커는 먼저 pmkNewlyRunning-IsEqual>을 호출하여 새로 실행 중인 모니커와 같은지 여부를 확인하여 실행 중인지 여부를 결정합니다. 일반적으로 이 호출은 저렴한 작업입니다. 이 작업이 성공하지 못하면 모니커가 다음에 전달된 바인딩 컨텍스트의 ROT에 등록되어 있는지 확인합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 objidl.h

추가 정보

Imoniker

IOleLink::BindIfRunning

IRunningObjectTable::IsRunning