IServiceProviderImpl::QueryService

 

게시: 2016년 4월

또는 지정 된 서비스에 액세스 하 고 서비스에 대해 지정 된 인터페이스에 인터페이스 포인터를 반환 합니다.

구문

      STDMETHOD(QueryService)(
   REFGUID guidService,
   REFIID riid,
   void** ppvObject 
);

매개 변수

  • [IN]guidService
    서비스 식별자 (SID)에 대 한 포인터입니다.

  • [IN]riid
    호출자가 액세스할 수 있는 인터페이스의 식별자입니다.

  • [OUT]ppvObj
    요청 된 인터페이스에 대 한 간접 포인터입니다.

반환 값

반환 되는 HRESULT 값은 다음 중 하나입니다.

반환 값

의미

S_OK

서비스가 성공적으로 생성 또는 검색 되었습니다.

E_INVALIDARG

하나 이상의 인수가 잘못된 경우

E_OUTOFMEMORY

서비스를 만들 수 있는 충분 한 메모리가 없습니다.

E_UNEXPECTED

알 수 없는 오류가 발생했습니다.

E_NOINTERFACE

요청 된 인터페이스를 사용할 수 없습니다.이 서비스의 일부 또는 서비스에 알 수 없습니다.

설명

QueryService요청 된 인터페이스에 지정 된 서비스는 간접 포인터를 반환합니다. 호출자가 더 이상 필요 하지 않으면이 포인터 해제를 담당 합니다.

호출 하면 QueryService, 서비스 id 전달 (guidService)와 인터페이스 식별자 (riid). guidService 액세스에 사용할 서비스를 지정 및 riid 서비스의 인터페이스를 식별 합니다. 대신, 인터페이스에 대 한 간접 포인터를 받습니다.

또한 인터페이스를 구현 하는 개체의 다른 서비스에 포함 된 인터페이스를 구현할 수 있습니다. 다음을 고려하십시오.

  • 이러한 인터페이스 중 일부는 선택적 수 있습니다. 서비스 설명에 정의 된 모든 인터페이스 반드시 반환 된 모든 개체 또는 모든 서비스의 구현에 있습니다.

  • 호출을 달리 QueryInterface, 다른 서비스 식별자를 전달 하지 않습니다 반드시 의미 다른 구성 요소 개체 모델 (COM) 개체 반환 됩니다.

  • 반환 된 개체는 서비스의 정의 포함 되지 않은 추가 인터페이스에 있을 수 있습니다.

SID_SYourService, SID_SMyService 등 두 개의 서로 다른 서비스 구현 인터페이스의 공통 서비스 사이 아무 것도 있을 수 있습니다 경우에 모두 동일한 인터페이스를 사용 하는 지정할 수 있습니다. 때문에 작동 호출을 QueryService (SID_SMyService, IID_IDispatch)는 다른 개체를 반환할 수 있습니다 QueryService (SID_SYourService, IID_IDispatch). 다른 서비스 식별자를 지정 하면 개체 id 아닐 수도 있습니다.

요구 사항

헤더: atlcom.h

참고 항목

IServiceProviderImpl Class
BEGIN_SERVICE_MAP